APP下载

可识别载波的红外遥控自学习模块研究与设计*

2013-12-07程小辉康燕萍

电子技术应用 2013年2期
关键词:遥控载波红外

程小辉,康燕萍

(桂林理工大学 信息科学与工程学院,广西 桂林 541004)

红外遥控器是人们日常生活中常见的一种遥控设备,可以用来遥控电视机、DVD、空调、风扇等生活电器。但是红外遥控的传输协议没有统一的标准,不同的生产厂家设计的遥控也各有异同,主要表现在载波频率的不同和红外信号传输协议的不同,常用的红外遥控器中载波频率主要有38 kHz和40 kHz。常用的红外遥控信号传输协议有 NEC协议、Philips协议、ITT协议、Nokia NRC协议等。

目前的自学习红外遥控器,只能针对单一的载波频率进行学习,而不能识别不同的载波频率的遥控信号。这样的自学习遥控器存在一定的局限性,学习遥控的数量也相对较少。

1 模块硬件设计

1.1 硬件结构设计

本模块硬件结构设计基于STC单片机,芯片型号为STC12C5410AD。硬件结构框图如图1所示。

1.2 单片机芯片介绍

选择单片机型号为STC12C5410AD。32脚LQFP封装,CPU 最大频率 35 MHz,10 KB Flash,512 B RAM,共 6个16位普通定时器,具有UART和SPI接口。该芯片是本模块的核心部件,主要作用是计算红外载波频率和信号波形测量分析。

E2PROM存储芯片选择24C16,具有16 KB存储空间,使用I2C总线通信。芯片的主要作用是存储复制后的红外二进制编码波形。

1.3 单片机最小系统

STC12C5410AD支持的最大外部时钟频率为35 MHz,具有单时钟机器周期,运行速度是普通51单片机速度的12倍。最小系统原理图如图2所示。

1.4 红外接收及发射电路

红外接收电路使用传统的红外接收管,接收信号经三极管偏置电路放大。红外发射电路波形信号从CLK引脚输入,CS为门控端,信号经三极管放大后驱动红外发射管,如图3所示。

1.5 E2PROM存储电路

外部存储器使用24C16芯片,通信接口使用模拟I2C总线,24C16的SDA引脚和SCL引脚分别与单片机的P3.7和P1.0相连,并用10 kΩ电阻上拉。

2 模块软件设计

本红外自学习模块主要工作模式分为:自学习模式和红外遥控模式。自学习模式是学习红外遥控的载波频率和波形复制。工作步骤分为:载波频率检测、红外波形检测、检测数据分析和数据储存。软件总体设计流程如图4所示。

2.1 载波频率检测

因为不同的红外遥控使用的载波频率有所不同,所以载波频率的检测是模块主要功能之一。利用外部触发中断和定时器联合使用来实现检测载波频率。

理论计算:假如红外信号的载波频率为40 kHz。则周期T=25μs。单片机时钟频率为 24 MHz,定时器计数周期为1/24 MHz=0.041 7μs。假如在载波的一个下降沿启动定时器计数,到下一个下降沿停止计时,并读取定时器的计数值,这个定时器的理论计数值为 25μs/0.041 7μs=600。

为了减小定时器计数值转换成时间或频率的计算误差,本设计方案中存储的频率是定时器的计数值而并非实际的载波频率。载波频率检测方法如下:

(1)将单片机的定时器0配置为16位计数器,计数时钟不进行12分频;外部中断1配置为下降沿触发。

(2)当接收到红外波形时,下降沿触发外部中断1,在中断函数中启动定时器0开始计数。下一个下降沿时停止计数,并读出计数值存入缓冲区。

(3)连续测量14个数据,将14个数据进行冒泡法排列,分别去掉2个最大值和2个最小值,对剩下的数据求平均值。

(4)计算出来的平均值加上一个误差补偿值则为载波在一个周期内定时器0的计数值。直接将计数值进行存储。

图4 软件总体设计流程图

2.2 波形测量

波形测量是指对红外信号的编码波形进行测量。实际测量调制信号高低电平的时间。以红外NEC[1]协议为例,红外NEC协议编码波形如图5所示。

图5所示的黑色部分是载波,空白部分是低电平。波形测量的方法:采用外部中断触发的方式分别记录不同黑块中载波脉冲的个数和不同低电平的时间。具体测量步骤如下:

(1)配置单片机的定时器0和外部中断1,与测量载波频率时的配置相同。

(2)当接收到红外波形时下降沿触发外部中断1,在中断函数中启动定时器0开始计数,中断计数器值自增1。

(3)下一个下降沿时定时器0停止计数,中断计数器值自增1,并读出定时器计数值。将计数值与载波频率中测量值比较,若前者数值大于后者两倍,则表明测量的是低电平,执行步骤(4);否则,重置定时器0初值,并返回执行步骤(3)。

(4)存储外部中断1和定时器0的计数值,并判断数据缓存是否存满,若存满则执行步骤(5);否则重置定时器0初值并返回步骤(3)。

(5)分析测出的数据,并提取一段完整的波形存入E2PROM中,执行步骤(6)。若不能分析出一段完整波形,则执行步骤(7)。

(6)通过串口反馈学习成功,并传回按键编号。

(7)通过串口反馈学习失败。

2.3 波形数据分析与存储

波形测量后得到两组数据,分别是调制段的载波脉冲个数和低电平的时间计数值。所测波形数据中包含一段完整的波形数据,之后会出现一个较长时间的低电平,这个低电平的时间一般都会大于10 ms。通过判别低电平时间,就可以提取出一段完整的波形数据。

存储波形数据时,先定义一个结构体,其成员有:载波频率、按键编号、波形存储首地址和存储数据长度。其中按键编号和存储数据长度采用无符号字符型,其余两个采用无符号整型,因此一个结构体变量的字节长度是6 B。24C16的存储容量是16 KB,将存储空间分成两个区域,前2 KB来存储波形的结构体变量数据,后14 KB来存储波形数据。理论上计算存储器至少能存储55个波形。

2.4 红外信号发射

发射红外信号时,先根据按键编号从24C16中读取相应按键的载波频率、按键编号、波形数据存储首地址和存储数据长度。然后对按键编号进行比较,确认无误后根据波形数据存储首地址将波形数据读取出来。再根据波形数据给定时器0赋不同的初值,在定时器0的定时中断函数里对P3.5进行电平翻转,从而输出编码波形。波形信号经过三极管功率放大驱动红外发光二极管发射波形。

2.5 模块UART通信协议设置

2.5.1 串口参数设置

串口参数设置为:波特率1 200 b/s、数据位 8 bit、停止位1 bit、无校验位、无流控制。

2.5.2 通信协议设置

(1)模块接收数据格式

起始位 (0xfe)+命令位+数据长度+数据域+数据校验。

命令位详解:①0x00:模块进入学习模式;②0x01:模块按照接收到的按键编码发送红外信号;③0x02:获取指定按键编号的波形数据。

数据长度:通信协议中数据域的数据字节总数。

数据域:要发送的数据。当命令位为0x00,数据域中数据无效,可为一个字节的任意数据。

数据校验:数据域中所有数据的校验和。

例如,模块进入学习模式接收到的数据应该是0xfe 0x00 0x01 0x00 0x00;控制模块发送编码为2的按键信号数据应该是0xfe 0x01 0x01 0x02 0x02。

(2)模块发送数据格式

起始位(0xfe)+状态位+数据长度+数据域+数据校验。

状态位详解:①0x00:红外信号学习成功;②0x01:红外信号学习失败;③0x02:数据域中发送指定按键的编码波形数据。

3 实验分析与性能测试

3.1 载波频率学习测试对比与分析

测试方法:用一个模块编写程序发出固定频率的信号,该信号需要经过示波器测量确认,并让另一模块接收,测量该频率相应的定时器计数值,通过串口发送到PC机的串口调试助手显示。再计算出该频率相应的定时器理论计数值,将两个数值进行比较。测试结果如表1所示。

表1 载波频率测试结果

理论值的计算方法:载波频率为F,一个周期的时间T=1/F;单片机的时钟频率 f=24 MHz,定时器 0不采用12分频方式,定时器计一个数的时间t=1/f。因此在一个T时间内定时器0的计数值为C=T/t。

通过实验数据可得出,测量值与理论值存在偏差,但是这个偏差值接近一个固定值34,通过软件对测量数据加34来达到理论计算值。经过补偿后,将测量的频率数据转换成信号发出,用示波器测量发出的频率与接收到的频率一致。通过实验测得模块学习载波的范围是30 kHz~65 kHz。

载波频率的数据测量可通过补偿来达到理论要求。下面对实际的红外遥控进行载波频率识别测试,使用示波器捕捉载波波形进行比较。载波识别是本模块的一大亮点,参考文献[1-7]中的红外学习模块都使用红外一体化接收头进行数据采集,它们的共同点是载波频率固定,不能学习多种载波的遥控信号。而载波学习的一个重要指标是经过学习后的载波频率必须与原载波一致。

图6所示为学习模块识别载波频率后发送的载波波形,频率为38.46 kHz,占空比为1/2。用示波器测量红外遥控发射的载波频率为38.64 kHz,占空比为1/3。由图6可见,该学习模块能够识别载波频率。占空比的差异只与遥控器的功耗有关,但不影响遥控功能。

图6 学习模块学习后发送的载波

3.2 红外波形学习测试对比与分析

红外遥控自学习模块另一重要功能是将学习到的红外波形完整地发送出去,并且与原来的波形一致。通过示波器实验可以比对学习转发的波形与原有波形。图7所示为按下遥控器1号键时,通过红外接收管接收到的部分波形。图8所示为模块学习复制信号后发送的部分波形。经过比较,两种波形基本一致。

图7 红外遥控按键1发送的部分波形

图8 模块学习后发送的部分波形

实际功能测试:红外遥控自学习模块的主要功能是学习红外遥控器的相关按键,并且能控制相关的红外遥控设备。使用该模块学习彩色电视机的遥控,能够成功控制电视机频道选择;学习空调遥控,能成功控制空调的开关和调温等操作。

本文介绍的红外遥控自学习模块具有自动识别载波频率和波形学习的功能。实验证明,红外自学习模块具有良好的通用性和宽载波学习范围,解决了目前遥控器只识别单一载波的问题。通过实际功能测试,验证了该模块设计方案的可行性。

[1]郑伟,谢利理,张震.一种具有自学习功能的智能红外遥控器设计[J].计算机测量与控制,2007,15(12):1758-1759.

[2]吴彪,朱立新,赵佳.基于 CPLD的红外遥控发射接收设计与仿真[J].计算机仿真,2006,23(8):269-272.

[3]朱光忠,吕梅蕾,杨子鸣.基于单片机的红外遥控开关控制器[J].计算机工程与设计,2006,27(11):2097-2099.

[4]吴爱萍,朱晓春.基于AT89S51的多功能红外遥控器设计[J].仪表技术与传感器,2008(8):78-80.

[5]高建荣.基于单片机控制红外线遥控的编码实现[J].计算机工程与设计,2004,25(11):2105-2107.

[6]李从宏.基于功能码的红外遥控软件解码技术[J].单片机与嵌入式系统应用,2010(9):72-73.

[7]聂诗良,李磊民.红外遥控信号的一种编码解码方法[J].仪表技术与传感器,2004(8):28-29,32.

猜你喜欢

遥控载波红外
水声单载波扩频均衡技术研究
网红外卖
“遥控”老师
闪亮的中国红外『芯』
TS系列红外传感器在嵌入式控制系统中的应用
他是如何遥控引爆的
基于快速递推模糊2-划分熵图割的红外图像分割
低压台区载波抄表技术研究
应急广播系统中副载波的构建与应用
遥控赛车