摘 要:智能窗帘作为智能家居的一个重要部分,其智能化的程度直接影响人们的日常生活水平。文章以STC89C52单片机为主控制核心芯片,研究和设计带红外遥控、自定义时间控制、光照强度控制、手动控制功能的智能窗帘控制系统,实现窗帘的自动和半自动开合。文章以汇编语言为源程序进行软件设计,通过Protues软件进行硬件设计与仿真,并最终完成智能窗帘的模型制作。
关键词:智能窗帘;单片机;红外遥控;光照强度控制;自定义时间控制;手动控制;LCD1602显示;直流电机;汇编语言;按键;Protues仿真
目前,常用的窗帘轨道都是拉绳轨道或滑轨式,当窗户面积大、窗户高或安装厚重的窗布时,采用手动或者拉绳都比较费力、费时,效率低下,并且容易导致帘布损坏。智能窗帘控制系统具备丰富的智能化控制功能,这些智慧化的功能更加人性化,比如温控功能、光控功能、遥控功能、预警功能等不需要人为操作就可以根据外界环境的变化自动控制窗帘的启闭。研究开发这些智能化的功能都将为家庭营造一个高效、舒适、温馨、安全、便捷的居住环境,进而改善和提高人们的生活质量。
关键词:智能窗帘;单片机;红外遥控;光照强度控制;自定义时间控制;手动控制;LCD1602显示;直流电机;汇编语言;按键;Protues仿真
1绪论
1.1智能窗帘研究的意义
智能窗帘[1-6]作为智能家居[22-23]的重要组成部分,与人们的日常生活息息相关。其智能化程度直接影响人们的生活水平。近年来随着物联网[7-8]技术的迅速发展,智能家居成为家庭信息化和社会信息化发展的重要组成部分。智能家居控制系统[9-10]的应用让人们在家中就能享受到更安全、更舒适、更方便、更高效的生活。而在现代家居中,窗帘具有良好装饰、采光、通风、防尘、挡雨等作用,是家居生活必不可少的重要组成部分,智能窗帘控制系统的设计思想也就在这种形势下应运而生。目前,常用的窗帘轨道都是拉绳轨道或滑轨式,当窗户面积大、窗户高或安装厚重的窗布时,采用手动或者拉绳都比较费力、费时,效率低下,并且容易导致帘布损坏。智能窗帘控制系统具备丰富的智能化控制功能,这些智慧化的功能更加人性化,比如温控功能、光控功能、遥控功能、预警功能等不需要人为操作就可以根据外界环境的变化自动控制窗帘的启闭。研究开发这些智能化的功能都将为家庭营造一个高效、舒适、温馨、安全、便捷的居住环境,进而改善和提高人们的生活质量。
在国外发达国家智能窗帘已经相当普及,而在国内中低收入的家庭中仍使用着传统的手拉式窗帘,高收入家庭也仅有一部分采用电动窗帘。造成这种情况的原因不仅是智能窗帘高昂的价格(如果一副窗帘配两个电机,电机为400元左右,轨道80元一米,如果一个窗户3米宽,则装自动窗帘的成本大概是:2*(400+3*80)=1280元,遥控另算一般40元左右,总成本在1400—1700之间),开发、设计水平与国外相比也还存在一定的差距。因此,研发和设计价格低且智能化的窗帘对人们的生活质量、经济以及电子技术的发展都具有非常重要的意义。
1.2智能窗帘的研究现状
窗帘的发展大致包括四个阶段:原始窗帘阶段、无滑动固定式窗帘阶段、手拉或滑轨式窗帘阶段、智能窗帘阶段。国内窗帘的研究已经进入智能窗帘的研究阶段。但研究还并不深入,许多领域都需要进一步探索与拓展,功能和稳定性还需要进一步完善。国内智能窗帘的研究已经实现了多功能性,譬如单控、群控[11];光控[12-14]、雨控[15]、遥控(红外遥控)[16-17]等等,对于高端产品的开发已经进入智能家居阶段,即智能窗帘作为智能家居研究的一部分,与其它家居电器一起利用无线网络技术或者蓝牙技术通过远程终端进行控制,最常见的远程终端包括计算机和手机。国外对窗帘的研究也处于智能窗帘的研究阶段,其技术相比于国内更加成熟,但就智能窗帘的发展而言,还有许多技术和功能需要进一步研究和开发。
智能窗帘的研究不仅可以改善人们的生活质量,为用户提供一个舒适、安全、便捷的生活环境,同时也能为一些企业带来新的发展机遇。譬如为房地产业带来新的购房概念与卖点,促进电子技术、物联网技术产业的进一步发展。随着智能家居的发展,智能窗帘必将逐渐代替普通窗帘,甚至走在智能家居的前列。以目前智能窗帘的应用趋势与智能家居的应用相比,也的确如此。因此,智能窗帘具有良好的发展潜力与发展趋势。
1.3本文涉及的基于单片机智能窗帘控制系统的概述
1.3.1基于单片机智能窗帘控制系统的组成
本系统主要组成部分包括:单片机、红外遥控模块、定时控制模块、光控模块、LCD液晶显示模块、电机驱动、按键操作等部分,其总体框架见图1。
单 片 机 |
红外遥控模块 |
定时控制模块 |
光控模块 |
按键操作 |
LCD液晶显示 |
直流 电机 |
电源 |
电机驱动 |
图1 系统总体框架图 |
< >单片机模块红外遥控模块定时控制模块光控模块按键操作模块LCD液晶显示电机驱动模块1.3.2本文所研究的主要内容本文主要研究的内容包括:
< >窗帘控制系统的硬件设计。主要介绍窗帘控制系统所选取的硬件及其功能和详细参数。采用STC89C52单片机为主控制中心。此外,还介绍了红外遥控模块、自定义时间控制模块、光照信息采集模块、LCD液晶显示模块、按键操作模块、窗帘驱动模块的硬件设计。红外遥控技术。系统功能的一部分是通过红外遥控板发射红外信号,通过红外信号的收发以及主控制单片机对接收的红外信号进行处理,来控制电机的转动。本系统未采用现成的红外发射芯片,而是利用另一块单片机(STC89C52)自行设计红外发射电路,因此,设计好红外发射模块,并按照预先规定的协议进行通信,才能够实现电机的转动,窗帘的开闭。定时控制技术。系统拟用时钟芯片与单片机相结合以实现用户对时间的随意设定,对日期的任意调整。LCD液晶显示。液晶显示屏主要显示日期及具体的时间,进行自定义时间设定时,显示用户将要设定的开闭窗帘时间。之后再回到正常时间的走时。进行时间模式调整时,将显示用户将要调整的日期和时间。软件设计。本文采用汇编语言进行软件设计。汇编语言具有目标代码简短、占用内存少、执行速度快的特点,它是高效的程序设计语言。系统需要处理红外信号、光照信号、按键操作等传来的各类信息,需要控制电机的转动以及LCD液晶的显示,如何做好软件设计是系统实现的关键。进行窗帘模型制作,对系统进行调试。2系统硬件电路设计
2.1系统总体设计
本系统以窗帘为模型,通过单片机控制电机的转动,进而控制窗帘的开闭。系统采用两个直流电机,通过电机驱动分别控制左右窗帘的收缩。系统的默认控制模式为自定义时间控制模式,当有红外遥控信号或者光控信号要求时,系统转向新的要求模式进行工作。窗帘主控部分搭载有51单片机最小系统、红外接收电路、定时模块、光照传感模块、按键模块、LCD显示模块、电机驱动模块。副控制部分为红外发射模块,由单片机(STC89C52)最小系统、按键、红外发射电路组成。整个系统分为四种工作模式:< >红外遥控模式自定义时间模式光控模式手动模式
图 2 系统总体方案图
红外接收模块 |
单片机 |
窗帘驱动 |
光照信息采集 |
时钟芯片 |
发射红外信号 |
LCD显示 |
2.2电源模块
窗帘控制系统中需要供电的模块有:单片机最小系统模块、红外信号发射模块、自定义时间控制模块、光照采集模块、LCD液晶显示模块、电机及电机驱动模块。电机驱动模块需要使用双电源供电(5V、9V),单片机及其它模块需要5V直流电压,本系统采用单相桥式整流电路。此电源电路通过单相桥式整流电路和稳压电源芯片7805、7809,把交流220V电压整流为5V和9V直流电压。220V的交流电压通过变压器,将电压降低,然后通过单相桥整流电路将交流电能转换成直流电能,图中的电容起滤波作用,最后通过稳压芯片输出稳定的直流电源,具体电路如图3。
|
2.3电机及电机驱动模块
2.3.1电机模块
窗帘的运动是靠直流电机的转动来实现的,因此,控制直流电机的转动方向就能控制窗帘的打开与闭合。直流电机的工作原理:直流电机中固定有环状的永磁体,电流通过电机转子上的线圈就产生洛伦兹力,洛伦兹力带动电机旋转。当电机转子上的线圈平行于磁场时,若此时电机继续转动,其受到的磁场方向将发生改变,此时因为转换片与转子末端的电刷交替接触,从而线圈上的电流方向也发生改变,线圈上的电流方向与磁场方向同时发生改变,产生的洛伦兹力方向却不发生改变,从而电机能保持同一转动方向不发生改变。因此,只要改变流入电机的直流电流的方向,就能改变电机的转向。
本设计采用的是微型直流电机,其额定电压为3V~ 9V,空载时转速为6800 ~16800转/分,额定电流250 ~ 420mA。直流电机具体参数如表1。
表1 直流电机参数
属性 | 参数 | ||
工作电压 | DC 3V | DC 6V | DC 9V |
工作电流 | 2500mA | 350mA | 420mA |
空载速度 | 6800rmp | 11000rmp | 16800rmp |
负载速度 | 20rmp | 147rmp | 170rmp |
重量 | 63g | ||
外形尺寸 | 30.5mm*24.2mm*12mm | ||
噪声 | <65db |
2.3.2电机驱动模块L298N[19-20]
电机驱动模块使用电机驱动芯片L298N,L298N是双全桥电机驱动芯片,可以驱动46V、2A以下的电机,内部含2个H-Bridge的高电压、大电流双全桥式驱动器,能接收标准TTL逻辑准位信号,且可以直接透过电源来调节输出电压。芯片内部包含4信道逻辑驱动电路,可同时驱动1个4相或2个二相电机,该芯片可直接由单片机的IO端口提供模拟时序信号。由于电机正常工作时对电源的干扰很大,只用一组电源供电会影响单片机的正常工作。所以使用该芯片时要接双电源。一组5V电源给单片机和控制电路供电,另一组5V、9V电源分别供给L298N的+Vss、+Vs(分别是L298N的9、4引脚)。电机驱动芯片L298N如图4。
|
产品参数见表2所示
表2 L298N的运行参数
参数 | 符号 | 测试环境 | 最小值 | 典型值 | 最大值 | 单位 |
驱动电源电压 | Vs | 持续工作 | 2.5 | -- | 46 | V |
逻辑电源电压 | Vss | -- | 4.5 | 5 | 7 | V |
输入低电平电压 | ViL | -- | -0.3 | -- | 1.5 | V |
输入高电平电压 | ViH | -- | 2.3 | -- | Vss | V |
使能端低电平电压 | Ven=L | -- | -0.3 | -- | 1.5 | V |
使能端高电平电压 | Ven=H | -- | 2.3 | -- | Vss | V |
全桥式驱动器总的电压降(每一路) | VcE(sat) | IL=1A IL=2A |
1.8 | -- | 3.2 4.9 |
V |
检测电压1,15脚 | Vsen | -- | -1 | -- | 2 | V |
L298N与单片机、直流电机连接的原理图如图5。
C |
ENB |
IN1 |
IN3 |
L298N |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Vcc |
+5V |
IN4 |
IN2 |
ENA |
MOTO1 |
直流电机1 |
直流电机2 |
MOTO2 |
OUT3 |
OUT1 |
OUT2 |
OUT4 |
D5 D6 D7 D8 |
D1-D8:3A 400V |
接单片机 |
接单片机 |
接单片机 |
接单片机 |
接单片机高 电平有效 |
图5 L298N接线原理图 |
本系统设计的电机驱动电路如图6所示。电容C7和C9是较大的电解电容,起滤波作用,C8、C10用于消除电路高频有害信号。图中的8个二极管用于保护电机驱动芯片L298N。电机是感性负载,当电感线圈通电后再断电时,绕组两端会产生一个比电源电压高N倍,极性与电源电压相反的反相电压,即自感电动势。这个反相电压会加在L298N的功率开关器件上,将L298N的功率开关器件击穿烧坏,所以要用8个二极管建立一个泄放通道,将绕组自感电动势产生的高电压和电流释放。
|
管脚接口说明如表3
表3 管脚接口
电机驱动L298输入端口 | 电 机 |
IN1 IN2 | 电机M1 的控制端 |
IN3 IN4 | 电机M2 的控制端 |
ENA | 电机M1 的使能端 |
ENB | 电机M2 的使能端 |
表4 控制端的使用说明
IN 1 | IN 2 | EN A | IN 3 | IN 4 | EN B | 电机 |
-- | -- | 0 | -- | -- | 0 | 不转 |
0 | 1 | 1 | 0 | 1 | 1 | 正转 |
1 | 0 | 1 | 1 | 0 | 1 | 反转 |
1 | 1 | 1 | 1 | 1 | 1 | 制动 |
0 | 0 | 1 | 0 | 0 | 1 | 制动 |
表5 单片机与L298N芯片的接口
单片机引脚 | L298N端口 | 电机引脚 |
P1.3 |
IN2 | 控制MOTO1 |
IN3 | 控制MOTO2 | |
P1.2 | IN1 | 控制MOTO1 |
IN4 | 控制MOTO2 | |
P1.1 | ENA | MOTO1使能 |
ENB | MOTO2使能 |
2.4自定义时间控制模块
本系统选用时钟芯片DS1302[21]、LCD1602及按键完成时间自定义控制模块的设计。DS1302为低功耗、高性能时钟芯片,它能够完成年、月、日、周、时、分、秒的计时,具备闰年补偿功能。DS1302最基本的功能是记录时间数据,对于某些具有特殊意义的数据点,DS1302在记录数据的同时也记录下了出现该数据的时间。这种特殊功能对于需要长时间连续测控的系统以及对异常数据出现的原因的查找有重要的意义。时钟芯片DS1302如图7。
|
DS1302的内部结构如图8
Data Bus |
I/O |
SCLK |
RST |
AD BUS |
X1 |
振荡器与分频器 |
输入移位 寄存器 |
实时时钟 |
命令与控制逻辑 |
31x8 RAM |
X2 |
32.768KHz |
图8 DS1302内部结构图 |
DS1302工作电压工作范围:2.5~5.5V,其采用三线接口方式与单片机进行同步通信,并且可采用突发方式一次传递多个字节的RAM数据、时钟信号,DS1302内部有一个31x8的临时存放数据的RAM寄存器。DS1302引脚功能如表6.
表6 DS1302引脚功能表
引脚号 | 引脚名称 | 功能 |
1 | Vcc2 | 主电源 |
2、3 | X1、X2 | 振荡源,外接32.768KHz晶振 |
4 | GND | 地线 |
5 | RST | 复位/片选线 |
6 | I/O | 串行数据输入/输出端(双向) |
7 | SCLK | 串行时钟,输入,控制数据的输入与输出 |
8 | Vcc1 | 后备电源 |
DS1302命令控制字:
7 6 5 4 3 2 1 0
1 | RAM/CK | A4 | A3 | A2 | A1 | A0 | RD/W |
Bit0 W/RD:读写选择位,0 写操作,1 读操作
Bit1~Bit5:内部时钟寄存器地址或RAM地址
Bit6 RAM/CK:时钟/日历或RAM数据选择位,1选择RAM,0选择时钟
Bit7:必须为1,0禁止使用此芯片
DS1302的寄存器地址及寄存器内容如表7所示
表7 DS1302的寄存器地址及内容
寄存器地址 | 寄存器内容 | ||||||||||||||||||
秒 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | RD/W | 80H | 00-59 | CH | 10秒 | 秒 | |||||
分 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | RD/W | 81H | 00-59 | 0 | 10分 | 分 | |||||
时 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | RD/W | 82H | 01-12 00-23 | 12/24 | 0 | 10/AP | 小时 | 小时 | |||
日 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | RD/W | 83H | 1-28/29/30/31 | 0 | 0 | 10日 | 日 | ||||
月 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | RD/W | 84H | 01-12 | 0 | 0 | 0 | 10M | 月 | |||
周 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | RD/W | 85H | 01-07 | 0 | 0 | 0 | 0 | 星期 | |||
年 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | RD/W | 86H | 00-99 | 10年 | YEAR | ||||||
读写操作的启动是通过控制RST端为高电平来完成的,操作步骤为:首先发送8位命令控制字,指明是读操作还是写操作以及指明读写的地址,数据的传输是从低位到高位依次顺序传输。
读操作具体过程:
< >启动准备:RST置低,SCLK置低启动读写开始信号:RST置为高电平发送要读取数据的地址的命令字节数据,如读年寄存器延时,SCLK置低读取年寄存器的数据读过程结束,清SCLK,RST置低。启动准备:RST为低电平,SCLK为低电平启动读写开始信号:将RST置为高电平发送要写入地址的命令字节数据,如写年寄存器延时,SCLK置低发送要写入年寄存器的数据写过程结束,清SCLK,RST置低
|
|
|
|
|
|
|
R/W A0 A1 A2 A3 A4 R/C 1 |
读操作时序 |
RST |
SCLK |
I/O |
写操作时序 |
RST |
SCLK |
I/O |
|
|
|
|
|
|
|
|
R/W A0 A1 A2 A3 A4 R/C 1 |
|
|
|
|
|
|
|
|
D0 D1 D2 D3 D4 D5 D6 D7 |
图9 DS1302单字节读写时序 |
自定义时间控制模块的完成还需要显示模块显示对时间的操作,本系统使用的是2行16个字的LCD1602液晶显示屏进行设计。LCD1602已经存储有字符图形,要使其显示出图形来,只需通过单片机编写要显示字符的代码以及在屏幕上显示该字符位置的代码,然后通过单片机I/O引脚将代码传送给芯片即可。LCD1602的控制指令如表8所示。
表8 LCD1602指令表
指 令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
清显示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
光标返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | -- |
置输入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
显示开/关控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
光标或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | -- | -- |
置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | -- | -- |
置字符发生存贮器地址 | 0 | 0 | 0 | 1 | 字符发生寄存器地址(AGG) | |||||
置数据存贮器地址 | 0 | 0 | 1 | 显示数据存贮器地址(ADD) | ||||||
读忙标志或地址 | 0 | 1 | BF | 计数器地址(AC) | ||||||
写数到CGRAM或DDRAM | 1 | 0 | 要写的数据 | |||||||
从CGRAM或DDRAM读数 | 1 | 1 | 0 | 0 | 1 | 要读的数据 |
LCD1602的内部显示地址如表9所示
表9 LCD1602内部显示地址
标号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
第一行 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F |
第二行 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 4A | 4B | 4C | 4D | 4E | 4F |
对LCD1602进行指令操作时都要判定忙标志位(BF),当忙标志位为低电平时才可以执行指令,否则指令无效。对LCD1602进行写入显示地址操作时,要求地址代码的最高位(D7位)必须恒为高电平。如要在第一行第一个字符位置处显示字符,那么其地址代码应为:
00000000(00H)+10000000(80H)=10000000(80H)。
本系统设计的时间自定义仿真电路如图10,X1、X2外接32.768KHz晶振,按键意义见表10。
表10 时间自定义模块按键意义
键名 | 意义 |
JIA | 调整年月日时分秒的加“1”时间 |
JIAN | 调整年月日时分秒的减“1”时间 |
MOSHI | 调整日期时间的选择按钮 |
KALARM | 开窗帘时间的选择按钮 |
GALARM | 关窗帘时间的选择按钮 |
|
2.5单片机模块
本系统的设计使用了两片单片机芯片,一片作为红外发射部分的主控制芯片,一片作为主电路核心控制芯片,类型均为STC89C52。本设计使用了单片机的定时/计数及中断功能,故主要介绍单片机端口的第二功能和中断特性。·P0口:P0口是地址/数据总线复用口,当用作I/O口使用时,要求接入10KΩ左右的拉高电阻。
·P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1.0、P1.1可分别作为定时/计数器2的外部计数输入(P1.0/T2)和(P1.1/T2EX).
·P2口:与P0口结合可用于外部端口扩展,P2口存储外部扩展地址的高8位数据。
·P3口:P3口的重要用途是它的第二功能,第二功能如表11
表11 P3口第二功能表
端口引脚 | 第二功能 |
P3.0 | RXD(串行输入口) |
P3.1 | TXD(串行输出口) |
P3.2 | INT0(外部中断0) |
P3.3 | INT1(外部中断1) |
P3.4 | T0(定时/计数器0外部输入) |
P3.5 | T1(定时/计数器1外部输入) |
P3.6 | WR(外部数据存储器写选通) |
P3.7 | RD(外部数据存储器读选通) |
表12 STC89C52中断控制
中断源 | 中断允许控制位 | 中断源入口地址 | 优先级 |
INT0 | EX0 | 0003H | 最高 最低 |
T0 | ET0 | 000BH | |
INT1 | EX1 | 0013H | |
T1 | ET1 | 001BH | |
串行口 | ES | 0023H | |
T2 | ET2 | 002BH |
2.6红外遥控模块
本设计的红外遥控模块由红外发射模块和红外接收模块组成,红外接收模块采用红外接收头HS38B。红外发射模块并未使用现成的红外发射芯片,而是结合单片机、按键、三级管、红外发射管自主设计。红外遥控模块系统总设计思路如图11。
红外发射控制 |
按键 |
编码及调制 |
红外发射 |
红外接收 |
解码并响应 |
主控制板上红外接收 |
图11 红外遥控设计思路 |
2.6.1红外发射模块
红外遥控发射部分系统框图见图12。红外发送部分利用单片机的定时中断功能,由定时器T1产生周期约26us的矩形脉冲,即每隔13us定时器T1产生一次中断,使单片机产生周期为38KHz的脉冲信号,此脉冲将作为载波信号,来调制将要发送的信号。按键设置有正转、反转、停止及待定义功能的按键。系统根据扫描到不同的按键值对发射脉冲编码赋值,并将该编码赋值信号调制在38KHz的脉冲上,经过PNP(2N5401)三级管将信号放大后驱动红外发光管,将控制信号发送出去。
STC89C52 编码、调制信号 |
按键 |
PNP信号放大 |
红外发光二极管 |
驱动 |
图12 红外发射系统框图 |
本设计红外发射部分电路如图13,使用Protues中的IRLINK模拟红外发光二极管,按键设置有正转、反转、停止以及两个待定义的按键。
|
发射的红外信号的仿真波形如图14所示
|
2.6.2红外接收模块
HS38B具备低功耗、高灵敏度、优良的抗干扰特性,适用于家用电器、玩具等红外遥控接收。其参数如表13。表13 HS38B光电参数
参数 | 符号 | 测试条件 | Min | Typ | Max | 单位 |
工作电压 | Vcc | -- | 4.5 | -- | 5.5 | V |
接收距离 | L | L5IR5IF=300mA | 10 | 15 | -- | m |
载波频率 | f0 | 38K | Hz | |||
接收角度 | θ ½ | 距离衰减½ | +/-45 | Deg | ||
BMP宽度 | fBW | -3Db Bandwidth | 2 | 3.3 | 5 | KHz |
静态电流 | Icc | 无信号输入时 | -- | 0.8 | 1.5 | mA |
低电平输出 | VOL | Vin=0V Vcc=5V | -- | 0.2 | 0.4 | V |
高电平输出 | VOH | Vcc=5V | 4.5 | -- | -- | V |
输出脉冲宽度 | TPWL | Vin=500µ VP-P※ | 500 | 600 | 700 | µ |
TPWH | Vin=500m VP-P※ | 500 | 600 | 700 | µ |
图15 红外接收电路 |
VCC |
C 22pF |
HS0038 |
3 2 1 |
P3.1 P3.2 |
GND |
|
2.7光控模块
光控模块选用光电传感器ULN-3330来完成。ULN-3330集合了光敏二极管、低电平放大器、电平探测器、输出功率驱动器和稳压电路。当ULN-3330顶部光照大于50Lx时,其引脚输出高电平,负载上无电流,当光照小于45Lx时,其输出引脚输出低电平,负载上有电流。光电传感器ULN-3330直接输出数字信号,它可以和单片机直接连接,不需要模数转换电路。ULN-3330具体参数见表14。表14 ULN-3330参数表
电气特性:T=+25℃ Vcc=6.0V λ=880nm
参数 | 符号 | 测试条件 | Min | Typ | Max | 单位 |
工作电压 | Vcc | -- | 4.0 | 6.0 | 15 | V |
工作电流 | Icc | -- | -- | 4.0 | 8.0 | mA |
光阀值 | Eon | 输出打开 | 45 | 55 | 65 | µW/c㎡ |
Eoff | 输出关闭 | -- | 62 | -- | µW/c㎡ | |
磁滞 | ΔE | (EoFF-Eoff)/EoFF | 10 | 13 | 16 | % |
输出电压 | VOUT | IOUT=15mA | -- | 300 | 500 | mV |
IOUT=25mA | -- | 500 | 800 | mV | ||
输出电流 | IOUT | VOUT=15V | -- | -- | 1.0 | µA |
输出下降时间 | tf | 90%—10% | -- | 200 | 500 | ns |
输出上升时间 | tf | 10%—90% | -- | 200 | 500 | ns |
|
3系统软件设计
3.1系统软件总体设计
要实现系统的功能,软件设计是本系统的关键所在。本文利用Keil uVision3和Keil uVision2结合汇编语言进行软件设计。由于本系统的软件设计较为复杂所以本系统采取模块化软件设计,对各功能部件进行分块软件设计。系统软件模块包括红外发射模块、红外接收模块、时间自定义定时模块、光照采集模块、LCD1602液晶显示模块、中断模块、窗帘运动模块。软件系统结构如图18。
软件系统 |
红外发射模块 |
LCD1602液晶显示模块 |
红外接收模块 |
时间自定义控制模块 |
光照采集模块 |
中断模块 |
窗帘运动模块 |
图18 系统软件设计结构图 |
图19 主程序流程框图 |
无 |
有 |
有 |
初始化 |
|
P3.2有无脉冲 |
有 |
有 |
|
无 |
无 |
|
P3.2有无脉冲 |
|
|
|
无 |
|
遥控模式 |
时控模式 |
无 |
|
P2.7有无低电平 |
|
开始 |
光控模式 |
有无定时信息 |
|
P2.7有无低电平 |
有 |
无 |
3.2红外遥控模式
3.2.1红外发射
红外发送端利用定时中断功能,由单片机定时器T1产生频率为38KHz(周期为26us)的相反矩形脉冲,发射部分单片机再将待发送的二进制信号编码脉冲调制在38KHz的脉冲基波上,通过红外发射管发射出去,就完成了红外发射功能。3.2.2红外遥控编码
红外编码采用不同脉宽宽度的二进制信号来实现。以脉宽为0.565ms间隔为1.685ms周期为2.25ms的信号代表二进制“0”;以脉宽为0.565ms间隔为0.56ms周期为1.125ms的信号代表二进制“1”,其编码波形如图20。
二进制“0” |
1.685ms |
2.25ms |
1.125ms |
二进制“1” |
0.56ms |
图20 二进制信号“1”“0”的编码 |
红外遥控编码脉冲信号包括引导码、识别码、按键码、识别反码、按键反码。本设计引导码作为起始码,由3ms低电平和5ms高电平构成该信号,如图21。
5ms高电平 |
3ms低电平 |
图21 编码脉冲引导码 |
识别码用于指示遥控系统的种类。按键码用于指明控制功能,红外接收单片机通过翻译按键码的数值来完成相应功能操作。按键反码与识别反码用于信号接收端校验信号在传输过程中是否产生差错。若产生差错则信号接收端将丢弃接收到的信号且等待下一次信号的接收。脉冲由32位“0”“1”的二进制数组成,前16位控制指令控制不同的红外设备,由识别码和识别反码组成,后16位指明不同的操作功能由按键码与按键反码组成。串行数据码的时序图如图22所示。
图22 串行数据码发送时序图 |
5ms |
3ms |
按键码 |
引导码 |
识别码 |
识别反码 |
按键反码 |
3.2.3二进制信号的调制
二进制信号的调制是将待发送的信号(由发送单片机P3.5引脚的电平转换产生)调制在频率为38KHz(由定时器T1产生)的连续脉冲上。二进制信号的调制原理如图23。A代表待发送信号的编码波形,B代表38KHz的脉冲基波,C代表调制后的间断脉冲串(C=A&B)。(待发送编码假定为011)
图23 二进制信号调制原理图 |
二进制“0” |
二进制“1” |
二进制“1” |
A |
B |
C C=A&B |
3.2.4红外发射程序设计
红外发射主程序流程如图24。脉冲编码包括四个八位二进制,需调用四次数据发送子程序,最后以二进制数“1”表示结束码,若信号接收端接收完按键反码后接收到“1”信号,则代表本次数据发送结束。反之接收端将丢弃已经接收到的信号等待下一次信号的传送。
|
开始 |
延时 |
四个八位码发完? |
发结束码“1” |
是 |
|
|
|
|
|
|
|
初始化按键/中断 |
有无键按下 |
发射引导码 |
发射程序 |
有 |
无 |
否 |
图24 红外发射主程序流程图 |
红外发射子程序流程如图25。每调用一次该子程序就发送一个码位(一个码位由8个二进制数组成),一次发送需调用四次。程序从高位开始依次发送累加器中的二进制数。发送过程:若为信号二进制为“1”先发送0.56ms低电平,为“0”先发送1.685ms低电平,然后打开定时器T1中断产生38KHz基波脉冲,脉冲持续0.56ms,最后关闭中断,八位二进制发送完后,退出该子程序。
图25 发射子程序流程图 |
发“1”? |
是 |
延时1.685ms |
进入发射子程序 |
否 |
延时0.56ms |
开中断 |
否 |
|
0.56ms后关中断 |
8位数据发完? |
退出发射子程序 |
是 |
;---------------------------------红外发射子程序--------------------------------
FOUT04://循环发射各数据位
MOV R1,#08H
FOUT: RLC A
ACALL FSEND
DJNZ R1,FOUT
RET
FSEND: CLR TR1//禁止定时器T1定时
CLR ET1//禁止定时器T1中断
CLR P3.5//关脉冲输出
JC FSEND1//进位位为1跳转到FSEND1,为0继续执行下一条指令
MOV R3,#08H//发射‘0’码
FSEND0: MOV R4,#69H//‘0’码低电平
DJNZ R4,$//等待‘0’码低电平发射结束
DJNZ R3,FSEND0//‘0’码未发射完,则反会继续发射
LJMP FSIG//转脉冲发送信号
FSEND1: MOV R3,#02H//发射‘1’码
FSEND10: MOV R4,#8CH//"1"码低电平
DJNZ R4,$//等待‘1’码低电平发射结束
DJNZ R3,FSEND10//‘1’码未发射完,则反会继续发射
FSIG: SETB TR1//允许定时器T1定时
SETB ET1//允许定时器T1中断
MOV R3,#08CH//发射脉冲
DJNZ R3,$
CLR TR1//关定时器T1定时
CLR ET1//关定时器T1中断
CLR P3.5//关脉冲输出
RET
;------------------------------T1中断服务程序------------------------------
FINTT1: CPL P3.5 //产生38KHz红外遥控信号
RETI//中断返回
3.2.5红外接收
红外接收芯片输出的信号是对其接收到的信号的求反。HS38B输出引导码(5ms低电平、3ms高电平),低电平触发主控制单片机发生中断,此时开始对低电平计时,低电平信号超过4ms时,认定引导码有效。然后延时跳过3ms高电平,单片机开始接收按键码等信号。3.2.6红外解码
图26 单片机对信号的判断 |
原码“0” |
原码“1” |
原码“1” |
0.8ms |
0.8ms |
0.8ms |
3.2.7红外接收程序设计
结束码为“1”? |
是 |
4个8位码接收完毕? |
有 |
接收信号并解码 |
是 |
低电平是否超过4ms |
有 |
有无中断信号 |
外部中断0初始化 |
单片机执行相应功能 |
无 |
开始 |
是 |
否 |
否 |
否 |
图27 红外接收流程图 |
(R1)-1-〉R1 |
MOV R1,04 |
0.8ms延时 |
取样电平为低? |
“1”放入累加器A |
“0”放入累加器A |
等待下一个高电平的到来 |
8位二进制码接收完? |
进入读/解码子程序 |
是 |
退出 |
否 |
是 |
否 |
(R1)=0? |
否 |
是 |
图28 红外接收读、解码子程序流程图 |
3.3时间自定义时控模式
3.3.1时控模式总程序设计
时控模式主程序流程如图29。时控模式包括显示子程序、判键子程序、开窗帘定时子程序、关窗帘定时子程序、判断正常走时与定时时间一致的子程序转换BCD码子程序等。程序开始对LCD1602、DS1302初始化,设定初始显示日期和时间、初始定时开关窗帘时间。然后程序进入判键子程序,判定MOSHI、KALARM、GALARM、JIA、JIAN按键是否按下。若有则进入日期调整或者窗帘开关定时子程序,接着判定正常走时与定时时间是否相等,相等则执行电机转动子程序,整个过程液晶显示屏都会显示日期或时间,具体程序详见附录。
图29 时控模式主程序流程图 |
定时到? |
电机转动子程序 |
初始化LCD1602、DS1302 |
开始 |
读DS1302 |
显示日期及具体时间 |
键按下? |
调整或定时时间 |
是 |
否 |
否 |
是 |
3.3.2判键子程序设计及部分显示子程序设计
设定的按键有MOSHI、KALARM、GALARM、JIA、JIAN、时控按键、光控按键。时控按键和光控按键是时控模式和光控模式选择的按键。MOSHI、KALARM、GALARM、JIA、JIAN是光控模式下使用的按键。MOSHI按键是用于正常时间和日期的调整的,比如调整时间或日期为2014年5月12日14:25。第一次按下MOSHI键时,液晶显示屏将显示调整时间界面,光标停在“分”位闪烁,等待调时,此时若按下JIA键,“分”加1;若按下JIAN键,“分”减1。若继续按MOSHI键,光标将停在“时”位等待调时,此时若按下JIA键,“时”加1;若按下JIAN键,“时”减1。若继续按MOSHI键,光标将停在“日”位等待调时,如此循环,直到调整完“年”位之后再按下MOSHI键,则进入正常走时状态。第一次按下KALARM键,液晶显示屏将显示开窗帘定时界面,光标停在“秒”位闪烁,等待定时操作。此时若按下JIA键“秒”加1;若按下JIAN,“秒”减1。若继续按KALARM键,光标将停在“分”位等待定时操作,此时若按下JIA键,“分”加1;若按下JIAN键,“分”减1。如此循环直到“时”位操作结束,再按一次KALARM键,液晶显示屏将显示正常走时时间。GALARM流程与KALARM流程操作类似。涉及的程序流程如图30、31,由于时间是变化的所以未用循环体,读写LCD1602、DS1302等具体程序详见附录。
是 |
进入日期/时间调整子程序 |
MOSHI键按下? |
LCD显示日期/时间调整界面 |
JIA键按下? |
‘分’加1 |
JIAN键按下? |
‘分’减1 |
MOSHI键按下? |
‘时’加1 |
‘时’减1 |
JIA键按下? |
JIAN键按下? |
MOSHI键按下? |
JIA键按下? |
JIAN键按下? |
‘天’加1 |
‘天’减1 |
A模块 |
循环执行A模块直到年月日时分调整完毕 |
MOSHI键按下? |
调时完成,显示正常走时 |
是 |
否 |
是 |
是 |
是 |
是 |
是 |
是 |
否 |
否 |
否 |
否 |
否 |
否 |
否 |
否 |
是 |
图30 日期/时间调整子程序流程图 |
是 |
否 |
‘时’加1 |
‘时’减1 |
定时完成 |
JIA键按下? |
JIAN键按下? |
GALARM键按下? |
否 |
否 |
否 |
是 |
是 |
是 |
GALARM键按下? |
‘秒’减1 |
‘分’加1 |
‘分’减1 |
JIA键按下? |
JIAN键按下? |
GALARM键按下? |
否 |
否 |
否 |
否 |
是 |
是 |
是 |
是 |
进入定时子程序 |
固定显示TIME ADJUST |
显示定时数据 |
GALARM键按下? |
JIA键按下? |
JIAN键按下? |
‘秒’加1 |
是 |
否 |
否 |
是 |
否 |
是 |
图 31 关窗帘定时子程序流程图 |
LCD1602显示变化的时间的程序:(以下为显示‘秒’的程序片段,年月日时分的显示与‘秒’显示类似)
XS: MOV XXX,XMIAO//XXX为设定的寄存器,用于存放时分秒年月日
LCALL XHEX//XHEX为分离十进制BCD码十位和个位的子程序
MOV P0,#0CAH
LCALL WR_CODE_1602//将控制命令写入LCD1602
MOVC A,@A+DPTR
LCALL WR_DATA_1602//将数据写入DS1602
MOV A,B//‘秒’位由两位组成
MOV P0,#0CBH
LCALL WR_CODE_1602//将控制命令写入LCD1602
MOVC A,@A+DPTR
LCALL WR_DATA_1602//将数据写入DS1602
判断定时时间是否到是先判断‘时’相同否,再判断‘分’相同否,最后判断‘秒’相同否,若均相同则转入电机转动模块,进行开关窗帘动作。以下为‘时’的判断程序片段,年月日时分的判定程序类似。
PDS: MOV DDD,SHI//DDD为设定的寄存器,用于存放时分秒
LCALL BHEX//BHEX为分离十六进制BCD码十位和个位的子程序
MOV R7,B
MOV B,#10
MUL AB
ADD A,R7//转化成能与定时时间相比较的进制数
CJNE A,ZSHI,GGG//比较正常走时的‘时’与定时的‘时’是否相等
3.4光控模式和电机驱动模式
3.4.1光控模式程序设计
光控模式与时控和遥控模式相比程序设计较为简单,光控模式采用集成化的芯片进行设计,芯片引脚输出的数据已经数字化,主控单片机只需要对采集到的数据进行高低电平判定,若为高电平转入关窗帘子程序,若为低电平则转入开窗帘子程序。光控模式的开启需要‘光控’按键操作,主控制单片机P2.7引脚接入‘光控’按键。光控模式的退出由遥控信号操作,光控模式程序流程如图32。光控模式子程序片段如下:MAIN: JNB P2.7,guangkong//若P2.7引脚为低电平,则光控模式被触发
guangkong: JNB P2.0,kzhuan//若采集的光信号为低电平,则转入开窗帘程序
JB P2.0,gzhuan//若采集的光信号为高电平,则转入关窗帘程序
kzhuan: SETB P1.1//开窗帘程序
SETB P1.2
CLR P1.3
JNB P3.2,MAIN//遥控信号发来返回主程序
LJMP guangkong
gzhuan: SETB P1.1//关窗帘程序
CLR P1.2
SETB P1.3
JNB P3.2,MAIN
LJMP guangkong
P3.2=0? |
是 |
开窗帘子程序 |
是 |
关窗帘子程序 |
P2.0=1? |
是 |
P2.0=0? |
进入光控程序 |
是 |
开始 |
主程序 |
P2.7=0? |
否 |
否 |
否 |
否 |
图 32 光控模式程序流程图 |
3.4.2电机驱动模式程序设计
在多个控制模式下,本设计都需要电机的转动才能完成最终窗帘开关的功能,电机运转部分程序设计较为简单,但使电机能够运转也是本设计的一个不可或缺的部分,电机的运转是依靠L298N芯片的输出来驱动的。而L298N芯片的输入端由单片机P1.1、P1.2、P1.3引脚控制,所以其程序设计仅需对P1.1、P1.2、P1.3引脚进行操作即可,具体程序如下:电机MOTO1正转:
Zzhuan: STEB P1.1//使能端高电平有效
SETB P1.2//接L298N的IN1、IN4端口
CLR P1.3//接L298N的IN2、IN3端口
电机MOTO1反转:
Fzhuan: STEB P1.1//使能端高电平有效
CLR P1.2//接L298N的IN1、IN4端口
SETB P1.3//接L298N的IN2、IN3端口
4总结
本文设计出了一种集红外遥控功能、时间自定义定时功能、光控功能、显示功能于一体的智能窗帘控制系统。系统可通过遥控器方便地控制窗帘的开闭;可设置利用光照强度控制窗帘的开闭;也可分别设定具体的开关窗帘时间,时间到窗帘自动完成开关动作,无需人为参与。同时还设置了时间显示功能,方便人们日常生活中对时间的计划与把握,各功能可单独操作,相互切换,满足了人们随心所欲控制窗帘的期望。本系统的设计应用了红外遥控技术、传感技术、显示技术、芯片传输技术以及单片机控制技术。系统功能多,操作简便、实用性强,但该系统的仍存在一定的问题。如电机的停转只能通过遥控信号或者复位按键来停止;进入光控模式后若要使用遥控模式还需要按动时控按键才能退出光控模式,即各模式之间还未达到完全独立;系统使用的是直流电机,而直流电机转速太快不适合带动窗帘运动,使用减速电机或者步进电机可以达到更好的效果;光照模式的lx设置范围不宽,需要调整更宽的范围。因此,本系统还在研究实验阶段,还有很大的提升空间。通过本次毕业设计,我更加深刻地认识到学以致用的重要性。同时,通过此次毕业设计我重新温习了汇编语言的编程技术,掌握了Protues软件绘图与仿真,进一步巩固了对Keil软件的运用,了解到LCD1602、L298N、HS38B、DS1302等芯片的操作方法。这为我以后的学习和工作都奠定了良好的基础。
参考文献
[1] 李小魁,韩大伟.智能遥控窗帘系统设计与实现[J].河南财政税务高等专科学校学报,2013,27(4):92-94.[2] 周敬.基于单片机的窗帘智能控制系统设计[J].天津科技,2010,37(2):58-60.DOI:10.3969/j.issn.1006-8945.2010.02.027.
[3] 孙勇,杨文月,赵宇新等.自动窗帘控制系统设计[J].微型机与应用,2010,(13):15-17.DOI:10.3969/j.issn.1674-7720.2010.13.006.
[4] 孙健.智能家居电动窗帘的设计与实现[J].机械工程与自动化,2012,(2):133-135.DOI:10.3969/j.issn.1672-6413.2012.02.053.
[5] 庄渊昭.实用智能窗帘机的设计[J].现代电子技术,2008,31(4):181-183.DOI:10.3969/j.issn.1004-373X.2008.04.063.
[6] 张敏敏,陈亮亮.实用智能家居窗帘的设计[J].科技视界,2012,(24):233-234,251.
[7]辛海亮,钟佩思,朱绍琦等.基于ZigBee的物联网智能家居控制系统[J].电子技术应用,2013,39(12):79-81,85.
[8] 朱佳鸽.基于物联网的智能家居系统的设计与实现[D].长安大学,2013.DOI:10.7666/d.D407359.
[9]陈致远,朱叶承,周卓泉等.一种基于STM32的智能家居控制系统[J].电子技术应用,2012,38(9):138-140.DOI:10.3969/j.issn.0258-7998.2012.09.040.
[10] 郭奇.智能家居控制平台的设计与实现[D].沈阳理工大学,2012.DOI:10.7666/d.y2150319.
[11]吴爱萍,黄振兴.基于AT89S52的智能窗帘群控系统[J].科技资讯,2007,(35):77-78.DOI:10.3969/j.issn.1672-3791.2007.35.064.
[12] 孙勤.基于单片机的光控窗帘设计[J].微型机与应用,2012,31(16):32-34,37.DOI:10.3969/j.issn.1674-7720.2012.16.012.
[13] 刘丹,李钦晓,费心越等.家居环境感光窗帘智能控制与调节系统[J].仪器仪表用户,2014,(1):54-58.DOI:10.3969/j.issn.1671-1041.2014.01.018.
[14]谌容,胡泽,张扯拉等.基于单片机控制的智能光控窗帘系统研究[J].电子世界,2013,(9):21-22.
[15]马泽文,陈玥玮,徐力等.基于单片机的智能防雨帘控制系统[J].价值工程,2011,30(10):151-152.DOI:10.3969/j.issn.1006-4311.2011.10.113.
[16] 张准,牛宗超.智能遥控窗帘系统设计[J].电子世界 ,2013,(23):140-140,141.
[17]冯劲梅,王庆明.采用单片机的直流电机无线遥控系统[J].机电工程,2010,27(12):7-10,14.DOI:10.3969/j.issn.1001-4551.2010.12.002.
[18] 黄志刚,赵之赫.通用型1602LCD自定义字符的显示[J].电子世界 ,2013,(22):182-182.
[19] 雷红淼,程耀瑜.基于L298N的直流电机驱动电路优化设计[J].数字技术与应用,2012,(2):118-118,120.
[20] 王立红.基于单片机的直流电机控制系统设计[J].知识经济,2011,(8):102-103.
[21] 冯大捷.基于DS1302电子时钟的设计[J].科技视界,2012,(2):118-120.
[22]PENG Jun-jie,HE Hui,ZHU Ping-an.Zigbee-based new approach to smart home[J].Journa 1 of Shanghai University.2010,1
[23]YUAN Xiao-Chen,CHEANG Chak-Fong,LI Jian-Qing.Implementation of a Remote Control System for Smart Home[J].Information and communication technology.2007,1
致谢
本文是在XXX老师的指导下完成的,谨此向XXX老师致以最衷心地祝愿和感谢!大学四年来,XXX老师曾教授我单片机、微型计算机等课程。同时,XXX老师也是我的班主任,对我的生活和思想给与了许多指导。在此,请允许我再次向XXX老师致以深深的谢意!同时,我还要感谢XXX专业所有辛勤工作的老师,是你们的付出,才使我较好的掌握了专业知识。
谢谢帮助过我的同学们,谢谢你们在学习和生活上给予的帮助。
最后,向于百忙之中抽出时间审阅此论文的专家、教授们表示感谢!