不再随意

本文记录了一个红外遥控项目的全过程,从最初的设计到最终的调试优化,包括发射与接收电路的改进、按键抖动处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         接手关于红外的一个小项目,对方要求很简单:两个按钮通过红外控制两个继电器开关,

距离5m,现场已有直流24V供电,功耗无要求。但是,它却足足浪费了三周多的时间,

其中来回奔波痛苦不堪(现场与公司之间单程近两个小时),欲哭无泪!现在总算完成,报告已交,

最大的感受:精益求精,不再随意!

 

         发射部分用的是5mm发射管和HS0038接收头,其余器件都很普通,一开始胸有成竹,很快搭出

了一个实验板,最初的原理图如下:(最初的不见了,以下凭记忆画的)

 

发射部分:

 

 

接收部分:

 

 

        当时的思路:

                        (1)开始看MCU手册,考虑P1口内部有上拉,故两个按键没有加

                                  上拉。(后来证明,这显然是很不稳定的)

                        (2)38K波形由定时器0的时钟输出产生(P34口有此功能);当时

                                  为了产生更好一点儿的波形,采用了PNP三极管,并带了R4电阻;

                       (3)HS0038感应到38K红外时会产生低电平,也是就说,发射部分也

                                  要必须是低才输出脉冲,不能认为收到信号后反相即可。

                                因为这里是通过串口发送的,起始位和停止位都有明确的高低逻辑。

 

       相信高手们一眼会看出很多毛病,请允许我由自己的经历将它们写出来。调试开始,

由于原理部分仔细思考过,没出现什么明显的错误,实验也算基本成功,在5m左右的

距离能在90%的机率能收到正确的信号。

 

      后来,经理说,如果这是在学校,你就算100分了,而接下来的痛苦让我深刻体会到

了学校与社会的差别。

 

      先说发送部分的:

      到现场一试便傻眼!之前的5m到那儿只有不到2m的距离,费了一阵子功夫才发现是

现场的光线太强,后来关掉白炽灯后,感应距离明显加大了不少。但人家不可能关了灯作

业来适应你这破玩意儿,返工!

       (1)用示波器发现38K调制波形太差,由MCU硬件产生的波形实在太坏,改用定时

                  器0 的中断控制IO口来产生38K方波,结果距离增加了大约2m左右。

        (2)考虑增大发射功率,(呀,图画错了,之前发射部分的限流电阻R5不是100ohm,

                  而是470ohm,这里纠正下),减小限流电阻,初步估计发射管压降1V,

                 三极管压降0.3V,这样,R5上的电压为3.7V,但是,MCU芯片手册上规定IO输入

                 电流不要超过20mA,也就是说,R5最低也要在200ohm以上。 换上200ohm的电阻后,

                距离增加了2m左右。

       (3)降低UART的发送波特率,将之前的2400bps调到了600bps,不过,没有明显的距离增加。

 

          不过,将以上全部改进后,在实验室可靠距离能达到9m以上!精益求精才能积少成多、

          量变而质变。有点欣喜了,心里还对自己说,这次不行我就...

 

        再次信心满满地到达现场,实践是唯一标准,再次让我抓狂,只有4m多一点,而且还不能

保证100%的收到,横向的范围也不够,客户都有点烦了,又憋了一肚子郁闷回去了。拿起示波器,

再看各点对地的波形,发现传输信号的低电平始终不能低到0V,在0.1V-0.2V左右跳动。这时才明

 白,两信号不能这样叠加,而且,发射功率不能调得比较大,于是,改进原理图,发射部分如下:

        

              实现的功能是一样的,但是这样信号的幅度可以增大一些,而且,发射功率不再受MCU影响!

              (1)按新图所示,将R5改为100ohm,发射功率调到30mA。

               (2)38K调制波并不为标准的38K,定时器0为8位自动重载模式,初值为12或13时,频率为

                       38.4K或35.4K,定时精度不够;为了得到更细的精度,不再将晶振时钟12分频而直接驱

                       动定时器,这样,当初值为145或146时,频率为38.1K或37.9K,基本上达到了现有条件

                       下的最好情况了。

 

              这样,作上述改进后,在实验室下的可靠距离达15m。

 

             去现场前还有些担心,于是,将接收头放在了一个防水盒的内部,并开了一扇小窗,以避免暴露

在天花板的白炽灯直射下。去了现场后,紧张的心终于松了一口气,可靠距离能达7m左右,横向距离

也在2m以上,终于告一段落!

 

            然而,这不是结束,只是另一个开始,接收部分虽不复杂,但再次让马虎的我摔了几个大大的跟头。

 

            首先是不能正常地驱动继电器,必须要推挽输出高电平才能闭合继电器,后来心里犹豫了一阵子,

还是换上了一个ULN2803,如下图:

 

 

这样效果改善了许多。

 

接着要说说按键抖动,以前一直以为,按键去抖只是为了防止一次按下而触发多次按键事件,所以只需要

检测到按键开始延时100ms再处理就行了,不再关心其间出现了多少次抖动,但这想法明显错的,现实狠

狠地给我上了一课。现场没有实验室的环境那样理想,有这样的干扰,虽不频繁,却很致命——直接导致

无人干预的误动作!

 

(1)、上拉电阻不可少,芯片手册上虽说有上拉电阻,但是具体为多少,不得而知,可以肯定的是,至少

               是上兆的,这样的上拉很容易被干扰!于是在按键处补了两个5.1K的上拉。

(2)、按键去抖不能只在首尾间隔100ms检测一下就行了,要想得到稳定可靠的按键事件,必须每隔1ms

              的时间扫描并计数,到达100次才被认为是 一次按键事件,否则重新计数。这样的按键去抖动才是合理的。

 

改进后,不再有误动作。

 

(睡觉了,明天补齐。)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值