基于AT89C52单片机对遥控电扇的改造

传统电风扇多采用机械方式进行控制 , 功能少 , 噪音大 , 各档的风速变化大 。随着科技的发展和人们生活水平的提高 , 家用电器产品趋向于自动化、智能化、环保化和人性化 , 使得由微机控制的智能电风扇得以出现 。随着电子制造业的不断发展 , 社会对生产率的要求越来越高 , 各行业都需要精良高效、高可靠性的设备来满足要求 。作为一种老式家电 , 电风扇具有价格便宜、摆放方便、体积轻巧等特点 。由于大部分家庭消费水平的限制 , 电风扇作为一个成熟的家电行业的一员 , 在中小城市以及乡村将来一段时间内仍然会占有市场的大部分份额 , 但电风扇功能简单 , 不能满足智能化的要求 。本文利用了单片机的红外控制功能 , 对电扇的控制结构进行了重新的设计 , 使得人在距离电扇10m范围内就可以短程控制电扇 , 使得人不用走近电扇即可对电扇的风速进行调控 , 方便 , 实用 , 具有广阔的市场前景 。
1 系统功能简介
传统的电扇都是由机械按键来控制电扇的启停 , 本设计采用红外遥控进行控制 , 由一单片机作为发射电路的主控部分 , 根据传统的机械按键也设计了4个按键控制 , 分别是关闭 , 小风速 , 中档风速 , 高风速 。用户可以在夏天的时候 , 坐在沙发上 , 就可以完成电扇的打开 , 关闭 , 高速 , 低速的调节 。
2 系统结构
该设计的系统的框图如图1所示 。
由图1我们可以看到该设计一共由6大模块构成 , 其中2个单片机AT89C52模块是相同的 , 他们分别是单片机的最小系统 , 具有单片机的最基本的启动和复位功能 , 其中按键部分完成按键功能 , 将0或者1的电平送给单片机进行处理 , 至于红外发送模块 , 功能就是把单片机编制好的红外编码发送出去 , 红外接收模块仅仅完成接收工作 。后面的单片机模块完成对红外脉冲的解码 , 由不同的编码完成对电机的控制 , 也就相当于对电扇进行控制了 。
3 系统硬件设计
3.1 遥控发射电路设计
如图2所示 , 该图为红外遥控发射电路图 。
在图2中 , 单片机采用AT89C52 , 这是遥控电路的主芯片 。ATMEL公司生产的AT89C52单片机采用高性能的静态80C51设计 , 并采用先进工艺制造 , 还带有非易失性的Flash程序存储器 , 它是一种高性能、低功耗的8位CMOS微处理芯片 , 市场应用最多 。其主要性能特点如下:
*8 kB FLASH ROM , 可以擦除1 000次以上 , 数据保存10年 。
*256字节内部RAM 。
*电源控制模式:1)时钟可停止恢复2)空闲模式3)掉电模式 。
*6个中断源 。
*4个中断优先级 。
*4个8位I/O口 。
*全双工增强型UART 。
*3个16位定时/计数器:T0 , T1(标准80C51)和增加的T2(捕获和比较) 。
*全静态工作方式:0~24 MHz 。
【基于AT89C52单片机对遥控电扇的改造】在单片机的右半部分 , 接有4个按键分别是S2 , S3 , S4 , S5与单片机的P0口的0到3号端口相连 。P0口在用作输入的时候 , 必须接有上拉电阻 。在单片机的左半部分是最小系统模块和红外发射部分 , 遥控器的信息码由AT89C52单片机的定时器1中断产生40kHz红外线方波信号 , 由P3.5口输出 , 经过三极管9013放大 , 由红外线发射管发送 。改变电阻R3的大小可以改变发射距离 。
3.2 红外遥控接收电路设计
如图3所示 , 该图为红外遥控接收电路图 。
如图3所示 , 单片机的左半部分是万能红外接收头IR1838 , 其管脚1为输出 , 管脚2 , 3分别是接地和电源的输入 , 电源电压仍然为5V , 左半部分的单片机的最小系统完成的是单片机的复位功能和启停 , 右半部分电路是由一个DAC0808芯片构成 , 该芯片输出与一个放大器相连 , 通过放大后将电压加在直流电机的两端 , 从而驱动了电机的工作 。关于DAC0808它的主要参数为 , 误差最大 , 快速建立时间为150ns , 高速输入乘以转换率为:8 mA/μs , 电源电压为±4.5~±18 V到 , 该芯片为低功耗的 , 最大功耗为33mW 。该DAC是8位的 , 也就意味着输入的范围为0到255 , 输出的电压从0~10 V变化的 , 这样最小精度为10/255V , 但是经过一个集成放大器后 , 也就能驱动一个小小的电动机了 。
4 系统软件设计
4.1 红外发射和接收原理
先讲一讲什么是红外线 。我们知道 , 人的眼睛能看到的可见光按波长从长到短排列 , 依次为红、橙、黄、绿、青、蓝、紫 。其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~O.46μm 。比紫光波长还短的光叫紫外线 , 比红光波长还长的光叫红外线 。红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的 。
常用的红外遥控系统一般分发射和接收2个部分 。发射部分的主要元件为红外发光二极管 。它实际上是一只特殊的发光二极管 , 由于其内部材料不同于普通发光二极管 , 因而在其两端施加一定电压时 , 它便发出的是红外线而不是可见光 。目前大量使用的红外发光二极管发出的红外线波长为940nm左右 , 外形与普通发光二极管相同 , 只是颜色不同 。红外发光二极管一般有黑色、深蓝、透明3种颜色 。判断红外发光二极管好坏的办法与判断普通二极管一样:用万用表电阻挡量一下红外发光二极管的正、反向电阻即可 。红外发光二极管的发光效率要用专门的仪器才能精确测定 , 而业余条件下只能用拉距法来粗略判定 。
接收部分的红外接收管是一种光敏二极管 。在实际应用中要给红外接收二极管加反向偏压 , 它才能正常工作 , 亦即红外接收二极管在电路中应用时是反向运用 , 这样才能获得较高的灵敏度 。红外接收二极管一般有圆形和方形两种 。
由于红外发光二极管的发射功率一般都较小(100mW左右) , 所以红外接收二极管接收到的信号比较微弱 , 因此就要增加高增益放大电路 。前些年常用μPC1373H、CX20106A等红外接收专用放大电路 。最近几年不论是业余制作还是正式产品 , 大多都采用成品红外接收头 。成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装 。均有3只引脚 , 即电源正(VDD)、电源(GND)和数据输出(VO或OUT) 。红外接收头的引脚排列因型号不同而不尽相同 , 可参考厂家的使用说明 。成品红外接收头的优点是不需要复杂的调试和外壳屏蔽 , 使用起来如同一只三极管.非常方便 。但在使用时注意成品红外接收头的载波频率 。红外遥控常用的载波频率为38kHz , 这是由发射端所使用的455 kHz晶振来决定的 。在发射端要对晶振进行整数分频 , 分频系数一般取12 , 所以455kHz÷12≈37.9kHz≈38kHz 。也有一些遥控系统采用36kHz、40 kHz、56kHz等 , 一般由发射端晶振的振荡频率来决定 。在本系统的中采用的是40 kHz的红外发射波 , 接收装置采用的是万能红外接收头IR1838 。
4.2 遥控码的编码格式
遥控码采用脉冲 , 不同的脉冲个数代表不同的码 , 最小为2个脉冲 , 最大为17个脉冲 。
为了使接收可靠 , 第一位码宽为3 ms , 其余为1 ms , 遥控码数据帧间隔大于10 ms , 其编码波形如图4所示 。
如图4所示 , 当某个操作键按下时 , 单片机先读出键值 , 然后根据键值设定遥控码的脉冲个数 , 再调制成40kHz的方波由红外线发射管发射出去 。在上述的发射电路中 , 一共设置了4个按键 , 其中S2 , S3 , S4 , S5的编码分别是电器码2 , 3 , 4 , 5 , 对于发射电路 , 每发送一个数据帧最短的时间间隔是10ms 。例如在按下S4时 , 即先发送3 ms的前导码 , 随后再发送5个1ms的脉冲 , 就表示按键S4被按下了 , 单片机红外接收电路在接收到一串串脉冲之后 , 通过软件完成对红外的解码 , 通过设置 , 每个编码对应于电动机不同的操作 , 比如2这个编码 , 那么单片机的P0口输出00000000 , 再经过DAC0808之后 , 输出电压为0 , 这样电动机就可以停止工作了 。类似的编码3 , 4 , 5分别对应直流电机的低速 , 中速和高速的操作 。
4.3 单片机红外发送和接收程序
由于程序较长 , 所以在本设计中只给出部分的核心的红外发送和接收程序 。关于红外的发送程序如下:

如上面程序所示发送函数是固定不变的 , 在发送函数中完成了编码的功能 , 在tx函数中 , 用到了一个swiCCh开关语句 , 分别对按键值的不同进行处理 , 例如当keyvol=2的时候 , 就发送3个脉冲信号 。
关于单片机的红外接收解码过程 , 其核心程序如下:
由面的解码程序可以知道 , 用到了一个中断接收的程序 , 其中remotein为临时变量 , 解码时的关键在于对脉冲个数的计量 , 这样keyvol的值就能很方便的读出来 , 再用到一个switch语句就可以分别对风速进行控制了 。
5 结束语
红外遥控的特点是不影响周边环境 , 不干扰其它电器设备 。由于其无法穿透墙壁 , 故不同房间的家用电器可使用通用的遥控器而不会产生相互干扰;电路调试简单 , 只要按给定电路连接无误 , 一般不需任何调试即可投入工作;编解码容易 , 可进行多路遥控 。由于各生产厂家生产了大量红外遥控专用集成电路 , 需要时按图索骥即可 。因此 , 现在红外遥控在家用电器、室内近距离(小于10m)遥控中得到了广泛的应用 。
在本设计中 , 利用2个单片机就可以实现短距离的控制 , 实际上其本质就是利用红外进行通信 , 并把通信的结果进行处理 , 反馈到最终的形式就是电扇风速的不同 。另外本设计还可以进行改进的 , 比如我们在考虑单片机的功耗时 , 因为用于红外接收的那个单片机在风扇停止工作的时候 , 单片机如果仍在工作 , 那么势必增加了系统的功耗 , 所以为了降低功耗 , 在用于红外接收的那个单片机中 , 应该添加一个待机模式 , 这样就大大降低了功耗 , 节省了能源 , 当有外部中断来的时候 , 才唤醒单片机 , 让它处于工作状态 , 这样就达到低功耗的目的了 。此外 , 若能在接收端加上一个测温系统 , 并把实时温度显示出来 , 用户根据目前环境的温度来对电扇进行操作 , 那就更好了 。
经Proteus电路仿真验证后 , 该系统运行良好 , 单片机的遥控电扇工作起来可靠性较高 , 用户可以在几米远的地方 , 就可以对电扇进行实时控制了 。该系统成本低廉 , 操作简单 , 随时可以根据软件编写新的功能 。操作按键可扩展性强 , 只要稍加改变 , 就可以增加几个按键的功能 , 本系统在当今提倡人性化设计和健康产品的环境下具有非常好的市场前景 。

    推荐阅读