智能型红外遥控器的设计应用 |
2008-5-9 11:03:00 陈祖爵 王建毅 供稿 |
| 引 言 空调已进入千家万户,空调遥控器作为空调的用户界面,其设计的原理已成熟。目前,对学习型智能遥控器的研制开展了大量的工作,旨在提高遥控器的智能化和通用性,取得了较大的进展,并有部分产品进入市场。当前研制开发的学习型智能遥控器主要采用38KHz固定载波频率,遥控器编码不压缩或简单压缩。空调遥控器不同于其它家电遥控器(如彩电),空调遥控器发出的编码包含当前状态的多种信息,而彩电遥控器的编码是一键一码。把空调遥控器所有可能的状态都要学习和存储,需要花费大量的时间和存储空间。为此,提出了一种基于温度控制的编码状态转换算法,为基于单片机的智能型红外空调遥控器的设计提供了可能。 1 红外遥控码型分析 (2)载波频率不固定:常用的遥控器采用38KHz作为载波频率,有的采用36KHz-42KHz之间的载频。 (3)编码长短不一:彩电类产品一般只有几十位,空调遥控器编码长达上百位。 (4)不同的发送方式:常用有三种方式,即:完整帧只发送一次(如图1a)、完整帧重复发送两次(如图1b)、先发一个完整帧,后重复发送帧头和一个脉冲(如图1c)。 ![]() 图1 红外编码完整帧格式 由于编码方式的多样化,若区分每种码流的含义进行学习,其复杂性极高且占用很大的内存空间。本系统避开了各种形色码流的干扰,总结了红外遥控器编码的共性,只需了解脉冲的时间宽度,无需关心它的实际意义。因此,在系统中没有引导码、0码、1码、同步帧、反码等,定义了用0、1、2等数字表示各种时间宽度不等的脉冲流的算法。 1.2 空调红外遥控码型研究分析 ![]() ![]() 图2 空调温度编码状态转换图 2 遥控器硬件结构 ![]() 图3 遥控器硬件结构 3 软件设计 ![]() 图4 编码状态转换流程 3.2载波信号精密检测 遥控器载频通常在36KHz-42KHz范围之间,如简单的用38KHz的载频调制,对有些遥控设备不能正确控制。为此,遥控器自学习时,需要精确检测编码的载波频率[1]。 通常用单片机定时器检测的最高频率和遥控器的载波频率属同一量级,无法精确测量载波脉冲的频率。为此,提出了均值算法。将定时器1和定时器2(捕获功能)配合使用,通过编码脉冲宽度和载波脉冲数的测量,通过计算,得到精确的载波频率。载波信号精确测量流程见图5: ![]() 图5 载波信号精确测量流程图 3.3 信号识别、编码分类与发送 遥控器编码长度为几十位到上百位,而且,每个编码的信息量较大。遥控器自学习时,所有的编码状态都要按照脉冲宽度方式存储,要求较大的存储空间。为此,提出了一种编码压缩技术[2][3]。遥控器编码内容包括:帧头、机器码、操作码、同步码、帧间隔和尾帧等类型,自学习时,对识别的遥控器编码进行分类,并按类型号进行存储,见图6所示: ![]() 图6 信号识别、编码分类示意图 遥控器自学习编码识别和分类过程: (1) 红外编码和载波识别 红外编码和载波周期相差较大,先设定一个脉冲周期的门限值THRESHOLD1。每当有脉冲下降沿到时,启动定时器开始定时,在下一个下降沿时定时为t。当0THRESHOLD1时,为红外编码脉冲。此时记录T1的值为t,同理可检测到T2,T3,T4…编码脉冲的值。 (2) 数组建立 char sigdata[i]; typedef struct { union intchar bith; union intchar bitl; uchar bitl1; } timer[m]; 其中:sigdata[i]存放编码中顺序出现帧的类别; timer[m]存放 sigdata[i] 中帧的不同类别的时间值。 (3) 编码帧类别识别 将T(i+1)的t1、t2与T(i)的t1、t2分别进行比较,若相等,timer[m]数组中不写入新的内容,此时,sigdata[i+1]=sigdata[i];否则,timer[m]中写入T(i+1)的时间值,且sigdata[i+1]中写入新的类别号。例如学习一个按键编码后:timer[m]={9000,4500,540,0,540,540,540,540,1650,0,……};sigdata[i]={1,2,3,3,4,……}。 (4) 红外编码完整帧格式确定 两个完整帧之间有较长的时间间隔,且这段时间间隔大于编码中任何低电平的时间。为此,可定义THRESHOLD2为两完整帧之间的间隔值;可定义THRESHOLD3为编码脉冲结束后停止帧长度。当THRESHOLD3> t2 >THRESHOLD2时,判断为第二帧的开始。再比较T(i+1)中t1,t2与T2中t1,t2的值,若相等,为一次发送两个完整帧。否则,一次发一帧加帧头和一个脉冲;当t2 >THRESHOLD3,编码接收完成,为一次只发送一个完整帧的情况。 (5) 发送载波频率初始值计算 载波频率= ,6分频时n=2;12分频时n=4。得(RCAP2H,RCAP2L)=3*freq(freq为学习时检测出的载波脉冲宽度)。 4 结论 |







