当前位置:文档之家› 实用智能窗帘控制器的设计

实用智能窗帘控制器的设计

1绪论

1.1研究意义

随着电子信息技术迅猛发展,人们对智能家居的要求越来越强烈,方便及舒适的智能窗帘是适应现代化办公和生活环境的迫切需要。智能家居控制系统必将成为未来住宅的发展趋势,走进普通居民的家居,进一步提高居民的家居生活品质与品味[1]。智能窗帘作为其中的一个重要组成部分,其发展也标志着智能家居的发展程度,现在的智能窗帘控制系统集现代光、机、电为一体,是智能家居的理想选择,尽力达到完美与和谐的统一。

本设计根据现代化办公和生活环境的迫切需要,以单片机STC89C54RD+为主控芯片,利用光强度传感器BH1750FVI、温湿度传感器、红外遥控器、红外对管等传感器设计一个实用智能窗帘控制器。其取代了传统的手动推拉窗操作,以一种人性化的工作模式适应人们日益追求简单、方便、舒适的生活方式。

1.2 实用智能窗帘控制器的设计的发展

自从世界上第一幢智能建筑1984年在美国出现后,美国、加拿大、欧洲等经济比较发达的国家在智能家居的设计上也提出了各种方案[2]。智能窗帘作为其中的一个重要组成部分,其发展也标志着智能家居的发展程度,智能窗帘是未来居家生活的发展方向,虽然现在普及比较少且大多是有钱人的专属,但是随着电子技术的飞速发展和电子元件价格的下降,具有功能完备、安全性较高、便于窗帘的维护、性价比高等优点的智能窗帘得到窗帘设计者的青睐。

1.2.1基于无MCU智能窗帘控制器的设计

无MCU的智能窗帘控制器典型设计原理如图1.1,其核心电路为CK-95专用窗帘驱动模块。该控制器把控制信号经逻辑变换和电平变换后送到CK.95窗帘驱动模块控制电机工作,根据控制信号执行输出从而控制窗帘的开和关[3]。

奥兰AL.CK01由驱动模块、电源模块、遥控接收及定时电路、控制电路等组成,其体积小巧,安装方便。但是,这种设计的控制器没用到微处理器MCU,使其控制不灵活,每一种功能上改动必会引起硬件上的变化,显得并不智能,不能满足高效、智能窗帘控制机的要求。

1.2.2基于PLC智能窗帘的设计

基于PLC智能窗帘的设计框图如图1.2所示。接通开关后,打开PLC电源,PLC启动后就对煤气检测模块、烟雾检测模块、温度检测模块、红外线检测模块等进行检测[4]。PLC根据这些信息自动控制窗户或者窗帘的开关。

该智能窗设计最大的特点是功能模块化,PLC的接口较多,使得该设计的制作和编程较为方便。显然PLC的功能强大可以完成一个智能窗户的所有功能,其利用输入的各个检测信号输入到预处理模块进行电量转换,并将信号输入到PLC处理,控制输出模块的动作,进行智能窗户的设计,功能十分完备。但是,其价格昂贵,一个低端的PLC裸机就高达一千元左右,再加上其体积庞大不易安装、I/O 接口的浪费,显然是大材小用了。

图1.2 基于PLC的智能窗帘的设计

1.2.3基于网络化智能窗帘控制器的设计

基于Zigbee技术设计的智能窗帘网络化控制系统,其典型的原理框图为图1.3。利用系统网络的拓扑和采用Zigbee网络技术来对整栋办公大楼的窗帘进行集中控制管理[5]。根据室外温度、光照强度等参数控制窗帘或者窗户,同时可以起到节约能源和美化整栋建筑幕墙的作用。但是这种方案把每个办公室的温度和光强的情况统一化了,没有按照每个办公室的实际需要而进行统一的管理和控制,使其在广泛利用方面有一定的局限性。

图1.3 基于Zigbee技术的智能窗帘网络化控制系统

1.3 研究内容

设计内容:设计一个智能窗帘,用STC89C54RD+为主控芯片,以数字光强度、湿度、温度等传感器作为外围电路的窗帘控制器。将各传感器的信号送入单片机,利用单片机发出控制信号去驱动电机转动,完成一个窗帘控制器的设计,使其具有功能完备、安全性较高、便于维护等特点。

该控制器能检测环境的光线强度和湿度,并根据自己设点值自动打开窗帘的打开程度;定时早晚开关窗帘;红外遥控远程控制窗帘的开关和参数设置;能用液晶显示实时显示工作参数等。

1.4 论文结构

整个论文结构安排如下:

第1章绪论:介绍智能窗帘的背景、意义和发展现状

第2章系统硬件设计:讲述本设计所用到的各硬件模块的功能和实现方案

第3章系统硬件模块:系统的介绍硬件系统的总体电路和各个模块硬件功能的实现

第4章系统软件设计:系统地介绍软件流程、各模块的软件设计和总体程序组合

第5章系统的调试:从模块到整机的调试

第6章结束语

2系统硬件设计

2.1功能要求

主要功能:

⑴光线强度检测:通过光线强度传感器实时检测光线强弱,控制窗帘打开的合适程度,为室内

提供设定的光线强度;

⑵时钟定时及万年历功能:能提供一个简单的万年历功能并能够定时早晚开关窗帘;

⑶红外遥控远程控制:可以用遥控进行窗帘的开和关,以及各个参数的设置;

⑷湿度检测:能完成湿度检测,当房屋内湿度太大能自动打开窗帘进行通风;

⑸各参数(光线强度、湿度、工作模式、万年历等)的实时显示;

⑹窗帘的完全关闭和打开的自动检测及控制等。

根据设计的需要,将单片机最小系统、传感器模块、液晶12864显示、电机驱动电路和电机模块、红外遥控器和遥控接收模块、电源模块等有机组合完成以上的设计要求。

2.2设计方案

利用单片机STC89C54RD+为主控芯片,以数字光强度、湿度、温度、红外对管等传感器为外围电路的有机结合,送入单片机中去驱动电机的转动。最终完成一个具有功能完备、安全性较高、便于窗帘维护等特点的窗帘控制器, 总体设计框图如图2.1。模块化设计:

⑴单片机最小系统模块:单片机的电源电路、开关、必要的时钟电路、复位电路及按键;

⑵传感器模块:BH1750FVI是用16位数字光强度传感器,利用内部的模数转换器把采集光的强

度实时送到STC89C54RD+中进行处理,理将温湿度传感器等信号通过电量转换送入单片机

[6];

⑶显示模块:通过液晶12864显示时间和工作模式及其参数等;

⑷电机模块:经过单片机对各种传感器的实时信息输入,根据预先设置好的参数对电机进行控

制,主要为正转和反正的控制;

⑸遥控模块:通过红外解码,进行遥控器的重新设计;

⑹红外对管的模块,设计红外对管电路,能完成窗帘的完全关闭和打开的自动检测及控制等。

图2.1 窗帘总体设计框图

2.3小结

本章主要讲述了该设计要完成的主要功能和设计方案,根据功能确定智能窗帘设计的总体框图,以及其硬件电路设计的整体情况。完成了分析功能要求和确定设计方案。

刘浩本科毕业设计·实用智能窗帘控制器的设计

3 系统硬件模块

3.1系统总体电路

本设计的系统总体电路如图3.1所示。控制部分是以STC89C54RD+单片机为核心的最小系统[7];液晶12864显示各参数包括光线强度、湿度、工作模式、万年历等;把BH1750FVI实时采集光强信号和DHT11实时采集温湿度值送入最小系统进行处理;红外接收头接收遥控输入数据主要为功能键和数值键;DS1302提供一个万年历的功能,让预设时间和万年历时间一致,完成早晚开窗帘的开和关;2对红外对管分别完成完全打开和完全关闭的检测功能,使得电动机在完全打开和完全关闭时停下来。

图3.1 系统总体电路图

3.2 STC89C54RD+单片机最小系统

主控制器在一定程度上也决定了系统的整体性能,本设计选择的主控芯片是STC89C54RD+单片机。STC89C54RD+是宏晶科技公司推出的抗干扰性强、低功耗、高速、完全兼容传统8051指令代码且具有良好性价比的单片机。此单片机具有双倍速功能,支持6周期模式运行;还具备ISP在线系统编程功能,不用购买额外的编程器,为开发带来方便;最主要的是其具有16k字节Flash程序存储器和1280字节的RAM数据存储器,可以大大的满足使用者在编写复杂程序时遇到容量不够用的问题。本设计使用的传感器和外围电路较多,因此需要较大的存储容量,无需扩展外部程序存储器和数据存储器。考虑以上因素STC89C54RD+单片机是最好的选择,其最小系统为图3.2。

图3.2 单片机最小系统

3.3 LCD12864显示模块

本设计采用带有中文字库的液晶显示器12864,显示的分辨率是128*64,内置有8192 个16*16 点汉字和128个16*8点的ASCII字符。该模块的接口方式灵活、简单,让程序的编写也较为方便;同时还具有工作电压低、耗电量低等特点。由该模块构成的液晶显示与同类型图形的点阵液晶显示模块相比,在硬件电路结构和显示程序上都要简洁得多。考虑到要实时显示时间、光线强度、湿度、窗帘模式等参数,从而12864成为本设计的最佳选择。引脚接法如图3.3所示。

图3.3液晶显示电路模块

3.4时钟模块

DS1302 是DALLAS公司推出的新一代低功耗、高性能、自带RAM的时钟电路芯片。其可对年、月、日、周日、时、分、秒等精确计时,可以工作在2.5V~5.5V之间,满足本设计的5V电源供电;DS1302内部结构中包含一个为31×8临时性存放数据的寄存器RAM;可以在工作时接上主电源和后备电源双电源引脚,同时也为备用电源CR2032充电。本设计采用三线(SCLK、I/O、RST)接口与单片机之间的同步通信。按照设计需要利用DS1302和单片机结合做有一个万年历模块设计[8]。利用万历年中的时间进行早晚开关窗帘设定,时钟模块的电路如图3.4所示。

图3.4 时钟模块外围电路

3.5光线传感器模块

一般测光线强度的电路模块用到光敏电阻,光敏电阻需要用模数转换器将其模拟信号转换为数字信号,电路复杂、费用高而且光敏电阻进行光强度采集不够理想等缺点。从而人们提出了一种利用16位高精度数字光线强度传感器BH1750FVI进行光强度检测仪的设计方案[9]。利用IC 总线接口数字型光强度传感器还可以避免额外的模数转换带来的误差,可在12864液晶显示器上进行测量数值的显示。该传感器具有光强度采集精度较高、实时性较强、反应速度非常灵敏等优点,并且电路设计较为简单,

遥控发射器

遥控接收器

图3.6 红外遥控系统框图

利用它的高分辨率可以探测较大范围的光强度变化(1lx.65535lx ),可以很好地满足人们办公和居家的使用需要。除电源和接地外,只需使用2个I/O 接口就可以实现光线强度的实时读取,使用十分方便,其引脚接法如图3.5所示。

3.6红外遥控模块

红外遥控系统如图3.6所示,由发射器和接收器两部分组成。遥控发射部分一般包括键盘矩阵、编码调制电路和LED 红外发射器;接收部分一般由光、电转换放大器、解调和解码电路等组成。本设计采用的是1838T 红外接收头,其体积和普通的三极管样的体积一样大小,使用十分方便,它集成红外线的接收、放大、解调,不需要外接任何其他元件就能完成从红外接收到输出与TTL 电平信号兼容的所有工作。1脚接VCC 接电源,2脚GND 是地线,3脚脉冲信号输出(P33),系统只要检测到INT0信号下降沿就能测出控制指令,从而完成相应的功能。根据遥控信号进行编码[10]、周期波形图如图3.7所示进行解码[11]。1838T 红外接收头的引脚排列如图3.8所示。

图3.5光线传感示模块外围电路

遥控信号编码波形图

遥控信号周期波形图

图3.7遥控信号编码、周期波形图

图3.8 1838T的引脚排列

3.7温湿度传感器模块

DHT11数字温湿度传感器是一个内部包含已校准的数字信号输出温湿度复合型传感器,其应用专用的温湿度传感技术和数字模块采集技术,以确保产品具有很高的稳定性;本设利用其中的测温元件NTC和电阻式感湿元件与一个STC89C54RD+单片机相连接,完成湿度的精确读取;极低的功耗、超小的体积、连接方便(只需用到单片机的一个I/O接口)。在工作中同时提供温度和湿度的实时读取。

本设计利用STC89C54与DHT11之间的同步通讯,采用单总线数据格式。一次通讯时间4毫秒左右,传输完整的数据为40bit,高位先出。把数据分为整数部分和小数部分,根据具体格式为:8bit 湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验就能提取湿度值[12]。温湿度感器模块如图3.9所示。

图3.9湿度传感器模块

3.8电机模块

步进电机28BYJ48是四相八拍型电机,工作电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,就可以连续不断地转动[13]。本设计采用的是A.AB.B.BC.C.CD.D.DA.A节拍方式如图3.10所示,当数组中的值改变并完成完成一个循环的时候,转子就转过一个齿距,以此类推地连续工作。其中因为P1的低字节已作为按键使用,所以P1 =(P1&0x0f)|(0xf0&FFW[j],使得P1的高字节(FFW[j]的值依j的变化次循环)在不影响P1低字节的变化,去驱动步进电机。因此数组FFW 的值为{0x1f,0x3f,0x2f,0x6f,0x4f,0xcf,0x8f,0x9f},使得电动机正转。同理可以利用数组REV的值为{0x9f,0x8f,0xcf,0x4f,0x6f,0x2f,0x3f,0x1f}去完成电动机反转。由于单片机接口信号不够大需要通过

ULN2003放大后再连接到相应的电机接口。电机接口的电路如图3.11所示,驱动方式:(4-1-2相驱动),从左到右 CCW 旋转方向(轴伸端视)。

3.9红外对管模块

2对红外对管分别完成窗帘的完全打开和完全关闭检测功能,使得电动机在完全打开和完全关闭的时停下来。当窗帘通过D2和D3之间时,D3就会导通,此时P00为低电平,否则就是高电平。同理窗帘通过D4和D5之间时,D5就会导通,此时P01为低电平,否则就是高电平。所以,设定2个全局变量openall (完全打开)和closeall (完全关闭)分别为P00和P01的电平信号值,就可以反馈窗帘的打开程度,以使得电动机在完全打开和完全关闭的时停下来。其电路如图3.12。

图3.11电动机模块

图3.10步进电机运行方式

3.10电源模块设计

直流稳压电源通常由电源变压器、整流电路如图3.13所示、滤波电路和稳压电路这四部分组成。变压器将220V 的交流电变换为所需要的电压值;整流电路将正负交替的交流电变换成单向的脉动电压;滤波电路将单向的脉动电压变换成比较平滑的直流电压;稳压电路将平滑的直流电压变成恒定的直流电压,并且当电网电压波动,负载和温度变化时,维持输出的直流电压稳定

[14]

。±12V 电源模块

如图3.14所示,主要由核心元件是7812和7912。±5V 电源模块如图3.15所示,核心元件是LM7805和7905,为不同的电动机在不同工作环境提供相应的电压。

图3.12 红外对管模块

图3.13 整流电路模块

3.11遥控版面设计

将遥控器进行解码,将原有的遥控版面如图3.16所示,进行重新设计,最终完成适合该设计实际应用的版面如图3.17所示。

图3.15 ±5V 电源模块

A

U4

LM7905

3.12小结

本设计使用的模块较多、较散,必须在模块化设计时把每个模块的最终协调工作考虑进去,从而为系统的软件设计提供方便和做好准备。

4 系统软件设计

4.1程序工作流程图

4.1.1程序总体工作流程图

本设计使用C 语言完成程序的编写和调试, Keil 软件是目前开发51系列单片机最流行的软件,可直接用串口转USB 下载由Keil 软件生成的.hex 文件进行程序烧录,使用十分方便。与汇编语言比较,C 语言有程序灵活性强、代码简洁、容易进行模块化设计等优点[15]。总体工作流程如图4.1所示,首先,进行程序初始化,其包括单片机、液晶、各传感器等模块的初始化。进入界面后按照DS1302原有的时间进行走时,该界面也提供一个万年历的功能,可以使用遥控查看时间包括年、月、日、时、分、秒、星期的查看,如果不进行时间调整,就可以进入自动模式和手动模式的任意切换,默认下为自动模式。

图3.17遥控版面重新设计

图3.16 遥控原有版面

重新设计

图4.1 程序总体工作流程图

4.1.2自动模式工作程序流程图

如果工作自动模式的流程图如图4.2所示,则按照预设定的值(最适宜的光线强度值、最大湿度值、早晚开窗时间)进行工作,其中这些值可以用遥控进行修改。系统有个全局变量dayfalg,它可以判断当前时间是否在早晚开窗时间之间,从而决定早晚开窗时间。如果是晚上就完全关闭窗帘,除非用手动模式打开窗帘。在早晚开窗时间之间,如果当前湿度大于设定值,就完全打开穿了通风,如果光线强度值不满足设定要求,就进行正反转自动调节。

图4.2 自动模式工作流程图

4.1.3手动模式工作程序流程图

如果工作在手动模式下流程如图4.3所示,不受设定值的影响,自由地进行打开和关闭窗帘。

图4. 3手动模式工作流程图

4.2 BH1750FVI数字型光强度值读取主要程序

写好BH1750FVI的初始化程序后,主要通过Single_Read_BH1750(uchar REG_Address)和void Multiple_read_BH1750(void)子程序读取光线强度数据。

uchar Single_Read_BH1750(uchar REG_Address) ////单字节读取//

{ uchar REG_data;

BH1750_Start(); //起始信号//

BH1750_SendByte(SlaveAddress); //发送设备地址加写信号//

BH1750_SendByte(REG_Address); //发送存储单元地址,从最开始的单元开始//

BH1750_Start();

BH1750_SendByte(SlaveAddress+1); //发送设备地址加读信号//

REG_data=BH1750_RecvByte(); //读出寄存器数据//

BH1750_SendACK(1);

BH1750_Stop(); / /信号停止//

return REG_data;

}

void Multiple_read_BH1750(void) ///连续读出BH1750内部数据

{ uchar i;

BH1750_Start(); ///起始信号//

BH1750_SendByte(SlaveAddress+1); ///发送设备地址加读信号//

for (i=0; i<3; i++)

{

BUF[i] = BH1750_RecvByte();

if (i == 3)

{

BH1750_SendACK(1); //还回NOACK//

}

else

{

BH1750_SendACK(0); //回应ACK//

}

}

BH1750_Stop(); ////停止信号//

Delay5ms();

}

4.3红外遥控解码程序及工作程序

以下是红外遥控数值键解码的工作程序,例如数字0x16为按键0的操作,flag_num为光标的标记,在设置时光标起指示移动之用。

void ir_display()

{

uchar buf,i;

disp[4]=ircode[2]; //数字键的数据码从0到9和加减

if(disp[4]==0x16||disp[4]==0x18||disp[4]==0x0c

||disp[4]==0x5a||disp[4]==0x52||disp[4]==0x42

||disp[4]==0x5e||disp[4]==0x1c ||disp[4]==0x08

||disp[4]==0x4a)

{

switch(disp[4])

{

case 0x16:buf=0;flag_num++;break;

case 0x0c:buf=1;flag_num++;break;

case 0x18:buf=2;flag_num++;break;

……

}

disp[4]=0; //接受下一次做好准备//

if(flag_num==1)

sum=buf;

if(flag_num>2)

{flag_num=0;

sum=sum*10+buf;

}

for(i=0;i<4;i++)//关闭接收防止进入死循环//

ircode[i]=0;

}

}

gkey()为除数字键咦外的功能键程序。

void gkey()

{ uchar i;

receive();

disp[4]=ircode[2];

if(disp[4]==0x45||disp[4]==0x47||disp[4]==0x46||disp[4]==0x46||disp[4]==0x44||disp[4]==0x43) { switch(disp[4])

{ case 0x45:kai=1;guan=0;break; //打开//

case 0x47:kai=0;guan=1;break ; //关闭//

case 0x46:kai=0;guan=0;break; //停止//

case 0x44:zidong++;break; //手动自动切换//

case 0x43:wangnianli++;break; //查看万年历//

}

if(zidong>1)

zidong=0;

if(wangnianli>1)

wangnianli=0;

for(i=0;i<4;i++) //关闭接收防止进入死循环//

ircode[i]=0;

}

}

4.4温湿度传感器工作程序

void read_init()

{ DHT=0; //使DHT11低电平并延时至少18ms//

delay_ms(21);

DHT=1; //置DHT11高电平20~40us,并等待从机相应//

delay_10us();

……

DHT=1;

if(!DHT) //从机发出响应信号//

{ flag=2;

while((!DHT)&&flag++);//等待从机发高电平结束//

flag=2;

相关主题
文本预览
相关文档 最新文档