设计说明书
题 目: 智能电动窗帘设计 院系名称: 专业班级: 学生姓名: 学 号: 指导教师:
评语: 设计成绩: 指导教师: 创新设计与实训任务书
学院(系) 专 业 实训题目 选题 教师 姓 名 专业技术职务 智能电动窗帘设计 本设计要求基于单片机实现电动窗帘的智能控制,要求实现功能: 1.根据光线强度自动来实现窗帘的打开与关闭。? 2.还可实现按键控制功能,可以通过按键将窗帘拉开或关闭,此时不受光线的控制。 课题简介 通过本次创新设计使得学生巩固所学的理论与技能,提高学生的实践能力和应用能力,初步掌握实际的工程设计方法,设计步骤,为将来的学习与毕业设计打下坚实的基础。 (包括应具备的条件、图表等) 设计要求:? 1.了解单片机工作原理,提出控制方案,要求经济可靠。 报告要求 2. 熟悉protel或其它画图软件,完成硬件电路设计。 3. 选择元器件,搭建硬件电路。 4. 完成软件与硬件设计并加以调试。 5. 按照要求撰写创新设计与实训设计说明书。 课题预计 工作量大小 大 适中 √ 小 课题预计 难易程度 难 一般 √ 易 [1] 胡汉才.单片机电路及其接口技术[M].清华大学出版社,2004. 参考资料 [2] 谭浩强.C程序设计(第四版)清华大学出版社,2010. [3] 刘印春.传感器原理. 北京国防科技大学出版社,2006 [4] 瞿贵荣.电动窗帘红外遥控电路.家庭电子,2005 目 录
1 设计背景.......................................................... 1 2设计目的与要求.........................................................................................................1 2.1设计目的.........................................................................................................1 2.2设计要求.........................................................................................................1 3 设计方案....................................................................................................................2 3.1系统原理框图.................................................................................................2 3.2电源模块设计.................................................................................................3 3.3复位电路.........................................................................................................3 3.4晶振电路.........................................................................................................4 3.5光敏电阻AD转换电路....................................................................................4 3.6电机驱动电路.................................................................................................6 3.7窗帘位置检测电路.........................................................................................6 3.8按键控制电路.................................................................................................8 4程序设计框图 ...................................................... 9 总 结............................................................. 10 参 考 文 献......................................................... 5 程
序...............................................................
...............................................................
................12
1 设计背景
随着人民生活水平的不断提高,人们对家庭生活舒适性的需求越来越强烈,窗帘作为每个家庭生活中最必须的家居用品之一,自然也需要满足人民更舒适性的需求。窗帘最基本的作用无非是保护业主的个人隐私以及遮阳挡尘等功能,但传统的窗帘您必须手动去开关,每天早开晚关也是挺麻烦的,特别是别墅或复式房的大窗帘,比较长,而且重,用时需要很大的力才能开关窗帘,特别不方便;于是智能电动窗帘应运而生。
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
在设计本系统时,面对各种检测对象和大量控制单元,需要利用各种接口标准和MCU进行连接,再经过MCU 进行数据处理,实现实时测控。而此时采用单片机来实现智能家居控制系统不仅具有采集控制方便、简单、灵活等优点,而且可以大幅度提高采各模块和芯片的协调性,从而大大提高系统的可利用性。此次系统设计系统正是把利用AT89C51 单片机的优点,顺利的完成了本设计的要求。并且实现了手动和自动控制功能,为控制家居设备提供了良好的基础。
2 设计目的与要求
2.1设计目的
智能电动可以根据外界光照强度的变化实现窗帘的张开与关闭,即早上拉开窗帘,晚上关闭窗帘,也可以认为操控窗帘,给人营造温馨与舒适的环境。
通过本次创新设计使得学生巩固所学的理论与技能,提高学生的实践能力和应用能力,初步掌握实际的工程设计方法,设计步骤,为将来的学习与毕业设计打下坚实的基础。
2.2设计要求
(1)手动控制:实现按键控制功能,可以通过按键将窗帘拉开或关闭此时不受光线的控制。
(2)光线强度自动控制:窗帘的关闭和开启通过光线强度自动完成窗帘的开启或关闭操作控制,“天黑关闭,天亮打开”可以智能管理。
3 设计方案
3.1系统原理框图
图3.1 系统原理框图
3.2电源模块设计
78L05是一种固定电压(5V)三端集成稳压器,其适用于很多应用场合.象牵涉到单点稳压场合需要限制噪声和解决分布问题的在-卡调节.此外它们还可以和其它功率转移器件一起构成大电流的稳压电源,如可驱动输出电流高达100毫安的稳压器. 其卓越的内部电流限制和热关断特性使之特别适用于过载的情况.当用于替代传统的齐纳二极管-电阻组的时候,其输出阻抗得到有效的改善,其偏置电流大大减少.
78L05是“78”系列稳压集成电路,用在输出5V的电源上并起稳压作用。 也就是说,你从78L05的输入端输入一个比5V高的电压,然后78L05经过稳压作用,就输出5V的电压。本智能电动窗帘设计采用的是7.2v电压,7.2v的电压是由220v电压经过变压器整流得到的,经过稳压模块78L05转换后得到5v的电压。
图3.2 电源电路
3.3复位电路
单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。
本设计采用的控制器是STC89C51单片机,其复位电路如下图所示: 图3.3 复位电路
3.4晶振电路
理论上来说,振荡频率越高表示单片机运行速度越快,但同时对存储器的速度和印刷电路板的要求也就越高。如同木桶原理。同时单片机性能的好坏,不仅与CPU运算速度有关,而且与存储器的速度、外设速度等都有很大关系。因此一
般选用6~12MHZ。并联谐振电路对电容的值没有严格要求,但会影响振荡器的稳定、振荡器频率高低、起振快速性等。所以一般C1、C2选值20~100pF,在60~70pF时振荡器有较高的频率稳定性。陶瓷封装电容可以进一步提高温度稳定性。
STC89C51单片机工作需提供一个时序,因此,本次智能窗帘的设计采用的
是11.0592MHz的晶振,给51单片机提供工作时序,其电路图如下图所示:
图3.4 晶振电路
3.5光敏电阻AD转换电路
光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些材料在特定波长的光照射下,产生载流子参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。
光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。
AD转换离不开采样保持电路,采样保持电路也叫取样保持电路,它的定义是指将一个电压信号从模拟转换成数字信号时需要保持稳定性直到完成转换工作。在采样电压快速变化时,需要用到具有FET开关的采样与保持电路。
PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。
PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由I2C总线的最大速
率决定。本设计采用的光敏电阻AD转换电路如下图所示:
图3.5 光敏电阻AD转换电路
3.6电机驱动电路
用直流电流来转动的电动机叫直流电动机。因磁场电路与电枢电路连结之方式不同,又可分为串激电动机、分激电动机、复激电动机,在实际的直流电动机中,也不只有一个线圈,而是有许多个线圈牢固地嵌在转子铁芯槽中,当导体中通过电流、在磁场中因受力而转动,就带动整个转子旋转。这就是直流电动机的基本工作原理。
智能电动窗帘设计采用的是QRK-380DA电机,此款电机,性能可靠,坑干扰能力强,动力大,价格便宜,性价比高,非常适合本次创新设计,其驱动电路如下所示:
图3.6 电机驱动电路
3.7窗帘位置检测电路
红外线又称红外光,它具有反射、折射、散射、干涉、吸收等性质。任何物质,只要它本身具有一定的温度(高于绝对零度),都能辐射红外线。红外线传感器测量时不与被测物体直接接触,因而不存在摩擦,并且灵敏度高,响应快。?
红外线传感器包括光学系统、检测元件和转换电路。光学系统按结构不同可分为透射式和反射式两类。检测元件按工作原理可分为热敏检测元件和光电检测元件。
热敏元件应用最多的是热敏电阻。热敏电阻受到红外线辐射时温度升高,电阻发生变化,通过转换电路变成电信号输出。光电检测元件常用的是光敏元件,通常由硫化铅、硒化铅、砷化铟、砷化锑、碲镉汞三元合金、锗及硅掺杂等材料制成。
红外线传感器特别是利用远红外线范围的感度做为人体检出用,红外线的波长比可见光长而比电波短。红外线让人觉得只由热的物体放射出来,可是事实上不是如此,凡是存在于自然界的物体,如人类、火、冰等等全部都会射出红外线,只是其波长因其物体的温度而有差异而已。人体的体温约为36~37°C,所放射出峰值为9~10μm的远红外线,另外加热至400~700°C的物体,可放射出峰值
为3~5μm 的中间红外线。
窗帘位置检测的原理是通过红外传感器,通过51单片机控制来获取窗帘底部所在的位置,进而为单片机控制电机是否工作提供依据。窗帘的拉开与闭合,以及拉开的多少,与外界光照强度关,多个模块共同工作,从而做到智能控制窗帘,检测窗帘位置电路如下图所示:
图3.7.1 窗帘位置检测电路 图3.7.2 窗帘位置检测电路
3.8按键控制电路
在按键控制电路中,其中s2代表夜间模式控制开关,s3代表手动控制与
智能控制切换开关,s4代表拉开窗帘,s5电表关闭窗帘,s6代表停止开关。其按键功能的实现离不开软件的编程,即程序的控制。按键控制电路如下图所示:
图3.8按键控制电路
4 程序设计框图
本设计采用的程序框图如下图所示:
图4.1程序流程
总 结
在老师的指导下经过自己的不懈努力,终于完成了智能电动窗帘的设计,实现设计要求的所有功能,完成了一个从硬件到软件完整的设计流程,获益匪浅。通过这次创新设计,我对51单片机以及C语言编程有了一个更深刻的了解,也了解了现代智能窗帘的工作过程以及设计流程,做到了理论知识与实践的相结合。不仅强化了自己所学习的课本知识,也锻炼了自己的动手能力。 最后,非常感谢指导老师的耐心指导,从而使本次创新设计完美结束!
参 考 文 献
[1] 胡汉才.单片机电路及其接口技术[M].清华大学出版社,2004.
[2] 谭浩强.C程序设计(第四版)清华大学出版社,2010. [3] 刘印春.传感器原理. 北京国防科技大学出版社,2006 [4] 瞿贵荣.电动窗帘红外遥控电路.家庭电子,2005
[5] 张毅刚,彭喜元,蒋守达,等编着.新编MCS-51单片机应用设计.哈尔滨:哈尔滨工业大学出版社,2003
[6] 李东生等编着.Protel99SE?电路设计技术入门与应用.北京:电子工业出版社,2002.2
[7] 王大为.实用电子电路大全[M].北京:电子工业出版社,1992?
[8] 毛谦敏主编.单片机原理及应用系统设计.北京:国防工业出版社,2005.8
[9] 何立民.单片机应用系统设计.北京:航天航空大学出版社,2001年. [10] 李广弟.单片机基础.北京:北京航空航天大学出版社,2001年. [11] 何希才.新型实用电子电路400例.电子工业出版社,2000年. [12] 赵负图.传感器集成电路手册,第一版.化学工业出版社,2004年. [13] 杨邦文.新型实用电路制作200例.北京:人民邮电出版社,1998年. [14] 邹其洪.电工电子试验与计算机仿真.北京:电子工业出版社,2003年. [15]《电子世界》杂志.《电子世界》出版部,2004年5月刊第一版 [16]《九五年度电子设计精选》.北京理工大学出版社,1997年第一版 [17]王新贤.《通用集成电路速查手册.科学技术出版社,2002年第一版
[18]杨素行.《模拟电子技术基础简明教程》.高等教育出版社,1998年10月第二版
[19]杜坤梅.《电机控制技术》. 哈尔滨工业大学出版社,2002年2月第二版 [20]肖景和,赵 健.实用遥控电路.北京:人民邮电出版社,2002.7
[21]王建校,杨建国,51系列单片机及C51程序设计.北京:科学出版社,2002.4
程序
#include #define uint unsigned int #define uchar unsigned char #define AddWr 0x90 //写命令 #define AddRd 0x91 //读命令 sbit RST=P2^4; //复位引脚 sbit Sda=P2^0; sbit Scl=P2^1; sbit dula=P2^6; sbit wela=P2^7; sbit hongwai1 = P1^0;//红外传感器1 sbit hongwai2 = P1^1;//红外传感器2 sbit hongwai3 = P1^2;//红外传感器3 sbit hongwai4 = P1^3;//红外传感器4 sbit mada1 = P1^6; sbit mada2 = P1^7; bit ADFlag; //AD转换标志位 uint dianya; //d存储电压变量 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay_us(void) //延时函数 { ; ; ; } void mo_open(void) { } void mo_close(void) { } void mo_stop(void) { } void delay(uint x) { } uint a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); mada1 = 0; mada2 = 0; mada1 = 0; mada2 = 1; mada1 = 1; mada2 = 0; void display(uchar a,uchar b)//数码管显示函数 { P0=table[a]; dula=1; dula=0; P0=0xfe; wela=1; wela=0; delay(3); P0=0x80; dula=1; dula=0; P0=0xfe; wela=1; wela=0; delay(3); P0=table[b]; dula=1; dula=0; P0=0xfd; wela=1; wela=0; } delay(3); P0=0x3E; dula=1; dula=0; P0=0xf7; wela=1; wela=0; delay(3); void Start(void)//开始函数 { } void Stop(void)//关闭函数 { Sda=0; Sda=1; delay_us();//延时函数,单位微秒 Scl=1; delay_us(); Sda=0; delay_us(); Scl=0; } delay_us(); Scl=1; delay_us(); Sda=1; delay_us(); Scl=0; void Ack(void)//应答函数 { } void NoAck(void)//无应答函数 { Sda=1; delay_us(); Scl=1; delay_us(); Sda=0; delay_us(); Scl=1; delay_us(); Scl=0; delay_us(); } Scl=0; delay_us(); void Send(uchar Data)//发送函数 { uchar BitCounter=8; uchar temp; do { } while(BitCounter); //等待发送完毕 temp=Data; Scl=0; delay_us(); if((temp&0x80)==0x80)//如果发送寄存器有数据 Sda=1; Else //发送寄存器没有数据 Sda=0; Scl=1; temp=Data<<1; //数据左移一位 Data=temp; BitCounter--; } Scl=0; uchar Read(void)//读取函数 { uchar temp=0; uchar temp1=0; uchar BitCounter=8; Sda=1; do { Scl=0; delay_us(); Scl=1; delay_us(); if(Sda) temp=temp|0x01; else temp=temp&0xfe; if(BitCounter-1) { temp1=temp<<1; temp=temp1; } BitCounter--; } } while(BitCounter);//等待数据读取完毕 return(temp); uchar ReadADC(uchar Chl)//读取ADC转换的值 { } void main()//主函数 uchar Data; Start(); Send(AddWr);//发送写命令 Ack();//等待应答 Send(0x40|Chl); Ack(); Start(); Send(AddRd); //发送读命令 Ack(); Data=Read(); Scl=0; NoAck(); Stop(); return Data; { uchar AD_z,AD_x; uchar ADtemp; delay(5); RST=0; delay(5); TMOD |= 0x10;//设置定时器模式 TH1=0xff; //装载定时器时间低位 TL1=0x00; //装载定时器时间高位 EA=1; ET1=1; TR1=1; while(1) { if(ADFlag) //转换开始 { ADFlag=0; ADtemp=ReadADC(0);//获取AD转换值 AD_z=(ReadADC(0))/50; AD_x=((ReadADC(0))%50)/10; } dianya = AD_z*10 + AD_x;//获取电压值 } } if((dianya>=25)&&(hongwai1==1)) { mo_close();//关闭电机 } else if((dianya<25)&&(hongwai3==0)) { mo_open();//启动电机 } else { mo_stop();//停止电机 } display(AD_z,AD_x); void Timer1_isr(void) interrupt 3 using 1//定时器中断服务函数 { static unsigned int j; TH1=0xfb; TL1=0x00; j++; if(j==200) } { j=0; ADFlag=1; } 因篇幅问题不能全部显示,请点此查看更多更全内容