基于软件载波的学习型遥控器的设计与实现
扫描二维码
随时随地手机看文章
0 引 言
红外线遥控是目前使用最广泛的一种通信和遥控方式,由于其具有结构简单、体积小、功耗低、功能强、成本低等特点,因而广泛应用于彩电、空调机、CD/ VCD、录像机家用电器设备及其工业控制中。随着现在人们生活中家电日益增加的需要,使用红外遥控器也越来越频繁。因其各种红外遥控器编码格式不同[1 ] ,使得各种红外遥控器不能兼容。经常需要更换遥控器,这也给人们生活带来了不便。
目前国内学习型遥控器大多采用复制遥控器红外波形达到学习目的,其方法简单,实现起来较方便。但其采用专用遥控集成的芯片,导致设计复杂,成本高,并且遥控器的红外信号形成都是采用红外线遥控发射芯片产生,其集成度高,但价格昂贵。而红外遥控器离不开红外线接收头。
在此介绍一种基于以A T89S52 为核心的学习型红外遥控器,通过测量红外一体化接收头输出信号,并原样地记录其输出脉冲宽度[ 2 ] ,然后保存在E2 PROM ,最后利用单片定时器中断产生38 kHz 载波信号,以软件代替了硬件,节约了资源。该学习型红外遥控器能成功地学习各种红外遥控设备的编码,并通过38 kHz 载波发送学习到的记忆信号。实现了对各种各样红外遥控的学习,从而变成了真正的自学习遥控器。
1 学习型红外遥控器系统
1. 1 学习型红外遥控器的原理
从家用万能学习型红外遥控一般原理出发,其可以分为2 类:固定码式学习遥控器和波形拷贝式学习遥控器[3 ] .前者,主要通过收集各种不同种类的遥控器信号,然后分而治之。这种学习型遥控器对硬件要求相对简单,控制器的工作频率不高,存储容量大,其缺点是对未知遥控器无效。后者,主要是把原始遥控器所发出的信号进行完全拷贝,而不管遥控器是什么格式,进行适当的压缩后,存储在ROM 存储器中,当发射时,只需将储存器中读出的遥控编码,还原成原始信号,便完成了学习功能。此学习型遥控器对MCU 的主频要求高,RAM 要求大,其优点是对任何一种红外遥控器可以进行学习。下面主要以第二种方法进行设计。
1. 2 学习型红外遥控器基本硬件组成
学习型红外遥控器由单片机、红外发射电路、红外一体化接收头、E2 PROM 存储电路,矩阵键盘及L ED指示灯构成[4 ] ,如图1 所示。单片机A T89S52 构成红外遥控的处理器,其数据存储器RAM(258 B) 用来存储学习过程中编码信号的脉冲宽度;红外发射电路:用遥控脉冲信号调制38 kHz 方波,经过三极管放大后,驱动红外发光二极管,其中38 kHz 载波由A T89S52 定时器T0 产生。红外一体化接收头:红外接收头输出的信号经过检波、整形、放大、解调38 kHz 载波信号,其输出信号为TTL 高低电平。外接E2 PROM 存储器:存放学习到的高低电平信号的脉宽值。
图1学习型红外遥控器基本硬件组成
1. 3 系统软件设计
学习型遥控器的设计性能及实现与其软件设计编写具有密切的关系,特别是码宽计数的采集周期及计数器采用的位数都关系到能否精确采集到遥控编码信号。编码宽度计数的采样周期在编程中须经过多次实验测试才能决定。该设计读码采样周期大约为12μs.
读遥控编码的计数器采用16 位计数器,采样时间在0~786. 432 ms 之间。其值保存在设定的数据存储器中,然后写入到外部E2 PROM 存储器中,发射过程再从外部的E2 PROM 存储器读出,通过38 kHz 载波发送编码信号。
2 红外遥控编码学习与软件载波的发射
2. 1 红外遥控信号编码结构分析
红外遥控器发射的遥控编码脉冲由起始码、系统码、功能码、功能码的反码组成[5 ] ,如图2 所示。起始码是1 个遥控码的起始部分,由1 个高电平和1 个低电平组成, 作为接收数据的准备脉冲。这些编码是经38 kHz的载波脉冲调制后发射出去。
图2遥控器编码结构
通过分析大量不同类型的红外遥控码波形,遥控码的数据帧间歇宽度均为10 ms 以上,起始码的高电平均为5 ms 以上,通常为9 ms 左右。编码位在10 μs~5 ms之间,在设计中,只考虑遥控器发射信号的高低电平宽度,不考虑其编码方式,以简化设计[ 6 ] .
2. 2 红外遥控信号编码学习软件设计
一般红外遥控器的的红外信号都是通过38 ~40 kHz (周期大约为26. 3μs) 进行载波调制而成的,经过载波后信号的脉冲宽度与单片机的指令周期时间(12 MHz晶振的指令周期为1μs) 数量级差不多。如果直接记录载波信号的脉冲宽度,这样误差很大,必须对载波信号进行解调后,方可记录此时遥控编码信号的脉冲宽度。
在设计中采用计数器对信号高低电平计时的方法来采集数据并保存。当系统识别到起始码的低电平时,系统启动设计的采集信号对低电平进行采集,同时计数器开始计数,当起始码的低电平结束时,并保存计数器此时的值,记录下起始码的低电平信号脉冲宽度值。然后依次保存采集到的编码信号脉冲宽度值,如果采集到编码信号位数大于设定值M (程序中设定值) ,就认为编码采集已经结束,学习子程序结束,如图3 所示:
图3红外信号的自学习
2. 3 红外遥控信号的发射
由软件实现遥控信号的载波合成,用定时中断0 产生38 kHz 的载波信号,用学习到的遥控编码信号的低电平去控制载波的输出,此时定时器0 定时长度由相应的遥控信号低电平宽度计数值确定,即如果需发射的遥控信号为高电平时,关定时中断0 ;如果为低电平,则开定时中断0 .输出38 kHz 载波信号到红外发射控制脚(P3. 7) ,从而实现遥控信号的脉宽调制发射。不考虑红外信号的编码方式,只采集其高低电平宽度的方法,如图4 所示。发射时并不需要用到38 kHz 载波电路,而是采用以单片机的定时器T0 产生载波,程序代码[7 ]如下所示:
TMOD = 0X02 ;/ / 定时器0 工作于方式2
TH0 = 0XF3 ;
/ / 定时器0 定时26. 3μs ,以产生38 kHz 载波
TL0 = 0XF3 ;
EA = 1 ;/ / 开总中断允许
ET0 = 1 ;/ / 开定时器1 中断允许
TR0 = 1 ;/ / 开定时器0 ,产生38 kHz 载波
void timer0 (void) interrupt 1
{remoteout = ~remoteout ;}
/ / 遥控信号38 kHz 载波输出
用学习到的脉冲高低电平(0 和1 信号) 来控制38 kHz的输出,然后经三极管放大信号,编码信号经二极管以38 kHz 载波形式发射,这样以软件替代硬件,使电路简化,有效实现了红外遥控信号的接收和转发。如图5 所示。
图4红外信号的发射
图538 kHz 载波的软件实现
2. 4 红外编码脉冲
学习型红外遥控器对微处理器的频率要求比较高,选择单片机的晶振频率12 MHz ,其频率大小直接影响到遥控器的学习效果。通过系统设计的遥控器学习效果优良,能学习到的各种红外脉冲。
图6 以Ht6221 标准红外遥控器为例,其波形为"1"键的红外编码脉冲。图6 (a) 的编码脉冲是学习型红外遥控器学习到的,图6 (b) 的编码脉冲是Ht6221 标准红外遥控器发射出的,学习到的"1"号键完全能取代原始的遥控器的"1"号键。遥控器发射电路中的38 kHz载波用单片机中的定时器产生,这样节约了硬件资源,简化了电路。
图6红外编码脉冲
3 结 语
该次设计中红外遥控器,可以准确采集到红外编码脉冲信号,并将原始的红外编码信号保存,发送,能成功学习各种不同家用红外遥控器,对各种家用红外遥控器进行控制,解决了家庭用户众多遥控器的烦劳。
更多红外线接收头供应信息请点击http://www.dzsc.com/product/file447.html