学习型红外遥控灯座设计制作全过程
声控开关给人们的生活和工作带来了极大的方便,但是在住宅居室中使用声控开关却很不现实,比如在卧室里装一个声控开关,若有的人晚上睡觉打鼾时或有点什么动静就有可能把灯震亮,影响人们的睡眠,有时甚至能吓到人,如何能设计出一个适用于家庭中使用的方便控制灯的装置呢?我发现人们在睡觉时床头常会放着个红外遥控器,怎么用它来控制头顶上的灯呢?这种装置必须用指定的几个键去进行控制,否则会干扰用电设备,因此它必须具有设定功能也就是学习功能,综合考虑笔者决定选用单片机来制作。
单片机的选型笔者决定选用STC的11F02E,理由如下。
(1)因为做这种电路用的I/O口不多,有红外信号输入,控制输出,按键控制,指示灯等,STC11F02E有16个引脚的,而且价格比较便宜,仅为每片2.8元左右。因此在电路板的体积和整体成本上比较合适。
(2)STC11F02E的I/O口可以设置多种输出模式,比如设置成推挽输出每个I/O口可提供20mA的电流,在驱动晶闸管时又省去了三极管驱动电路,可以节省一项开支。
(3)STC11F02E最主要的一个特点是其内带2KB的EEPROM数据存储器,单片机学习的红外编码可以存储到里面,掉电后不至于丢失,又省去了存储器,真是再好不过了。
(4)STC的单片机号称是单时钟/机器周期的单片机,高速/低功耗/超强抗干扰,这对系统的稳定性也有了保障。
(5)STC11F02E是宽电压单片机,电压范围4.1~5.5V,对电源的要求不是很高。
(6)它还有2KB的程序存储器和众所周知的ISP在线编程,无法解密等特点。
图2.1所示是STC11F02E引脚图。
电路原理1.电路要实现的功能
(1)不要买遥控器,用家里的电视机、DVD、空调的遥控器都可以。
(2)可以设置学习键,按下按键后就开始学习,学习遥控器上的两个键,第一个是电源打开键,学习成功后LED指示灯会变亮,再按下一个键就是电源关闭键,学习成功后LED指示灯会变灭,松开学习键学习结束,学习到的码会存储到单片机的EEPROM内,即使掉电重启后也不会丢失。这对家庭很方便,因为电视机总有一些键不经常用,我们可以把它们设置为灯的开关键。以后在睡觉前用遥控器把电视机关掉的同时,顺便就把电灯关闭了。
(3)为了避免找不到遥控器,电路设计为重启后电灯为亮的状态,因此还可同时用墙壁开关控制。
(4)电源是由降压电路直接供给,因此除了支持白炽灯还可以支持节能灯,挺完美的。
2.硬件主电路原理
图2.1 STC11F02E的引脚排列
图2.2 电路原理
硬件电路原理如图2.2所示,这个电路非常简单,IC1是主芯片STC11F02E单片机。这款单片机有内部晶体,但是红外接收要求频率准确性很高,所以采用外部晶体,B、C5、C6组成单片机的外部晶振电路。C7和R3是简单的上电复位电路。VD4是发光二极管,用来在学习和点亮时做指示,R8是它的限流电阻,采用灌电流点亮方式。用单片机的P1.1口作为推挽输出直接控制双向晶闸管MAC97A6从而来控制灯的亮灭,R7是它的限流电阻。S1按键是用来学习时用的,R4是防干扰的。IC2、C8、R6是红外接收电路,接收红外遥控信号,红外接收头型号为HS0038、C8和R6也是为了防干扰。
图2.3 焊接好的电路
图2.4 用腐蚀法制作的电路板
图2.5 把电路板放入灯座内
当电路接通电源后LED指示灯会闪一下,然后按住学习键S1不要松开,同时拿家庭遥控器把想要设为打开灯的按键按一下,如果指示灯亮说明此按键学习成功,然后把遥控器上想要设为关灯的按键按一下,此时指示灯灭说明学习成功,松开学习键就学习成功,安上灯泡就可以用家庭遥控器控制灯了。它的实物见图2.3。
所用元器件也非常之少,可以把它做成板子然后放入灯座内,图2.4所示是我用远古的办法腐蚀的板子,放入灯座内正好,图2.5、图2.6所示是成品使用的情况。
3.电源电路原理
经过测试发现此电路运行时最大电流不过15mA,而在待机状态下只有6mA,非常省电。为了缩小成本和体积我选择了电容降压电源电路,此电路可提供5V/25mA电源,供这个小电路是绰绰有余呀!
图2.6 用遥控器打开电灯
图2.7 电源电路
电容降压式简易电源的基本电路见图2.7。C1为降压电容器,宜采用无极性的金属膜电容,VD1为半波整流二极管,VD2在市电的负半周时给C1提供放电回路,R1为关断电源后C1的电荷泄放电阻。整流后未经稳压的直流电压一般会高于30V,并且会随负载电流的变化发生很大的波动,VD3将电压稳到12V,然后由C2滤波,为了确保电源质量在后级加入78L05稳压器,它体积虽小但能提供300mA的电流,再加入电容C4,电源就基本为5V稳定电源了。
程序原理程序流程见图2.8,编程注意事项如下。
图2.8 程序流程
(1)STC11F02E单片机编程时与51单片机有所不同,因为它内部多了一些特殊功能寄器,在编译时必须声明地址。
sfr P1M1=0X91;
sfr P1M0=0X92;//声明P1口的软件配置工作类型寄存器地址
sfr AUXR=0X8E;//声明AUXR寄存器地址
sfr IAP_DATA=0XC2;
sfr IAP_ADDRH=0XC3;
sfr IAP_ADDRL=0XC4;
sfr IAP_CMD=0XC5;
sfr IAP_TRIG=0XC6;
sfr IAP_CONTR=0XC7;//声明 EEPROM 存储器所用寄存器地址
(2)由于此单片机可以设置输出端口为推挽输出,此时输出电流每个I/O口可提供设置输出口电流20mA用以驱动双向晶闸管,P1口的I/O口输出模式需要设置P1M1、P1M0寄存器,设置方法见表2.1。
表2.1 I/O口输出模式设置方法
图2.2所示的P1.1控制双向晶闸管,需设为推挽输出,其他口设为准双向口所以P1M1=00000000 P1M0=00000010。C 语言程序写为P1M1=0X00; P1M0=0X02;
扩展应用这种原理实现后发现它不仅仅只是用以遥控控制灯,还可以改变输出控制部分来控制电机、设备、电视等,或用于危险防爆场所,或改变输出端口控制多路等。
此电路做成功后试验两个星期工作正常,大家可以做着玩玩,元器件清单见表2.2。
表2.2 元器件清单