tag 标签: 红外遥控

相关博文
  • 热度 19
    2015-1-16 10:29
    1026 次阅读|
    0 个评论
    为了解决空调遥控器不兼容问题,设计了一款基于Atmega16单片机的智能空调遥控器。该遥控器采用测量脉冲宽度的方法学习红外信号,同时使用游程编码算法对数据进行压缩后存储,并利用单片机内部定时器PWM模式产生红外载波,成功实现了对红外遥控的学习与再现,并可通过上位机进行控制。经运行测试表明,该智能遥控器操作灵活,性能稳定,为智能遥控器设计提供了一种新方案。 1 引言 本文设计了一款针对空调设备的智能学习型红外遥控器,采用记录脉冲宽度的方法,成功实现了对多种红外空调遥控信号的学习与再现,真正实现了"万能"。本文在阐述了系统的总体结构及硬件设计的基础上,详细研究了系统学习,发送及通信功能的软件设计与实现。 2 系统总体结构与硬件设计 系统采用模块化设计,各模块通过接口电路与主控芯片相连。主要模块有:矩阵键盘,液晶显示,存储模块,红外发送模块,红外接收模块,RS232、RS485 通信模块,以及温度检测模块。系统结构图如图1 所示。 系统以Atmega16 单片机作为主控芯片,Atmega16具有16K 字节的系统内可编程Flash ,512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8 路10 位具有可选差分输入级可编程增益的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。该芯片功能强大,满足系统设计需要并提供了充分的扩展空间。主控芯片使用8MHz 的晶振,晶振电路靠近主控芯片,尽量减少输入噪声。复位电路采用低电平复位。 图1 系统结构图 矩阵键盘采用3*3 的设计,设置了8 个功能键,方便用户进行手动操作。其中单独设计了一颗模式切换键,可在学习、发射、通信模式中切换。为了实现学习功能, 红外接收模块使用了一体化接收头NB1838,其光电检测和前置放大器集成于同一封装,中心频率为37.9KHz. NB1838 的环氧树脂封装结构为其提供了一个特殊的红外滤光器,对自然光和电场干扰有很强的防护性。NB1838 对接收到的红外信号进行放大、检波、整形,并调制出红外编码,得到TTL 波形,反相后输入单片机,再由单片机进行进一步的处理,存储到EEPROM 中,接收电路如图2 所示。 图2 接收硬件电路图。 考虑到系统需要的存储空间比较大,设计了单独的存储模块,选用的EEPROM 是AT24C64,它提供了8KB 的容量,通过IIC 协议与Atmega16 TWI 接口通信,将学习到的红外指令存储在此,掉电不丢失。 在发射模式下,系统从EEPROM 读取相应数据信息,利用三极管9013 组成的放大电路,通过大功率红外发射管将调制好的红外信号发射出去。发射电路如图3所示,非发送状态时,三极管工作在截止状态,红外发射管不工作,有利于降低功耗以及延长红外发射管的使用寿命。经实际测试,发射距离可达到10m 左右。 图3 发射硬件电路图。 通信模式中,系统通过RS232 电路与上位机通信,在与上位机通信时使用DS18B20 反馈温度信息,DS18B20 一线总线设计大大提高了系统的抗干扰性,独特而且经济。系统还增加了RS485 模块,便于组网,以实现对多个红外设备进行控制。RS485 在组网时只需要用一对双绞线将子设备的"A"、"B"端连接起来,这种接线方式为总线式拓扑结构,在同一总线上可挂接多个结点,连接方便。 为了增加设备的实用性,系统设计了两个电源方案,一个是直接接入5V 直流电源,一个是接入12V直流电源,然后通过L7805 构成的变压电路降压为5V使用。 【分页导航】 第1页: 系统总体结构与硬件设计 第2页: 学习功能设计 第3页: 通信功能设计 3 系统软件设计与实现 系统程序主要分为三个部分:学习模式,发送模式以及通信模式。当第一次进入系统时,初始化设置设备地址,然后设置通信的波特率,提供1200、9600 以及19200 三种选择。系统主程序即在三个模式间切换,默认进入通信模式,可以通过模式切换按键改变模式,也可以通过上位机直接更改。出于系统的稳定性需要,在程序中加入了软件看门狗,防止程序"跑飞". 3.1 学习功能设计 3.1.1 学习模式 红外遥控器的码型多样,编码一般包括:帧头、系统码、操作码、同步码、帧间隔码、帧尾,且同步码与帧间隔码出现的位置不固定,因此码型格式灵活多变,很难区分各种码型的编码含义;各个红外遥控的编码长度不尽相同,发送方式也多种多样,最常用的有三种:完整帧只发送一次、完整帧重复发送两次、先发送一个完整帧,后重复发送帧头和一个脉冲。面对如此多样化的编码方式,如果区分每种编码的含义进行学习,学习的复杂度将会很高,并且通用性也会受到影响。所以,为了避开各色码型的干扰,系统在学习时并不关心码型数据的实际意义,只记录脉冲的时间宽度。系统主要针对载波频率为38KHz(周期为26us)的红外遥控器,利用变量IR_time 记录接收到的脉冲宽度。学习程序流程如图4 所示。 图4 学习程序流程图。 3.1.2 压缩存储 由于不考虑具体的码型数据意义,只记录脉冲的宽度,系统的学习功能通用性得到了提高,但这种方式学习到的数据量很大,对存储的要求就变得很高。 尽管系统针对存储的大容量需求设计了单独的存储模块,但考虑到应在不增加硬件开销的情况下保证足够的存储容量,以及满足未来扩展的需要,在进行数据存储时,采取了数据压缩技术。 从学习到的电平数据可以发现,无论数据是1 还是0,都有相同时长的电平出现,这符合游程编码的特点。游程编码是一种简单的非破坏性资料压缩法,其好处是加压缩和解压缩都非常快,其方法是计算连续出现的资料长度压缩之。比如:一张二值图像的数据为:   WWWWWWWWBWWWWBBBWWWWWWWBWWWWW 使用游程编码压缩可得:8W1B4W3B7W1B 5W. 可见,压缩效率极高,且可避免复杂的编码和解码运算。所以,在存储时,系统对学习到的数据进行游程编码压缩 .例如,学习到的一组空调遥控器的数据为 ,如图5 所示,对重复的电平数据采用游程编码压缩后,原本需要199 字节的空调遥控码,只需要106个字节即可存储,压缩率达53.27%.因此,在存储时针对学习到的数据特点采取游程编码压缩,可以有效节约存储空间。 图5 一组典型的空调数据帧。 3.2 发射功能设计 现有的红外遥控器很多都是采用外部电路产生载波信号,例如使用NEC555 振荡器产生载波信号。为了减少硬件开销,本系统使用单片机内部的定时器产生载波。系统使用的是Atmega16 单片机,其定时器功能强大,具有普通模式、CTC 模式、快速PWM 模式、相位修正PWM 模式等工作模式,系统利用定时器1,使其工作在快速PWM 模式,产生占空比为1:3 的38KHz 的PWM 波。当发送某条指令时,单片机从对应的EEPROM 中提取指令信息,然后调制到生成的载波上,再通过发射电路即可完成红外信号的发射。 【分页导航】 第1页: 系统总体结构与硬件设计 第2页: 学习功能设计 第3页: 通信功能设计 3.3 通信功能设计 3.3.1 上位机通信 本遥控器除了能通过功能按键实现手动操作外,还可以通过上位机软件对遥控器进行控制。遥控器与上位机通过RS232 模块进行通信,首先配置上位机软件,确定串口号,选择与设备相同的波特率及主从设备地址,然后根据需要选择相应的指令,点击发送即可通过上位机对设备进行控制。由于本遥控器是基于空调遥控器进行研究的,在与上位机通信时,系统中的温度检测模块会上传实时温度,便于用户进行调整。图6 为上位机软件流程图。 图6 上位机软件流程图。 3.3.2 组网控制 为了实现对多个设备的联网控制,还设计了RS485 模块。各子遥控器通过RS485 模块的"A"、"B"端连接在一起,组成控制网络,如图7 所示,其中一个作为主遥控器,与上位机通过RS232 模块进行串口通信。当上位机需要对某个子设备进行控制时,选择相应的子设备地址号,发送指令即可,主遥控器收到指令信息后,会将指令发给对应的子设备。与主遥控器相连的上位机PC 连接Internet,作为本地服务器,可实现远程控制。 用户登录远程客户端,经身份验证后与服务器建立连接,可发送指令给本地服务器,本地服务器再经过串口通信对遥控器进行相应操作。如果遥控器主机与上位机距离较远,RS232 不能满足通信需要,也可不使用遥控器主机,在上位机PC 上使用RS232-485 转接头,通过RS485 直接将遥控器网络与PC 机485 接口相连,利用上位机对遥控器网络直接进行控制。 图7 控制网络示意图。 4 结语 本文设计了一款智能空调遥控器。该系统采用只记录红外信号脉冲宽度,不考虑红外编码格式的方式,通过游程编码算法将红外信号压缩后保存到EEPROM 中,并直接利用主控芯片定时器的PWM 模式产生38KHz 的载波,节约了硬件成本,除手动操作外还可以通过上位机对遥控器进行控制,使用方便。 系统成功实现了对多种空调遥控器的学习与功能再现,操作灵活,性能稳定。本系统还可用于智能家居中,对不同的红外设备进行控制,也可用于远程网络控制,为智能家居及远程监控提供了一种实现方法。 【分页导航】 第1页: 系统总体结构与硬件设计 第2页: 学习功能设计 第3页: 通信功能设计
  • 热度 20
    2014-12-1 20:06
    1440 次阅读|
    1 个评论
    很久之前做的,在stc89c52rc上调试通过。实测比较好用,大家完全可以自己去做一个,当然电机驱动可以用nmos搭电路。
  • 热度 22
    2014-7-21 10:11
    1302 次阅读|
    0 个评论
    早期的数字FM处理芯片TEA5767由Philips公司开发并被广泛地使用,但该芯片需要外加音频放大电路才能驱动耳机。鉴于此,国内锐迪科微电子公司独立开发了一颗具备高接收灵敏度的FM立体声数字芯片RDA5807P,具有自动搜台、重低音、静音、休眠、直接驱动耳机等优异的性能。本文介绍用RDA5807P芯片设计和制作了一款带遥控功能的收音机。 1 收音机总体设计方案 收音机的总体设计框图如图1所示。本收音机采用单节3.7 V、容量1500 mAh的锂电池作力电源,在使用寿命期内可以用手机充电器反复对它进行充电,使用非常方便。采用低功耗的AVR单片机ATmega8L作为微控制器,负责处理和协调各模块电路的工作,ATmega8L的工作电压为2.7~5.5 V,片内有512字节的EEPROM,不用专门外接EEPROM芯片就可以将掉电前接收电台的频道和音量信息保存起来,重新开机后又可以恢复原来的信息。调频收音机模块采用国产芯片RDA5807P加上少量的外围元件组成,由微控制器通过I2C总线接口对芯片内部寄存器进行写/读操作。通过键盘或红外遥控发射器可以进行自动搜台、手动选台、音量调节、静音操作。LCD用于显示当前收听电台的频率、音量等级等信息。音频功率放大器放大当前收听电台的音频信号,驱动扬声器发出声音。 图1 收音机的总体设计框图 【分页导航】 第1页: 收音机总体设计方案 第2页: 系统硬件电路设计(1) 第3页: 系统硬件电路设计(2) 第4页: 软件程序设计:搜台程序设计 第5页: 软件程序设计:红外遥控解码程序设计 2 系统硬件电路设计 2.1 电源管理模块电路设计 电源管理模块电路如图2所示。LM2054是一款单节锂电池恒流、恒压线性充电芯片,最大充电电流可达到800 mA。它只需外接极少的外部元件,预设4.2 V充电电压,精度达到±1%。充电时,若锂电池电压低于4.2V,充电指示灯D101亮,充电达到预设值4.2 V后指示灯D101熄灭。 图2 电源管理模块电路 2.2 微控制器及键盘、显示、红外遥控接收电路设计 微控制器及键盘、显示、红外遥控接收电路如图3所示。 图3 微控制器及键盘、显示、红外遥控接收电路 键盘K1~K6用于选频、音量调节等。红外遥控接收头连接到单片机ATmega8L的PB0,用单片机的输入捕获功能进行解码。为了减少液晶显示器LCD1602A占用单片机过多的I/O口,数据接口只使用高4位,在写入命令或数据时,分两次写入,先写高4位,再写低4位。为了降低LCD的用电量,LCD的背光灯用单片机的PD3和PC1进行控制,当用户设置好想收听的电台,5 s后LCD背光灯自动熄灭。 【分页导航】 第1页: 收音机总体设计方案 第2页: 系统硬件电路设计(1) 第3页: 系统硬件电路设计(2) 第4页: 软件程序设计:搜台程序设计 第5页: 软件程序设计:红外遥控解码程序设计 2.3 调频收音模块电路设计 调频收音模块电路如图4所示。RDA5807P是国产的FM立体声收音机接收芯片,加上极少的外围元件且基本不需要校准,通过程序设定即可接收欧洲、美国和日本的调频波段。单片机通过I2C总线SCL和SDA将访问RDA5807P芯片所需的地址、命令、数据写入内部的寄存器中,也可以通过该总线读出芯片内部寄存器中的数据,取得接收频道的数据和音量值,供显示使用。RDA5807P的输出经磁珠F301、F302及电容器C30 3、C304抑制高频干扰后,可以直接驱动32 Ω的耳机发出声音,也可以接到下级音频功放进行放大,推动扬声器发出声音。 图4 调频收音模块电路 2.4 音频功率放大电路设计 音频功率放大电路如图5所示。PAM8403是一块D类音频功率放大器芯片,它具有谐波失真低、噪声串扰小、可直接驱动喇叭的特点。用它制作的音频功放,电路简单,工作可靠。在5 V电源和4 Ω负载条件下,能输出3 W的功率。效率可达90%以上,非常适合于用电池供电的便携式电子产品。电路中 引脚可通过单片机输出低电平控制其进行静音和关闭功放系统。 图5 音频功率放大电路 2.5 红外发射模块电路设计 红外遥控发射器电路如图6所示。BA5104是一块红外遥控编码芯片,内接有上拉电阻,无键按下时,电路中无电流流通,振荡电路不起振,无遥控编码信号输出。当有某一键按下时,电路产生455 kHz的振荡信号,由BA5104内部电路进行12分频,获得38 kHz的载波信号。此时按键的编码信息和C1、C2引脚的状态信息对38 kHz载波进行编码调制,经15引脚串行输出,由三极管Q501、Q502构成的达灵顿驱动电路放大,经外发射管向空间发射,同时14引脚输出高电平,发射状态指示灯D501点亮。 图6 红外遥控发射器电路 【分页导航】 第1页: 收音机总体设计方案 第2页: 系统硬件电路设计(1) 第3页: 系统硬件电路设计(2) 第4页: 软件程序设计:搜台程序设计 第5页: 软件程序设计:红外遥控解码程序设计 3 系统软件程序设计 软件程序设计主要包括读写RDA5807P芯片相关的模块程序、频率及音量显示模块程序、按键检测与功能设定模块程序、遥控解码及功能设定模块程序等。本设计选用CodeVisionAVR作为开发软件,软件中集成有LCD1602、I2C总线驱动程序,不用再编写相应的底层函数,使用非常方便。故在此仅介绍RDA5807P芯片工作在RDA5807P模式及采用I2C总线接口进行搜台的程序设计和红外遥控解码程序的设计。 3.1 搜台程序设计 搜台程序可用硬件模式进行搜台,也可以采用软件模式进行搜台。本文着重介绍硬件模式搜台,软件模式搜台可参照硬件搜台模式进行编程。 I2C总线接口是由START、命令字节、数据字节及每个字节后的ACK及NACK比特、STOP组成。RDA58027P芯片写器件地址为0x20,读器件地址为0x21。RDA5807P芯片内部的I2C总线接口有4个写数据寄存器,其地址分别是0x02、0x03、0x04、0x05。2个读数据寄存器,其地址分别为0x0A、0x0B,每个数据寄存器又分为高字节和低字节。这些数据寄存器的地址是不可见的,不能通过单片机直接对指定地址的数据寄存器进行读/写操作。因此,单片机在发出读/写命令字节后,接下来必须对数据寄存器进行连续地读/写操作。其子程序如下: 硬件模式搜台程序设计主要是通过调用连续写和连续读操作子程序来对收音模块寄存器进行读/写,其程序流程图如图7所示。 图7 硬件模式搜台程序流程图 根据该流程图编写的子程序如下: 【分页导航】 第1页: 收音机总体设计方案 第2页: 系统硬件电路设计(1) 第3页: 系统硬件电路设计(2) 第4页: 软件程序设计:搜台程序设计 第5页: 软件程序设计:红外遥控解码程序设计 3.2 红外遥控解码程序设计 由BA5104的编码格式可知;遥控码的一帧长度为12位,其中包括3位起始码、2位用户码、7位指令码。遥控码的每一帧时间间隔为4T,T=1.6879 ms为一位遥控码的周期。一帧完整的遥控码如图8所示。 图8 一帧遥控码 遥控码中“1”用3T/4的高电平与T/4的低电平表示,“0”用T/4的高电平与3T/4的低电平表示,一位遥控码的波形如图9所示。 图9 一位遥控码 由图9可见,要用单片机来判断遥控发射器发出的是“0”还是“1”,关键是要判断接收脉冲下降沿至上升沿之间的时间。可以采用外部中断法,也可以采用输入捕获功能法,本文采用后一种方法。解码的思路是:初始化时,将ATmcga8L的ICP1引脚设置为输入状态,下降沿触发,当红外接收头接收到红外遥控信号时,产生下降沿,单片机自动将TCNT1寄存器中的值保存至ICR1寄存器中,在捕获中断服务程序中将ICR1中的值保存至T1中;然后将ICP1设置为上升沿触发,当再次产生捕获中断时,将ICR1中的值保存至T2中,将ICP1设置为下降沿触发,并将TCNT1置0。之后计算出T2-T1的时间并保存至事先开辟的数组中,要注意的是,T2-T1有可能出现负值,此时要将(T2-T1+0xffff)再保存,直到接收完12位数据。 保存在数组中的数据,当其值为3/4×1.687 9ms≈1266μs时,被认为接收到“1”,当其值为1/4×1.687 9 ms≈422 μs时,被认为接收到“0”。由于遥控发射器和单片机所使用的晶振频率与标称值会有一定的偏差,所以在程序中要留有一定的余量。 结语 经过多次比对测试,该收音机可以清晰、稳定地收听省府及本地所发射的调频电台信号。 【分页导航】 第1页: 收音机总体设计方案 第2页: 系统硬件电路设计(1) 第3页: 系统硬件电路设计(2) 第4页: 软件程序设计:搜台程序设计 第5页: 软件程序设计:红外遥控解码程序设计
  • 热度 17
    2014-3-6 09:28
    1473 次阅读|
    0 个评论
      引言   空调已进入千家万户,空调遥控器作为空调的用户界面,其设计的原理已成熟。目前,对学习型智能遥控器的研制开展了大量的工作,旨在提高遥控器的智能化和通用性,取得了较大的进展,并有部分产品进入市场。当前研制开发的学习型智能遥控器主要采用38KHz固定载波频率,遥控器编码不压缩或简单压缩。空调遥控器不同于其它家电遥控器(如彩电),空调遥控器发出的编码包含当前状态的多种信息,而彩电遥控器的编码是一键一码。把空调遥控器所有可能的状态都要学习和存储,需要花费大量的时间和存储空间。为此,提出了一种基于温度控制的编码状态转换算法,为基于单片机的智能型红外空调遥控器的设计提供了可能。    1 红外遥控码型分析   1.1 红外遥控码型研究分析   目前,各电器生产厂家对遥控脉冲编码及码流还没有形成统一的标准。通过对市面上比较普遍的几十种遥控器的码型结构进行研究分析,总结其特点如下:    (1)码型多样:脉冲流中一般包括:帧头、系统码、操作码、同步码、帧间隔码、帧尾。且同步码与帧间隔码出现的位置不固定。针对这些灵活多变的码型格式,很难区分各种脉冲流的含义。   (2)载波频率不固定:常用的遥控器采用38KHz作为载波频率,有的采用36KHz-42KHz之间的载频。   (3)编码长短不一:彩电类产品一般只有几十位,空调遥控器编码长达上百位。   (4)不同的发送方式:常用有三种方式,即:完整帧只发送一次(如图1a)、完整帧重复发送两次(如图1b)、先发一个完整帧,后重复发送帧头和一个脉冲(如图1c)。   图1 红外编码完整帧格式   由于编码方式的多样化,若区分每种码流的含义进行学习,其复杂性极高且占用很大的内存空间。本系统避开了各种形色码流的干扰,总结了红外遥控器编码的共性,只需了解脉冲的时间宽度,无需关心它的实际意义。因此,在系统中没有引导码、0码、1码、同步帧、反码等,定义了用0、1、2等数字表示各种时间宽度不等的脉冲流的算法。   1.2 空调红外遥控码型研究分析   空调遥控器开发的关键是温度状态的转化。对多种类型空调遥控器红外编码进行大量研究分析,找出了其编码规律:在空调的每一个编码中,其中有4位二进制表示开始温度(温度1),另外4位二进制表示按键后的末温度(温度2),当遥控器进行温度控制时,前一按键的末状态跳转到后一按键的初状态,从而可以对空调的温度进行连续控制。对空调遥控器红外编码进行提取,取出有关表示温度的部分(各种空调遥控器的编码规律类似),如下表所示:   空调温度部分编码表   图2 空调温度编码状态转换图   2 遥控器硬件结构   遥控器由STC系列STC89C51RD+单片机、红外编码发射与接收电路、键盘、显示屏、SD卡接口等外围器件组成。其中SD卡用来存放和保存学习的遥控器编码,并能与PC机进行交流;遥控器编码的识别是通过接收电路和整形电路来实现,为了能识别一定范围内的载频,编码接收电路中不含解调电路,载频的提取是用单片机来实现。   图3 遥控器硬件结构    3 软件设计   3.1 编码状态转换算法与实现   空调遥控器编码复杂,主要有制热、制冷、除湿、通风等模式,有些模式下还有不同的风速级别,并在每一种风速下,其温度状态变化规律不同。为此,对空调遥控器的编码创建了状态转换算法。算法中通过建立空调遥控器工作模式、风速等级和温度值序列三层关系模型,设计了对应的数组序列,每一个数组序列中存放着各种模式下不同风速等级时的温度值编码,通过指针方式进行调用。例如:图2中的二进制数据:{0000,0001,0011,0010,0100,0101,0111,0110,1100,1101,1111,1110,1000,1001,1011,1010}转换成十进制后,初始化数组data1,则:data1 ={0,1,3,2,4,5,7,6,12,13,15,14,8,9,11,10};指针P = data1 。结合data1和指针P,空调遥控器在一级风速时的编码状态转换流程见图4:   图4 编码状态转换流程    3.2载波信号精密检测   遥控器载频通常在36KHz-42KHz范围之间,如简单的用38KHz的载频调制,对有些遥控设备不能正确控制。为此,遥控器自学习时,需要精确检测编码的载波频率 。   通常用单片机定时器检测的最高频率和遥控器的载波频率属同一量级,无法精确测量载波脉冲的频率。为此,提出了均值算法。将定时器1和定时器2(捕获功能)配合使用,通过编码脉冲宽度和载波脉冲数的测量,通过计算,得到精确的载波频率。载波信号精确测量流程见图5:   图5 载波信号精确测量流程图   3.3 信号识别、编码分类与发送   遥控器编码长度为几十位到上百位,而且,每个编码的信息量较大。遥控器自学习时,所有的编码状态都要按照脉冲宽度方式存储,要求较大的存储空间。为此,提出了一种编码压缩技术 。遥控器编码内容包括:帧头、机器码、操作码、同步码、帧间隔和尾帧等类型,自学习时,对识别的遥控器编码进行分类,并按类型号进行存储,见图6所示:   图6 信号识别、编码分类示意图   遥控器自学习编码识别和分类过程:    (1) 红外编码和载波识别   红外编码和载波周期相差较大,先设定一个脉冲周期的门限值THRESHOLD1。每当有脉冲下降沿到时,启动定时器开始定时,在下一个下降沿时定时为t。当0THRESHOLD1时,为红外编码脉冲。此时记录T1的值为t,同理可检测到T2,T3,T4…编码脉冲的值。    (2) 数组建立   char sigdata ;                   typedef struct {          union intchar    bith;            union intchar    bitl;    uchar    bitl1;                } timer ;     其中:sigdata 存放编码中顺序出现帧的类别;   timer 存放 sigdata 中帧的不同类别的时间值。               (3) 编码帧类别识别   将T(i+1)的t1、t2与T(i)的t1、t2分别进行比较,若相等,timer 数组中不写入新的内容,此时,sigdata =sigdata ;否则,timer 中写入T(i+1)的时间值,且sigdata 中写入新的类别号。例如学习一个按键编码后:timer ={9000,4500,540,0,540,540,540,540,1650,0,……};sigdata ={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 结论   通过对空调遥控器编码的精简,创建了状态信息转换表,当每进入一种模式时,只需发射与温度状态信息相关的编码,简化了发射编码、提高了传输效率。开发的遥控器自学习功能,通过编码学习与原机进行对比,每种脉冲流的时间仅差1个时钟周期;采用均值算法,使发送的载波频率误差小于0.5KHz;设计的遥控器编码矢量压缩算法,存储一个键码(200个编码)仅需134个存贮单元,压缩比达8:1。上述技术为采用单片机实现智能空调遥控器创建了基础,其中,“状态信息转换表的创建”和“高精度载波频率测量”是本文的主要创新。   参考文献:      江玉洁.新型频率测量方法的研究 . 仪器仪表学报,2004,22:30-33      李冬梅等.通用学习式红外遥控器中数据压缩与识别算法 . 清华大学学报(自然科学版),2000,40:85-88      张鸣瑞等.编码理论 . 北京:航空航天大学出版社,1990.      安颖、刘丽娜.具有学习功能的智能遥控器.微计算机信息,2005 No.3      VITERBI,A.J.K.OMURA,Principle of digital communication and coding, McGraw-Hill Book Company,New York,1979
  • 热度 22
    2013-6-16 10:38
    1232 次阅读|
    0 个评论
      本系统以单片机AT89C51 为电动车的控制核心, 利用红外遥控器配以红外接收头及直流电机的正反转控制电路来实现电动车的运动控制。系统由红外线遥控器, 红外线接收模块, 电动机驱动模块, 显示及声光指示模块, 方向控制模块等几部分组成。系统流程如图1, 原理框图如图2. 图1 原理流程图 图2 系统框图   1 红外遥控系统   通用红外遥控系统由发射和接收两大部分组成, 应用编/ 解码专用集成电路芯片来进行控制操作, 如图3 所示。发射部分包括键盘矩阵、编码调制、LED 红外发送器; 接收部分包括光、电转换放大器、解调、解码电路。 图3 红外遥控系统框图   1. 1 遥控发射器及编码   当发射器按键按下后, 即有遥控码发出, 所按的键不同遥控编码也不同。这种遥控码具有以下特征:   采用脉宽调制的串行码, 以脉宽为0. 565 ms、间隔0. 56 ms、周期为1. 125 ms 的组合表示二进制的"0"; 以脉宽为0. 565 ms、间隔1. 685 ms、周期为2. 25 ms 的组合表示二进制的" 1" , 其波形如图4 所示: 图4 遥控编码的"0"和"1"   上述" 0"和"1"组成的32 位二进制码经38 kH 的载频进行二次调制以提高发射效率, 达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射。   1. 2 接收器及解码   解码的关键是如何识别"0"和"1" , 从位的定义我们可以发现" 0" 、"1"均以0. 56 ms 的低电平开始, 不同的是高电平的宽度不同,"0"为0. 56 ms, "1"为1. 68 ms, 所以必须根据高电平的宽度区别"0"和" 1" .如果从0. 56 ms 低电平过后, 开始延时, 0. 56 ms 以后, 若读到的电平为低, 说明该位为"0" , 反之则为"1" , 为了可靠起见, 延时必须比0. 56 ms 长些, 但又不能超过1. 12 ms, 否则如果该位为"0" , 读到的已是下一位的高电平, 因此取( 1. 12 ms+ 0. 56 ms) / 2= 0. 84 ms 最为可靠, 一般取0. 84 ms 左右均可。   根据码的格式, 应该等待9 ms 的起始码和4. 5 ms 的结果码完成后才能读码。   2 单片机双机通信   AT89C51 是一种带4K 字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8 位微处理器, 俗称单片机。   多个MCS- 51 单片机可利用串行口进行多机通信。在多机通信中, 要保证主机与所选择的从机实现可靠的通信, 必须保证串行口具有识别功能。串行口控制寄存器SCON 中的SM2 就是为满足这一要求而设置的多机通信控制位。其多机控制原理是在串行口以方式2( 或方式3) 接收时, 若SM2= 1, 表示置多机通信功能, 这时出现可能情况: ( 1) 接收到的第9 位数据为1 时, 数据才装入SBU F, 并置中断标志RI= 1 向CPU 发送中断请求; ( 2) 接收到的第9 位数据为0 时, 则不产生中断标志, 信息将被抛弃。   若SM2= 0, 则接收的第9 位数据不论是0 还是1, 都产生中断标志, 接收到的数据装入SBUF 中。   双机通信的工作过程如下: ( 1) U2 初始化程序允许串行口中断, 将串行口变成为方式2 或方式3接收, 即9 位异步通信方式, 且置SM2 和REN 位为1, 使U2 只处于双机通信且接收地址帧的状态; ( 2)在U1 和U2 通信时, U1 发送地址信息的第9 位为1, 数据( 包括命令) 信息的第9 位为0.U 2 的串行口接收到的第9 位信息RB8 为1, 且由于SM2= 1, 则置1 中断标志位RI, U2 响应中断, 执行中断服务程序; ( 3)接着U 1 发送数据帧, U 2 接收数据帧, 然后进行处理。   3 电动机的驱动   L298N 是一款较常用的高电压大电流全桥双路电机驱动芯片, 用T TL 电平输入控制信号即可实现对伺服电机、直流电机及步进电机等多种电机的控制。一片L298N 中包含了两路控制放大电路,用它可以构成两个同类型的控制电路。   取其中的一路构成的电机控制电路如图5 所示。其中, 13、14 脚为电机控制输出端, 直接接在电机的两个输入端; 10、11、12 脚为逻辑电路输入端, 可以直接与单片机、PLC 等控制芯片相连; 9 脚VSS 接+ 5V 的逻辑电路电源, 4脚VS 接电机的电源, 电压大小即电机额定输入电压; 8 脚接地。   只要通过控制电路对C、D 两个输入端输入T TL 电平的0 或1 即可控制电机的正转、反转及停止。   当向C、D 两端输入同样电平时, 可实现电机的快速停止。另外将使能端V en 置零也可以使电机停止。   4 电机的PWM 调速   在直流伺服系统中, 速度调节主要通过改变电枢电压的大小来实现。 经常采用晶闸管相控整流调速或大功率晶体管脉宽调制调速两种方法, 后者简称PWM, 常见于中小功率系统。它采用脉冲宽度调制技术, 其工作原理是: 通过改变“接通脉冲”的宽度, 使直流电机电枢上的电压的"占空比"改变, 从而改变电枢电压的平均值, 控制电机的转速。PWM 电路由四个大功率晶体管组成H 桥电路构成, 四个晶体管分为两组, 交替导通和截至, 用单片机控制达林顿管使之工作在开关状态, 根据调整输入控制脉冲的占空比, 精确调整电动机转速。这种电路由于管子只工作在饱和和截止状态下, 效率非常高。H 型电路使实现转速和方向的控制简单化, 且电子开关的速度很快, 稳定性也极强, 是一种广泛采用的PWM 调速技术。   5 显示电路   常用的数码显示器件主要有LED 数码显示器和LCD 液晶显示器, 本系统采用LED 显示器。它是用发光二极管( 简称LED) 组成字形来显示数字、文字( 主要是拉丁字母) 和符号的。同一规格的数码管一般都有共阳极和共阴极两种类型。本设计采用共阴型。其电路图如图6 所示。其中74LS247 为译码器, 引脚如图7 所示。   6 结语   本文用红外遥控器来实现电动车的运动状态控制, 利用红外遥控器发送指令, 指令信号经红外接收头接收、处理后转换为脉冲信号, 然后发送到单片机进行译码。单片机译码后, 根据预先编写好的程序, 输出相应的指令, 通过电动机的控制电路, 从而控制电动机的运动, 实现对电动车的运动控制的目的。如把设计中的直流电动机换成伺服电机, 再配合单片机可以精确的控制伺服电机的动作, 凡是需要以单片机控制想要拉动或是做简易的机械式传动的机构设计都可以应用这种设计。
相关资源