红外遥控通信原理

在实际的通信领域,发出来的信号一般有较宽的频谱,而且都是在比较低的频率段分布大量的能量,所以称之为基带信号,这种信号是不适合直接在信道中传输的。为便于传输、提高抗干扰能力和有效的利用带宽,通常需要将信号调制到适合信道和噪声特性的频率范围内进行传输,这就叫做信号调制。在通信系统的接收端要对接收到的信号进行解调,恢复出原来的基带信号。这部分通信原理的内容,大家了解一下即可。
我们平时用到的红外遥控器里的红外通信,通常是使用38k左右的载波进行调制的,下面我把原理大概给大家介绍一下,了解一下,先看发送部分原理。
调制:就是用待传送信号去控制某个高频信号的幅度、相位、频率等参量变化的过程,即用一个信号去装载另一个信号。比如我们的红外遥控信号要发送的时候,先经过38k调制,如图1所示。
图1红外信号调制
原始信号就是我们要发送的一个数据“0”位或者一位数据“1”位,而所谓38k载波就是频率为38k的方波信号,调制后信号就是最终我们发射出去的波形。我们使用原始信号来控制38k载波,当信号是数据“0”的时候,38k载波毫无保留的全部发送出去,当信号是数据“1”的时候,不发送任何载波信号。
那在原理上,我们如何从电路的角度去实现这个功能呢?如图2所示。
图2红外发射原理图
38k载波,我们可以用455k晶振,经过12分频得到37.91k,也可以由时基电路ne555来产生,或者使用单片机的pwm来产生。当信号输出引脚输出高电平时,q2截止,不管38k载波信号如何控制q1,右侧的竖向支路都不会导通,红外管l1不会发送任何信息。当信号输出是低电平的时候,那么38k载波就会通过q1释放出来,在l1上产生38k的载波信号。这里要说明的是,大多数家电遥控器的38k的占空比是1/3,也有1/2的,但是相对少一些。
正常的通信来讲,接收端要首先对信号通过监测、放大、滤波、解调等等一系列电路处理,然后输出基带信号。但是红外通信的一体化接收头hs0038b,已经把这些电路全部集成到一起了,我们只需要把这个电路接上去,就可以直接输出我们所要的基带信号了,如图3所示。
图3红外接收原理图
由于红外接收头内部放大器的增益很大,很容易引起干扰,因此在接收头供电引脚上必须加上滤波电容,官方手册给的值是4.7uf,我们这里直接用的10uf,手册里还要求在供电引脚和电源之间串联100欧的电阻,进一步降低干扰。
图3所示的电路,用来接收图16-5电路发送出来的波形,当hs0038监测到有38k的红外信号时,就会在out引脚输出低电平,当没有38k的时候,out引脚就会输出高电平。那我们把out引脚接到单片机的io口上,通过编程,就可以获取红外通信发过来的数据了。
大家想想,out引脚输出的数据是不是又恢复成为基带信号数据了呢?那我们单片机在接收这个基带信号数据的时候,如何判断接收到的是什么数据,应该遵循什么协议呢?像我们前边学到的uart、i2c、spi等通信协议都是基带通信的通信协议,而红外的38k仅仅是对基带信号进行调制解调,让信号更适合在信号中传输。
由于我们的红外调制信号是半双工的,而且同时空间只能允许一个信号源,所以我们红外的基带信号不适合在i2c或者spi通信协议中进行的,我们前边提到过uart虽然是2条线,但是通信的时候,实际上一条线即可,所以红外可以在uart中进行通信。当然,这个通信也不是没有限制的,比如在hs0038b的数据手册中标明,要想让hs0038b识别到38k的红外信号,那么这个38k的载波必须要大于10个周期,这就限定了我们红外通信的基带信号的比特率必须不能高于3800,那如果把串口输出的信号直接用38k调制的话,波特率也就不能高于3800。