DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 701|回复: 0
打印 上一主题 下一主题

[无线] 一种基于MSP430单片机的红外遥控器的设计方案

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:50:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    Design of Infrared Controller Based on MCU MSP430
摘要:本文首先介绍了红外通信的基本原理;然后简要介绍了TI公司的MSP430单片机的功能特点;最后介绍了一种基于MSP430单片机的红外遥控器的设计方案,并给出了硬件电路和程序流程图。
关键词:红外通信;MSP430单片机;红外遥控器

1 引言
在工业控制的许多环境下,不适合操作人员直接控制,例如:高温、高压、辐射、粉尘、强酸性、腐蚀性、有毒气体等。这时,红外遥控是可行的控制方式。通过这种方式,操作人员能及时采集现场数据,修改控制对象的参数,并发送控制命令,以达到理想的控制效果。红外遥控通过红外通信的方式进行控制,具有低功耗、低成本、高可靠性、体积小、结构简单、避免人身伤害等优点,是一种先进的控制方式,具有广阔的应用前景。
2 红外通信原理[1][2]
红外通信,即以红外线作为通信载体,通过红外光在空中的传播来传输数据的通信方式,它由发射端和接收端来完成。在发射端,发送的数字信号经过适当的调制编码后,送入电光变换电路,经红外发射管转变为红外光脉冲发射到空中;在接收端,红外接收器对接收到的红外光脉冲进行光电变换,解调译码后恢复出原信号。
红外发射端发送数据时,是将待发送的二进制数据调制成一系列的脉冲信号后发射出去。红外载波为频率38KHz的方波,采用脉宽调制PWM方式发送,通过待发送二进制数据的“0”或“1”控制两个脉冲之间的时间间隔,及PWM的占空比。红外载波既可以通过外围硬件电路实现,也可以使用单片机内部的定时器的PWM功能实现。
红外接收端在收到38KHz的载波信号时,会输出低电平,否则输出高电平,从而可以将“时断时续”的红外光信号解调成一定周期的连续方波信号,经单片机处理,便可以恢复出原数据信号。
3 MSP430单片机简介[3]
MSP430单片机是TI公司推出的一个新型单片机系列,其主要特点是:超低功耗、16位指令、内置A/D转换器、串行通信接口、硬件乘法器、LCD(液晶)驱动器及高抗干扰能力等。因此,MSP430单片机特别适合应用在智能仪表、防盗系统、智能家电、电池供电便携式设备等产品之中。笔者在开发这款遥控器时,选用的单片机型号是MSP430F413,其性能特点如下:低工作电压(1.8"3.6V);超低功耗(工作模式4下耗电仅为0.1μA);16位精简指令结构(RISC);150ns指令周期;带有3个捕获/比较器的16位定时器;片内集成96段LCD驱动器;片内有JTAG调试接口和FLASH型存储器,可在线串行编程;开发环境十分方便高效,支持C语言和汇编语言。
4 基于MSP430单片机的红外遥控器设计[4][5]
4.1 总体硬件框图
笔者设计的这款红外遥控器,不仅能设置控制对象的给定值或控制参数,并通过红外线发送给对象,而且能接收并显示对象通过红外线反馈回的实际值,这是它不同于普通红外遥控器的地方。因此,实际应用中,红外遥控器和控制对象上都装有红外发送电路和红外接收电路。红外遥控器的硬件部分主要包括五个模块:电源模块、键盘模块、液晶模块、红外发送模块和红外接收模块。总体硬件框图如图1所示。由于MSP430、红外发送模块和红外接收模块都可采用3V电源,所以电源模块采用两节1.5V电池供电即可。键盘模块采用4×4行列扫描式键盘。液晶模块由MSP430F413直接驱动。        



           图1  总体硬件框图
4.2 红外发送模块




图2  红外发射电路                         图3  红外发射波形
因为发光二极管的发光距离与其发射功率成正比,为了提高发光二极管的发光距离,必须提高它的发射功率,也就是使红外发光二极管工作于脉冲状态。可以用两种方法来实现:一是用硬件方法,即设计脉冲电路来产生占空比尽量小的脉冲载波信号;另一种就是用软件来控制MSP430F413的输出端P2.1,让其输出即为占空比较小的脉冲信号。
这里利用软件来实现这个功能。即在需要输出高电平的时候,让程序定时把P2.1口输出状态反向,其中定时时间是由指令数和指令周期来决定的,每条指令的指令执行周期是固定的,所以如果想让反向频率高一些,则让指令执行的少一些,反之就让指令多一些。可见输出信号占空比可以由定时时间的长短来决定,这样就可以在高电平时输出占空比尽量小的脉冲信号。因为接收头对38KHz的光信号转换能力比较强,所以把高电平的频率设置为38KHz。在需要输出低电平的时候,控制P2.1口一直为低就可以了。
红外发光二极管发射波形如图3所示。先发一段前导码,以检验这组码是否为想要的码。前导码由一个9ms的高电平和一个4ms的低电平组成。然后再发32位数据代码,其中高电平为0.5ms,低电平为0.5ms的一个周期为代码“0”;高电平为0.5ms,低电平为1.5ms的一个周期为代码“1”。为了提高发射功率,实际工作时,发光二极管的高电平用38kHz的载波信号载波,低电平则一直为低。
[1] [2]  下一页
         
          [/td]
        [/tr]
      
  
         
   


红外发送程序流程图如图4所示。即先发出前导码,然后再按发出的是‘0’或‘1’来发出不同的数据码,每发送完一位,就让码长计数器num加1,直到num加到32时,发送停止。











图4   红外发送程序流程图   




图5   红外接收电路
  

4.3 红外接收模块
红外接收电路选用Vishay公司生产的专用红外接收模块TSOP1838SS3V(以下简称1838)。该接收模块是一个三端元件,使用+3V电源,具有功耗低、抗干扰能力强、输入灵敏度高、对其它波长(950nm以外)的红外光不敏感的特点。1838的工作原理为:首先,通过红外光敏元件将接收到的载波频率为38kHz的脉冲调制红外光信号转化为电信号,再由前置放大器和自动增益控制电路进行放大处理;然后,通过带通滤波器进行滤波,滤波后的信号由解调电路进行解调;最后,由输出级电路进行反向放大输出。
如图5所示,1838的Vcc接+3V,GND接地,信号从OUT引脚引出,进入MSP430F413的P2.0口。当1838接收到红外信号,就会把红外信号转换的电平从OUT脚输出,P2.0口就会产生一个中断,进入红外中断服务程序,进而判断是什么信号,并且对信号做出反应。
1838输出的接收波形与发射波形恰好反相,即前导码是9ms的低电平与4ms的高电平,“0”是0.5ms的低电平与0.5ms的高电平,“1”是0.5ms的低电平与1.5ms的高电平。因此,在接收程序中,通过比较高电平的脉宽来判断到底是前导码,还是“0”或“1”。
图6是红外接收中断程序流程图。在主程序中,先设置P2.0口为上升沿和下降沿都捕获,然后中断允许,进入主循环。一旦P2.0口有电平的跳变即进入中断程序。在中断程序中,首先判断是否上升沿。若是,则上升沿标志置1,并记录上升沿时刻;否则,说明是下降沿,再判断上升沿标志是否置1。若是,说明已有上升沿,记录下降沿时刻,并计算脉宽(脉宽=下降沿时刻—上升沿时刻);否则,说明这是干扰信号,直接返回。下一步,判断脉宽的大小。若是起始码,则起始码标志置1,记数值n清0。否则,判断起始码标志是否置1,若是,判断是“0”还是“1”,并保存,n加1,判断n是否大于或等于32,是则将起始码标志和记数值n清0,保存32位数据,返回;否则直接返回。




[table]

[tr]

图6   红外接收中断程序流程图[/td][/tr]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-21 18:38 , 耗时 0.082633 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表