我们知道,在红外通信中(例如电视机、电风扇、DVD等家电的遥控器),其载波频率通常为38KHz。也有一些系统使用32KHz,36KHz,40KHz,56KHz等载波频率,但是比较少见。我们可以用T0或T1脚产生38KHz的波特率,然后把串口TXD送出的信号也叠加到上面(调制),这样就形成线外信号的载波传输,调制后再通过红外发光二极管发送出去。接收则使用3端红外接收模块。红外接收模块的载波频率固定为38KHz,集成了红外线的接收、放大、解调等功能,解调后的数据直接输入UART的RXD引脚。通信的波特率设置为2400bps(38KHz的载波频率不适于更高的波特率)。
为了避免发射时造成对本机的干扰,我们采用了半双工的通信方式。所谓半双工通信,指的是主机与从机可以进行双向通信,但是不能同时进行,在同一时间内,要么是主机发射,从机接收;要么是从机发射,主机接收。事实上,一般红外线接收模块的接收载波中心频率虽然是38KHz,但其接收频率实际上是非常宽的,从 30KHz到60KHz它都可以正确接收和解调。所以主机和从机使用不同的载波频率以实现全双工通信也是比较困难的,除非使用选频特性比较好的红外线接收电路。在红外线传输过程中采用的是负逻辑,即有红外线表示逻辑0,无红外线表示逻辑1。而红外接收模块平时为高电平,接收到红外信号就变为低电平。
如何增加传送距离呢?有两个方法:其中一个方法是采用高灵敏度的红外接收电路,但是其成本比较高,且比较容易受到干扰。另一个方法是提高发射功率(指峰值功率,不一定需要提高平均功率),这可以通过减小连接到发射器的电阻R来实现,通常可以减小到10Ω。但是需要注意的是,在这种情况下,为了降低功耗和对其他红外设备的干扰,红外线载波的占空比需要降低。一般选择30%左右的占空比,,也就是DATCLK的高电平时间应为18uS左右,而低电平时间应为 8uS左右(38KHz载波频率)
二. PC红外接收原理
1. RS232标准简介
现在的PC中,一般已经集成了红外通信端口,但由于其通信协议比较复杂,与单片机接口不便。为简便起见,我们采用在PC的COM口(RS232端口)上扩展一个红外接收电路来实现。在此,首先对RS232标准作一个简单介绍。
RS232是EIA(电子工业联合会)制定的一个串行通信推荐标准,用于DTE与DCE的连接(典型的DTE是PC,典型的DCE是调制解调器),有效传输距离15米,如果采用4~20mA的电流环则可达到1公里以上的通信距离。RS232中,共规定了25条信号线(包括数据线、控制线、状态线等),但是在实际应用中不一定要用到全部的信号线。在早期的PC中,通常配置有一个25针的串行口和一个9针的串行口;而现在生产的PC中,两个串行口一律采用9针的DB9插座。
2. 红外接收扩展电路
这里我们认为DTE是PC,那么就可以从表1中看到,PC的输出脚有3个:TXD、DRT和RTS。TXD是串行数据发送端口,波特率从110bps到 115200bps(需硬件支持)。DTE用DTR以告诉DCE已经准备好接收数据,并用RTS向DCE请求发送数据,这两个信号主要用于硬件流量控制。在红外接收扩展电路中,不需要进行流量控制,而是利用DTR和RTS为接收电路提供电源。我们知道,标准的RS232电平是负逻辑:+3V~+15V表示逻辑0;-3V~-15V表示逻辑1。这样,只要使能DTR和RTS,这两个引脚就可以输出+15V左右的电平,从而给红外接收电路供电。
上图中,D1、D2和D4起隔离作用,R1主要用来保护PC串口,C1和C2用来滤波,U1是三端稳压器,为红外接收模块提供+5V工作电源。U2是三端集成红外接收模块,一般接收中心频率为38KHz,可以完成从红外接收、滤波到解调的全部过程。LED作为指示灯,当接收到红外信号时,LED会闪亮。此电路的关键之处在于DTR、RTS和TXD三个引脚的接法:DTR和RTS为电源供应脚,可提供+15V左右的电源,前提是需要在PC监控程序中使能。 TXD引脚为接收提供负电源。TXD脚是数据发送脚,为什么可以提供负电源呢?这正是本电路的巧妙之所在。我们知道,RS232协议标准中,当不发送数据时,TXD脚输出低电平,即-15V左右。在红外接收扩展电路中,只具有红外接收功能,而无发送功能,因此正好可以利用TXD脚为接收提供低电平。当没有接收到红外信号时,红外接收模块的1脚输出高电平,三极管Q1截止,TXD通过D4把RXD脚下拉到低电平;而当接收到红外信号时,红外接收模块输出低电平,三极管Q1导通,这时RXD脚变为高电平。