学习型红外遥控灯座设计制作全过程
声控开关给人们的生活和工作带来了极大的方便,但是在住宅居室中使用声控开关却很不现实,比如在卧室里装一个声控开关,若有的人晚上睡觉打鼾时或有点什么动静就有可能把灯震亮,影响人们的睡眠,有时甚至能吓到人,如何能设计出一个适用于家庭中使用的方便控制灯的装置呢?我发现人们在睡觉时床头常会放着个红外遥控器,怎么用它来控制头顶上的灯呢?这种装置必须用指定的几个键去进行控制,否则会干扰用电设备,因此它必须具有设定功能也就是学习功能,综合考虑笔者决定选用单片机来制作。
单片机的选型
笔者决定选用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 元器件清单
华为单片机编程实战-无线红外探测器03-环境搭建及程序详解
一、红外探测器需要实现的主要功能:
· 红外报警检测
· 电池低压检测
· 防拆开关检测
· OOK无线发射
· 设备低功耗设计
二、搭建软件开发环境
本产品的主控芯片是STC15W204S 。
1. Keil软件的安装
关于Keil C51的安装我在这里就不给大家介绍了,这块视频教程大家直接在小破站搜华维单片机编程,看单片机c语言编程视频教程第4节即可。
2.安装STC的库文件到Keil软件里
①打开STC-ISP软件
图片1
②选择Keil仿真设置-> 增加型号和头文件到Keil中,如下图。
图片2
③选择Keil C51的安装目录,点击确定
图片3
④安装完成
图片4
3. 项目工程新建:
双击Keil 软件图标,打开软件
图片5
选择Project ->new uvision Project…
图片6
选择工程文件夹,给工程命名 ,然后点击确定 。
图片7
选择单片机对应的型号,如下图,点击OK
图片8
新建main.c 文件,并添加到工程中,在这里就给大家不介绍了。
三、软件设计
这里会对每个模块的代码进行详细讲解,整体源代码可以在公号华维单片机编程拿到。
1.红外报警检测
我们先看一下硬件接口:
图片9
图片10
· 逻辑分析:
1. 无线红外报警触发的逻辑,我们在硬件设计中,已经有讲过, 如果红外报警PIR_ALARM 脚会有一个下降沿信号。
2. PIR_ALARM 连接到单片机的P3.6,也是单片机的外部中断2功能脚。
3. 单片机平时需要进入休眠状态,所有红外报警需要使用外部中断唤醒功能。
· 我们先了解一下单片机的IO寄存器和外部中断2寄存器配置:
IO的寄存器介绍:
STC单片机的IO有3个寄存器。例如P3.6 包括P3, P3M0、P3M1。
其中P3M0、P3M1是用来配置单片机IO的模式的具体如下:
图片11
无线红外报警器的P3.6口,我们配置为准双向口即可。
P3 口和传统51单片机的功能是一样的,P3的输入输出端口。
外部中断2的寄存器介绍:
STC15W系列单片机的INT2只支持下降沿中断。详细的信息大家可以查阅STC15系列单片机的规格书。
外部中断2相关的寄存器INT_CLK0如下:
图片12
EX2= 1 打开外部中断2功能。
· 软件程序开发:
程序初始化:
图片13
外部中断2的中断服务函数
图片14
报警信号处理程序
图片15
2.电池低压检测
· 我们先看一下硬件接口:
图片16
关于单片机的低压检测电路,在硬件设计中,我们已经做过介绍,是下降沿报警触发。
Low_vot 和单片机的NIT4(P3.0),连接,A1是一个跳线帽,是为了防止低压检测线路对单片机的烧录有影响,导致无法烧录。
在程序烧录的时候,需要拔掉A1,完成烧录后需要恢复A1跳线帽。
· 相关寄存器介绍:
P3.6寄存器的功能关于单片机的低压检测电路,在硬件设计中,我们已经做过介绍,是下降沿报警触发。
P3.6IO的寄存器配置和2.1.3.1中的P3 端口的配置 一致,在这里就给大家不在重复讲解了。
电池低压检测的方式也是通过外部中,在这里用到的是外部中断INT4. 关于INT4的寄存器如下,配置方法和INT2一样:
图片17
· 软件程序开发:
程序初始化:
图片18
外部中断4的中断服务函数
图片19
报警信号处理程序
图片20
图片21
3.防拆开关检测
· 我们先看一下硬件接口:
图片22
· 逻辑分析:
防拆开关S1和R14 组成了产品的防拆功能。 其中R14是上拉作用。
防拆开关按下去防拆开关的1脚和2脚连接,单片机的P3.3是高电平,如果防拆开关松开,1脚和3脚连接,P3.3变成低电平。
即: 触发防拆开关,P3.3由高电平变成低电平(下降沿触发);
P3.3是单片机的外部中断1接口(INT1).检测红外防拆报警就是外部中断1的下降沿中断。
· 相关寄存器介绍:
单片机P3.3 端口的配置
相关配置和低压检测,红外报警检测一致。
外部中断1 相关寄存器介绍
外部中断1 我们需要配置的寄存器包括IE中断允许寄存器,和TCON 定时器/计数器中断控制寄存器。详细如下:
图片23
在我们的防拆程序中使用的外部中断1的控制为EX1 需要置为1,打开外部中断1.
图片24
图片25
单片机的外部中断1 可以配置成上升沿触发,或下降沿触发。 该寄存器中的IT1=1表示外部中断1为下降沿触发 ;IT1=0 表示为上升沿触发。我们产品中使用的是下降沿触发,所有IT1 需要配置成1。
· 软件程序开发:
程序初始化:
图片26
外部中断1的中断服务函数
图片27
图片28
报警信号处理程序
图片29
4.OOK无线发射
图片30
· 我们先看一下硬件接口:
· 图片31
从原理图的图纸大家可以看到,无线发射数据和单片机的P3.2脚位连接。
· 学习了解一些EV1527 OOK的无线数据
在程序开发之前,大家首先要学习一下无线数据发射的格式和定义。大家可以在网上百度下载ev1527 芯片资料 ,然后对照我们后面的内容浏览,可以帮助更有效的理解OOK无线数据发射。
我们先看一下数据格式,如下图。
· 图片32
从上图我们可以看出,芯片的数据内容是 :同步码+20bit地址+4bit数据码。
20bit +4bit =24bit = 3byte。
从上图,我们可以看到有一个单位LCK. 那LCK的定义是什么,时间是多久?
1LCK = 8个0SC CLOKC.
我们在看一个表格,如下,这个表格定义了16个LCK的时间,从而我们就可以算出1个CLK的时间:
· 图片33
从表格可以看出,LCK的时间和 工作电源,以及前面的振荡电阻(47K-360K)有关。
本产品选择的是330K的振荡电阻,工作电压是12V。 所有我们可以锁定16LCK的时间为1.44ms. 那一个LCK= 90微妙。
我们计算一下同步信号,1,0 的信号。
同步信号: 4LCK高电平,128LCK 低电平 即: 360us 高电平 11.52ms低电平
数据1: 12LCK 高电平,4LCK 低电平 即: 1.08ms高电平 360us 低电平
数据0: 4LCK 高电平,12LCK 低电平 即: 360ms高电平 1.08ms 低电平
OOKSent 脚位发出的波形如下:
· 图片34
· 程序代码设计
需要实现OOK无线数据的发射,需要使用到单片机的定时器 和IO输出两个功能。
单片机的IO 配置
单片机的IO 默认是 准双向输入输出端口,我们在程序里就不配置了,我们直接将OOKSent 拉低即可。
程序如下:
· 图片35
定时器配置
本产品中我们使用的是单片机的定时器0. 我们先了解一下单片机相关的寄存器
定时器的相关寄存器:
· 寄存器AUXR ,
· 配置定时器0的工作频率,T0X12 = 0 12T模式,=1为1T模式。我们选择12T模式
· 图片36
· 寄存器TMOD 定时器工作模式寄存器
· 图片37
· 图片38
我们产品中配置为16为自动重装定时器. C/T 和GATE 直接置0 即可。
· TH0 TL0寄存器
定时器0的计数器,数据自动增加到FFFF 溢出,发生中断。
· 定时器控制寄存器TCON
· 图片39
· 图片40
TF0:定时器0中断溢出位。TH0 TL0中的数据增加到FFFF时,TF0 就置为1,需要手动清0
TR0: 定时器0 的开关控制位。=1打开定时器0 =1 关闭定时器0
· 中断允许寄存器IE
· 图片41
ET0 = 0: 定时器0溢出标志位TF0=1 的时候,程序就不会自动进入中断服务函数
ET0 = 1: 定时器0溢出标志位TF0=1 的时候,程序就会自动进入中断服务函数
· 定时器初始化程序设计
定时器初始化:
· 图片42
注意,我们初始化的时候,定时器0 是关闭的,再我们使用的时候再打开。
无线数据中同步信号,数据1 、数据0数据长度的计算。
上小节分析了同步信号,和数据1 ,数据0的数据的时间长度如下:
同步信号: 4LCK高电平,128LCK 低电平 即: 360us 高电平 11.52ms低电平
数据1: 12LCK 高电平,4LCK 低电平 即: 1.08ms高电平 360us 低电平
数据0: 4LCK 高电平,12LCK 低电平 即: 360us高电平 1.08ms 低电平
从上面我们简单的总结一下,我们需要做3个延时 分别是: 360us 1.08ms 11.52ms。
下面我们计算一下3个延时定时器0的TH0 TL0 分别需要填充的数值:
360us 延时TH0 TL0对应的数值.(重要)
我们选择的是单片机的内部时钟5.5296Mhz,定时器时钟是12T ,我们可以计算出定时器一个计数值的时间,计算公式如下:
1S/5.5296MHZ*12 = 1S/5529600M0HZ*12 = 0.0000217S = 2.17uS。
360uS 延时需要的定时器的计数值 = 360/2.17 = 166.
那TH0 TL0填写的数值是多少? TH0 TL0的数值增加到0xFFFF 再增加1定时器溢出。
0xFFFF对应的65535,定时器0是计数到65536溢出。
所以我们需要用65536减去166 ,65536-166 = 65370。
然后转换成16进制,填充到TH0 TL0,
65370是十进制,我们需要转换成16进制 0xFF5A
TH0 = 65370/256; //FFH
TL0 = 65370%256; //5AH
1.08ms 延时TH0 TL0对应的数值
同样的原理,我们计算出1.08ms 对应的TH0 TL0寄存器对应的值
1.08ms/2.17us = 1080us/2.17us= 498 65536-498 = 65038
TH0 = 65038/256; //FEH
THL = 65038%256; //0EH
11.52ms 延时TH0 TL0对应的数值
同样的原理,我们计算出11.52ms 对应的TH0 TL0寄存器对应的值
11.52ms/2.17us = 11520us/2.17us =5309 65536-5309 = 60227
TH0 =60227/256; //EBH
THL = 60227%256; //43H
我们用宏定义来定义一下同步信号,数据1 和数据0。
· 图片43
OOK 无线发射数据的转换
上节计算出了同步数据,数据1,数据0的高低电平,以及对用的定时器填充的数据,接下来我们就需要把需要发射的数据转换成以下的波形。
· 图片44
在上面的章节中,我们分析了,OOK的无线发射数据内容是 :同步码+20bit地址+4bit数据码。
计算OOK无线发射数据,定时器0的寄存器TH0 TL0 需要的字节
同步码的 高电平和低电平,分别需要定时器0精准定时,分别占用2个字节,共4个字节.
20个地址+4位数据码 =24bit 数据。
每个数据要么是0,要么是1,0和1和同步信号一样,需要分别精准定时高电平和电平的持续时间,1个数字需要4个,共24位,则24*4 =96个字节。
所以存储一帧数据需要定时器的字节数位100个。
程序设计如下:
· 图片45
· 图片46
无线数据发射代码:
· 图片47
5. 设备低功耗设计
因我们的产品是电池供电,所以我们的程序需要做低功耗设计。
· STC15W单片机的工作模式。
STC15单片机支持3种省电模式,分别是:低速模式,空闲模式,和掉电模式。三种模式的典型功耗分别是 2.7mA-7mA, 1.8mA,<0.1A。 掉电模式的最小,我们选择的就是掉电模式。
· 掉电模式对应的寄存器介绍:
· 掉电控制寄存器PCON
· 图片48
· 图片49
· 程序设计:
· 图片50
公众号:华维单片机编程
至此,红外探测器代码部分就讲解完了,同学们可以收藏下来,有不懂的可以向我问答哈。
明天我们来讲讲“无线红外探测器04:产品测试及验证”
相关问答
智能循迹 红外 遥控车方案怎么做?这样的方案应该不少,现在做的比较成熟的方案应该是英唐众创的。智能循迹部分是基于红外反射式光电传感器的寻迹原理,采用STC89C52单片机为核心控制单元,控制...
本人大二学生,想玩 单片机 求推荐?我作为学习单片机的过来人,我来回答你的问题。现在市场上的单片机型号可谓是琳琅满目,像PIC单片机、AVR单片机、MCS-51单片机、STM32单片机等。如果你刚接触过...
俄罗斯“海鹰-10”无人机性能如何?“海鹰-10”无人机的发动机是日本齐藤公司的小型汽油发动机,这种发动机广泛的应用于航空模型上。卫星定位设备来自于瑞士U-blox公司,控制系统的单片机是中国晶...
大侠们谁知道 可批发的光敏电阻类型,光敏电阻排名怎么样来...这个的话不需要器件,在保证光敏电阻和红外灯都是好的情况下,就只有调试电路了。你这个的原因可能是光敏电阻不工作,即使外界环境光线很暗了,光敏电...
初学 单片机 需要准备哪些学习套件?一、材料篇单片机学习少不了的常用材料,最好配一块单片机开发板学习。在单片机的学习过程中,切不可有以下错误认识:1、看完学习视频后,认为自己这部分已经...C...
圣科sth70怎么样?红外线、紫外线阻隔效果非常好。圣科太阳膜产品细分为多个系列。STK系列、STH系列、STC系列、STP系列每一种都有其独特的优点。以圣科STH系列为例,STH系列太...
电子科技大学资源与环境学院怎么样?设有哪些专业? 申请方[回答]~接下来我为大家简单介绍一下我们电子科技大学的资源与环境学院开设的专业以及研究情况专业设置:环境工程-本科、空间信息与数字技术-本科学院简介:...
广州那里有买拜亚DT235的地方?电子元件!大学城北亭就有得买了,大学城清一色电子元件店.主营:常用芯片(如74系列,CD系列,LM,单片机等)、电阻(碳膜、水泥)、电容、电位器、二极管、...
装修问题,做天花板隔音效果明显吗###1.第一层:铺设防火隔音毡为高比重1mm重量3.5公斤隔音为STC25dBA、2mm重量7公...2、吊顶画线,标明龙骨测量作业空间,用红外线测量仪在吊顶上画线,标明天花减...
不锈钢伸缩门电子装置功能有哪些呢?[回答]变频启动:电子软启动与机械缓冲装置配合使用,不伤电机;门体启动时自行调节电源频率,可使速度由低逐步达到电机输出常速,避免启动时产生机头晃动,摩...