张惠兴,钟文涛,张耿旭
(TCL集团股份有限公司,广东 惠州 516006)
红外信号是由“有载波”和“无载波”两种数据按一定编码方式形成的信号,如图1所示。进行红外信号学习时,一方面要精确获取所需要学习的红外信号的载波频率,另一方面也要精确获取所学信号的各个“有载波”及“无载波”区的时长。在使用台湾Mstar公司的MS6A801芯片平台(软件系统为Andrion4.0)开发一款产品时,需要通过红外信号控制外围设备,因此需要学习外围设备遥控器的红外信号。外围设备红外信号的载波频率有38 kHz,56 kHz或其他频率。为了精确获取所学红外信号的频率,需要使用5 μs以下的定时中断。当使用Android系统的μs级定时器进行红外信号学习时,发现无法获得精确的定时中断,中断时刻有时提前有时延后,造成学习结果不准确,同一信号有时需要学习多次才成功,另一方面,学习过程中如果有干扰也会造成学习结果不准确。
Android的定时器有高精度定时器(Hrtimer)和低精度定时器(Jiffies),Hrtimer也可设置为高精度模式和低精度模式,在MS6A801平台,高精度模式可以达到ns级的分辨率。当要获取高精度的时间差时,将Hrtimer设置成高精度模式,通过hrtimer.base->get_time()在起始和结束时刻各获取一次系统时间,相减则得到两个时刻的高精度时间差[1-2]。
图1 红外信号的波形(截图)
通过20个(可视情况整)有效的载波时长的平均值计算载波频率,采集时不要求采集连续的20个周期的载波,可以跨“有载波”区域,方法如下:
1)设定一个20单元的无符号整数数组,用于存储认可的20个载波的周期时长。
2)当红外输入引脚有上升沿中断(非首次),计算与上一次上升沿中断时刻的时间差,也就是一个周期时长。
3)判断这个周期时长是否可信:将这个时长与数组中上一次采集的数据的时长进行比较,如果误差较大(例如大于1%,可设置)且数组中的历史数据小于6,将数组的历史数据清零,以这个数据为起点重新存储;如果误差较大(例如大于1%,可设置)且数组中的历史数据大于6,则将新的周期时长抛弃。
4)如果本次“有载波”的时段里面没有完成20次载波周期时长的采集,那么在下一个“有载波”时段继续,直到数组存满。
5)将已存满的数组中的数据取平均值,计算出平均时长,从而计算出信号的载波频率。
实现载波采集的上升沿中断子函数的流程如图2所示。
图2 上升沿中断子函数的流程图
1)检测红外学习信号输入引脚的上升沿电平,通过Hrtimer精确获得当前时间(hrtimer.base-> get_time()),当“有载波”时段开始时,记录当前系统时间,记t1。
2)记录最后一次上升沿中断的时刻,记为t2。
3)当连续较长的时间(这个时间可设置)没有检测到载波,则记T有载波=t2-t1为“有载波”的时长并存储,而“无载波”的时段起始则为t3=t2;
4)当重新检测到载波的时候,存入t2,记“无载波”时长T无载波=t2-t3并存储,t2作为下一个“有载波”的起始存入t1,重复1)~4),直到一帧信号采集结束。
实现“有载波”和“无载波”时长采集的定时中断的子函数流程如图3所示(注:为了区分有跳变位的红外信号,采用对一个红外信号采集两次的方法)。
图3 定时中断的子函数流程图
在测试室将进行改善前产品及改善后的产品进行测试对比。待学习的红外信号选用型号为RC410的遥控器的MUTE键的信号,将待学习的遥控器的发射管与采集信号的接收管正对,距离保持20 cm,各重复学习500次并发射学习信号控制外围设备进行验证,结果如表1所示。
表1 近距离重复测试结果
从测度结果可以看出,本文的改善方法对近距离红外学习的准确性有很大提高。
如图4所示,在一平台上用白色的纸标好角度及距离,将待学习的遥控器置于不同的位置,使其发射管保持指向采集信号的接收管,每个位置学习验证2次,只要有1次失败就算失败,测试结果如表2和表3所示,格中打×的表示失败。
图4 多距离多角度测试示意图(截图)
表2 改善前多距离多角度测试结果
表3 改善后多距离多角度测试结果
从测试结果可以看出,改善后的产品在±30°范围内学习准确性有提高,在大角度范围时50 cm内学习准确性有提高。
本文提出的改善方法,一方面对定时精度进行改进,另一方面通过跨区域对载波进行采集[3],加上平均滤波[4],提高容错性。测试结果表明,本方法对改善红外学习的准确性有很大的提高。
[1] 苗忠良,曾旭,宛斌.深入Android应用开发:核心技术解析与最佳实践[M].北京:机械工业出版社,2012.
[2] 杨丰盛.Android技术内幕:系统卷[M].北京:机械工业出版社,2011.
[3] 康保寿.学习型红外遥控器的实现[J].信息通信,2011(4):189-190.
[4] 于飞,华宇宁.波段红外信号采集和处理系统[J].沈阳理工大学学报,2011(4):27-30.