手动控制:该功能是根据用户的需求通过按键进行窗帘的开关,此功能可以使窗帘的开闭处于任何一种状态;
自动控制:系统可以根据用户设定的光照强度值通过感光器采集光照自
动开光窗帘;
定时控制:此功能是根据用户设定的时间一次性开关窗帘。
可以通过按键是上面三种控制模式循环切换。
遥控控制:通过遥控器实现对窗帘的开关。
自动控制技术是20世纪发展最快、影响最大的技术之一。针对家居环境采光及避光问题,自动窗帘控制系统将取代手动控制,更加人性化。本文综述了自动窗帘系统的设计与控制系统,介绍了设计制作一个完整的自动窗帘控制系统所需要做的理论分析,以及各环节功能的实现。自动窗帘控制系统核心是采用单片机STC89C52控制,其次采用感光检测电路,时钟电路,电机控制电路、按键电路等外围电路。整个系统在各模块的配合下实现半自动控制,自动控制等功能。该设计在理论层面上,以程序驱动各模块工作,实现了各模块的内在联系,应用层面上采用软件进行原理图设计和仿真。
该自动窗帘系统硬件电路主要由感光检测电路,时钟电路,电机控制电路、按键电路等外围电路构成。该设计则主要讨论了自动窗帘系统的设计过程,硬件电路设计,软件调试过程。通过本系统可以实现通过光照强度实现窗帘开关自动控制、定时控制和手动控制等不同的控制方式。
1.1 系统设计的任务和性能指标(1)熟悉51单片机集成开发环境,运用C语言编写工程文件;
(2)熟练应用所选用单片机的内部结构、资源,以及软硬件调试设备的基本方法;
(3)自行构建基于单片机的最小系统,完成相关硬件电路的设计实现;
(4)理解智能窗帘的原理和掌握实现方法。 1.2 方案选择和论证
1.2.1 显示方案的选择方案一:采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往会有很多障碍,所以不采用LED数码管作为显示。 方案二:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形。显示多样、清晰可见,对于本设计而言,一个1602的液晶屏即可,价格也还实惠,所以此设计中采用LCD1602液晶显示屏作为显示模块。 1.2.2 时钟模块的选择方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但是,实现的时间误差较大、时间算法复杂、无法实现掉电走时。所以不采用此方案。 方案二:采用DS1302时钟芯片实现时钟,DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。 因此,本设计中采用方案二的DS1302提供时钟。 1.2.3 电机的选择方案一:使用直流电机来作为执行机构,带动窗帘运动实现开合。此方案的优点是电机转速能达到很高,从而实现窗帘的快速开合。其缺点是电机速度过高时,给出停转信号后,由于惯性会继续转动,窗帘也随之继续运动,可能会对窗帘框架造成损害;速度过低,则可能会出现电机不能克服阻力,因而不能带动窗帘运动。 方案二:使用步进电机作为来作为执行机构,带动窗帘运动实现开合。此方案的优点是给出停转信号后,会立即停转,不会对窗帘框架造成损害,且其扭矩比直流电机大,便于带动窗帘运动;其缺点是价格比直流电机稍贵。 综上所述,选择方案二作为系统的执行机构,带动窗帘运动实现窗帘的开合。 2 系统硬件设计
2.1 整体方案设计
2.1.1 系统概述整个系统以STC89C52单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其中包括,显示设备使用1602液晶,可以同时显示年、月、日、时、分、控制模式、光照强度等基本信息;时钟模块采用DS1302芯片,初始化之后,就会开始运行计算时间,单片机只需进行时间信息的读取即可;光照检测电路采用光敏电阻和模数转换芯片TLC549,将模拟量数字化并显示出来;窗帘使用步进电机进行代替模拟,同时配有一个LED灯用来指示窗帘当前的开关状态;本设计可以通过5个按键作为操作输入设备,可以对当前时间进行调整设置和设置窗帘开关时间和光控阈值等;还可以通过遥控器来进行开关窗帘,最后是供电采用常用的USB 5V进行供电。
2.1.2 系统框图
图2-1 系统框图 2.1.3 原理图图2-2 原理图 2.2最小系统模块
2.2.1 STC89C52简介STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合,如图2-3所示 。 图2-3 STC89C52引脚图 2.2.2 最小系统电路
STC89C52的最小系统如图2-4所示,整个最小系统由三个部分组成,晶振电路部分、复位电路部分、电源电路等三个部分组成。由于STC89C52的P0口是漏极开路输出,因此在P0口接了一个10K的排阻R1,使得P0口可以作为普通的I/O口使用,本设计用P0口来做液晶的数据口。 振电路包括2个30pF的电容C2和C3,以及12M的晶振X1。电容的作用在这里是起振作用,帮助晶振更容易的起振,取值范围是15-33pF。 图2-4 最小系统 2.3 液晶显示电路
本系统显示采用了工业字符型液晶模块1602,可显示2行16个字符,能方便显示英文字母大小写、阿拉伯数字、常用符号等。通过自定义还可显示简单的汉字。 液晶模块的电路的连接图如图2-5所示,第1脚和第2脚分别接到了电路的GND和VCC,这2个脚是液晶工作的电源输入脚。第3脚通过一个10K的电位器连接到地端,可通过调节该电位器来调节液晶的对比度。第4脚是液晶的寄存器控制脚,接到了单片机的P13脚上。第5脚是液晶的读写控制脚,接到了单片机的P14脚上。第6脚是液晶的使能脚,接到了单片机的P15脚上。第7脚到第14 图2-5 液晶模块连接图 脚是液晶的数据/地址8位总线,接到了单片机的P0口上。最后第15脚和第16脚是液晶的背光电源脚,直接连接系统VCC和GND。 2.4 时钟模块本文介绍的实时时钟电路DS1302是DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。是一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~ 5.5V。采用三线接口与CPU进行同步通信,并可采 图2-6 DS1302模块电路图 用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。 DS1302模块的电路图如图2-6所示,第1脚和第4脚分别接到了电路的VCC和GND,这2个脚是芯片工作的电源输入脚。第8脚接了一个3V的纽扣电池作为时钟芯片的后备电池,可以保证断掉主电源后时钟继续行走。第2和第3脚接了一个32.768K的晶振给芯片提供时钟脉冲,最后,第5、6、7依次连接到单片机的IO口,进行数据的传输。
2.5 光照强度采集电路光敏电阻器(photovaristor)又叫光感电阻,是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。 TLC549是 TI公司生产的一种低价位、高性能的8位 A/D转换器,采用了CMOS工艺,它以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大 图2-7 光照强度采集电路 转换速率为 40000HZ,4MHZ典型内部系统时钟,电源为 3V至 6V。它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。 本设计的智能窗帘有光控自动开关的功能,因此必须采集环境中的光照强度,以便进行光照强度的计算和窗帘开关的控制。光照强度采集使用的方案是光敏电阻,由于光敏电阻采集到的是光照强度的模拟量,因此使用ADC0832将光照模拟量转为数字量再传给单片机进行处理。该模块的电路图如图2-7所示。 2.6 电机驱动模块步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。 由于单片机IO口直接输出的电流非常弱,没办法直接驱动步进电机进行转 图2-8 电机驱动电路 动,因此需要在单片机和步进电机之间加多一个TI公司生产的高耐压、大电流达林顿阵列芯片ULN2003作为电机的驱动芯片。ULN2003具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。电机驱动电路如图2-8所示。 2.7 按键输入模块键盘是人与单片机打交道的主要设备。消除在按键过程中产生的“毛刺”现象。这里采用最常用的方法,即延时重复扫描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。 本设计中由于采用的按键数量较少,只有5 图2-10 按键电路 个按键,分别是“模式切换”、“设置时间”、“设置阈值”、“减”、“加”,故采用了独立键盘的方式,按键的连接图2-10所示。 2.8遥控模块遥控器用法:手动模式下按遥控器左右按键可以开关窗帘 遥控器参数: 1.尺寸:86*40*6.0mm
2.遥控距离: 8米以上 (红外接收头本身质量,中间有无障碍物等因素会影响到遥控距离)
3.发射管红外波长:940Nm4.晶振: 振荡频率455KHz, 红外载波频率: 38KHz
5.面贴材料:0.125mmPET,有效寿命2万次 图2-11 遥控模块 3 软件设计
3.1 总体程序流程图设计本系统的软件流程图如图3-1所示,最开始先进行液晶和时钟芯片的初始化,然后就进入了一个循环处理的过程。包括先读取时钟芯片的日期时间数据,然后在1602液晶上面显示出来,接着读取光照强度并显示。再往下就是按键扫描,如果检测到有按键按下去了,则根据不同的按键进行不同的任务处理。然后根据不同的模式,进行不同的窗帘开关控制。如果是手动模式的话,则根据开窗帘键和关窗帘键对窗帘进行开关控制;如果是定时模式的话,则根据设置的开启时间和关闭时间对窗帘进行控制,而如果是光控模式的话,则判断当前光照是否高于设置的控制阈值,是的话则关闭窗帘,相反则开启窗帘。至此完成一次循环的过程。
3.2 1602液晶程序设计
液晶开始显示之前,必须先确定一个位置,表示要在哪个地方显示,比如第1行第5列的位置。在完成坐标定位之后就可以开始显示内容了。液晶在显示的时候,是一位一位完成的。每次显示一串字符或一个数字的时候,只需在最开始的时候完成一次定位,之后每显示完一个字符,液晶会自动跳到下一个位置的,无需每个字符都定位一次。
图3-2液晶显示流程图
3.3读出DS1302的时间信息
液晶上面的时间会不断的走时刷新,就是靠单片机不断去读取时钟芯片DS1302的时间信息并发到液晶显示更新的。读取时钟芯片的时间信息主要流程是,写入年份寄存器地址0x8D,接着就读取的年份的数据。然后用同样的方式,依次写入寄存器地址0x89、0x87、0x8B、0x85、0x83、0x81,分别读取到月份、日期、星期、小时、分钟、秒钟。读取的流程图如图3-3所示.
4 系统测试与分析
4.1 仿真图说明:仿真实现了手动、定时和自动三种模式,遥控没有实现,但实物是有遥控模式的。光照强度大小是通过改变滑动变阻器的阻值来模拟的,窗帘的开和关是通过步进电机正转、反转模拟的。步进电机的工作方式为四相单四拍,本次模拟的窗帘是对开的,当开的时候,左侧电机正转,右侧电机反转。当关闭窗帘时,左侧电机反转,右侧电机正转。 而且在窗帘打开的时候,P3.1口的灯会亮,关闭的时候,P3.1口的灯会灭。 首次运行时,1602第一排显示现在的时间,第二排显示模式手动和当前光照值。电机的角度为0°,光照值阈值设置为40。
4.2实验结果及分析图4-1 手动打开窗帘 图4-2 手动关闭窗帘 当模式切换到手动模式下,当按下加(手动开启)按键,左侧电机正转,角度最后显示为+45°,右侧电机反转,角度最后显示为+135°,并且灯会亮。如图4-1显示。 当按下减(手动关闭)按键,左侧电机反转,角度最后显示为+135°,右侧电机正转,角度最后显示+45°,并且灯会灭。如图4-2显示。 图4-3 定时打开窗帘 图4-4 定时关闭窗帘 当模式切换到定时模式下,到打开时间,左侧电机正转,角度最后显示为+45°,右侧电机反转,角度最后显示为+135°,并且灯会亮。如图4-3显示。 到关闭时间,左侧电机反转,角度最后显示为+135°,右侧电机正转,角度最后显示+45°,并且灯会灭。如图4-4显示。
图4-5 自动打开窗帘 图4-6自动打开窗帘 当模式切换到自动模式下,光照的阈值设置为40。当光照值为43,超过设定的阈值,左侧电机正转,角度最后显示为+45°,右侧电机反转,角度最后显示为+135°,并且灯会亮。如图4-5显示。
当光照值为35,低于设定的阈值时,左侧电机反转,角度最后显示为+135°,右侧电机正转,角度最后显示+45°,并且灯会灭。如图4-6显示。
全部资料51hei下载地址(注意仿真没有加入遥控功能,实物的源码里面有):
作者:依儿 http://www.51hei.com/bbs/dpj-199436-1.html
|