接手关于红外的一个小项目,对方要求很简单:两个按钮通过红外控制两个继电器开关,
距离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次才被认为是 一次按键事件,否则重新计数。这样的按键去抖动才是合理的。
改进后,不再有误动作。
(睡觉了,明天补齐。)
本文记录了一个红外遥控项目的全过程,从最初的设计到最终的调试优化,包括发射与接收电路的改进、按键抖动处理等关键步骤。
7439

被折叠的 条评论
为什么被折叠?



