红外遥控制作详解
摘要:文章从实际应用角度出发,详细分析了红外遥控器的编码原理,硬件电路搭建,并给出了遥控器信号发送与接收的程序流程。
引言:红外遥控自1974年发明以来,因其体积小、重量轻、价格低廉、使用灵活、功耗低及抗干扰能力强等特点得到很广泛的应用,在日常生活中随处可见,如红外线鼠标,红外线打印机,红外线键盘等等。
本文将以红外遥控电路为例,详细介绍红外遥控的制作流程。
一、原理介绍
红外遥控系统由发射和接收两大部分组成,红外发射管将电能转化为光能,接收管感应红外光,将光能转化为电信号。
其通信的机理是利用单片机控制NE555发送脉宽调制的串行码,以脉宽为1ms、间隔0.5ms、周期为1.5ms的组合表示二进制的“0”;以脉宽为3ms、间隔0.5ms、周期为3.5ms的组合表示二进制的“1”,通过一个9ms的起始码(低电平),和一个5ms结果码(高电平)这个码值使程序能够判断是否可以开始接收数据。
二、硬件解析
整体硬件电路见附录。
下面我们详细分析一下其中几个重点模块。
1.NE555调制模块
如果仅控制芯片的控制信号来驱动红外发射管的红外线发射,是不能让红外接收头收到信号的。
接收头所能判断的信号为一定频率信号。
大多数红外接收头能接收的中心频率为38kHz,但也有一些接收头中心频率为36kHz、37kHz、39kHz、40kHz,如果发射频率与接收频率相差1kHz,大多可以正常遥控,相差2kHz以上则会出现遥控不灵现象。
而单片机的信号频率没有这
么大,因此,我们要对控制芯
片输出的控制信号进行调制。
这里我们所介绍的调制电路
以NE555为中心,加以一
定的外围电路,构成多谐振荡
器。
先来看一个NE555的
经典多谐振荡电路,如图1。
它的原理是把施密特触发器
的反相输出端经RC积分电路
接回到它的输入端,构成多谐
振荡器。
即只要将NE555定时器的TH和TR连在一起拼成施密特触发器,然后再将V o经RC积分电路接回输入端就可以了。
电容C1电压波型图如图2。
由波形图可以求出电容C1的充电时间T1和放电时间T2分别为:
T1R1R2Cln V cc V t
V cc V t
R1R2Cln2
T2R2C 0V t
0V t
R2Cln2
因此电路的振荡周期为:
T T1T2R12R2Cln2
在这里,我们应当注意到,由图1的电路所得到的输出脉冲的占
空比为:
q T1
T
R1R2
R12R2
占空比q恒大于50%。
原因
主要是因为电容C1的充电
和放电路径不同,充电路径
中的电阻和放电路径中的电
阻始终不能达到平衡。
知道
了这一原因,我们就可以对
该电路稍作改进。
改进后的
电路如图3所示:二极管D1和D2改变了电容C1的充电电流和放电电流流经的路径,充电电流只经R1,放电电流只经R2。
因此电容C1的
充电时间和放电时间分别变为:
T1R1Cln V cc V t
V cc V t
R1Cln2
T2R2Cln 0V t
0V t
R2Cln2
占空比为
q T1
T
R1
R1R2
这时,占空比可以达到任何
我们想要的值。
在这里我们
取R1R2R
振荡周期为:
T T1T22RCln2
本电路中,红外接收管的载
波频率为f=38KHz,取电容
为0.1uF,代入上述公式中可
以计算出R=190欧姆。
2.红外发射驱动电路模块
红外发射的驱动电路可用图4电路,但这曾加了NE555的负担,红外发射的功率比较低,发射的距离不是很理想。
图5很好的解决了这个问题,通过一个8050NPN型三极管,作为开关作用,驱动发射管在电源和地之间的导通状态来控制红外发射
与否,这样提高的红外发射的功率,也减轻了NE555的负载。
市场上一般所用的红外发射管的规格为工作电压 1.5-1.35(V),工作电流50-10(mA)。
这里取工作电压1.4V,工作电流36mA为例作一个粗略的计算。
R=(5-1.4)/0.036=100欧姆。
这种计算方式在电流不是太小
的情况下是可以用的。
由图6
可知二极管的伏安特性曲线为
非线性,在不同电流下这个稳
压电压可能不同。
理论上,我
们应当根据图6的伏安特性曲
线,由下式算得正确值:
R E c U F
I F
E c:电源电压
U F:I F值下的正向电压
3.红外接收电路模块
在程序中我们定义外部中断为边沿触发方式,下降沿有效。
不接收信号时,中断口P3.2的电平为高电平状态。
而发射头在没有信号时是一直处于发射状态的,使得接收头的电平一直处于
低电平,这正好与中断口的判断相反。
也
就是说我们所需要做的工作是把接收头的
电平取反。
当然,我们不需要特意去买一
个非门芯片,原理很简单,只要让接收头
的输出端控制三极管的B极,中断口接三
极管C极(这里以NPN型为例)上拉电
阻端,就可达到目的了。
三、软件流程
红外发射通过单片机的P2.7口控制NE555芯片的复位端,来控制555输出端调制后的38kHZ信号的输出与否,形成载波,以控制红外发射头的发射。
其程序设计流程图下图所示。
首先对
后面要用到的寄存器设初值,开中断允
许位,然后等待按键按下。
延时1ms对
按键动作的二次判断可以防止第一次检
测到的信号为干扰信号。
另外,延时还
可以起到反弹跳的效果。
当第二次判断
有键按下则判定按键动作有效,开始扫
描按键,并存储相应键号。
然后发送起
始码和结果码。
接着把20H单元里的数
值带进位位左移,判断进位标志位CY
的电平,当C=1时,调用SEND1子程
序,发送3ms的高电平和0.5ms的低电
平,当C=0时,调用SEND0子程序,
发送1ms的高电平和0.5ms的低电平,
每发完一位都对C进行清零。
如此循环移位八次,就达到了发送的效果。
本次使用的接收头为一体化接收头,它本身可以对接收信号进行放大、解调等。
接收程序设计流程下图所示,首先在程序开始时对其设初值,开中断,这里外部中断0采用的是边沿触发方式,下降沿有效。
定时器0采用工作模式1,为16位计数,设定初值为FF9BH,使得100us产生一次中断让R2自增1,同时等待外部中断,当外部中断到来时,首先判断此时的R2是否在130到150之间,如果不是,则说明这个信号不是
起始码,重新等待。
如果在这个
范围之内,则说明接收到的是起
始码,接下来产生的的八次外部
中断,要依次将此时的R2值放
到20H到27H单元中去。
下面开
始解码,判断20H到27H单元中
的值是在0到25之间还是在25
到45之间,如果在0到25之间,
则让R4与FEH,再左移一位,如
果在25到45之间,则让R4或
01H,再左移一位,如此循环八次。
当八次循环结束,此时R4的值
就为发射管发出的键号值,最后
让R4的值在P2口显示出来。