人体感应智能风扇结题报告_第1页
人体感应智能风扇结题报告_第2页
人体感应智能风扇结题报告_第3页
人体感应智能风扇结题报告_第4页
人体感应智能风扇结题报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大学生科技创新“人体感应智能电风扇”结题报告项目名称: 人体感应智能电风扇 负 责 人: 张祥 学 号: 2010401020102 学院专业: 电信学院·10电气工程及其自动化 联系电话:电子信箱: 184542248 指导教师: 郑笔耕 联系电话:人体感应智能电风扇一:引言:在激烈的市场竞争下,虽然电风扇具有广阔的市场空间,但不断新生产品的出现,要使产品更具市场优势,仅仅是靠传统型的电风扇是远远不够的,因此要对传统的电风扇根据市场的需要进行不断的更新,不断的改进,以使自己的产品立于不败之地。传统的电风扇较为突出的缺点是:风扇的风

2、力大小不能根据温度的变化自动的调节风速,对于那些昼夜温差比较大的地区,这个自动调节风速就显得优其的重要了,特别是人们在熟睡时常常没有觉察到夜间是温度变化,那样既浪费电资源又容易引起感冒。传统的风扇是用机械式的定时方式,机械式的定时方式常常会伴随着很大的机械运动的声音,特别是在夜间影响人们的睡眠质量,另个机械式的定时有一定的局限性,定时范围有限,而且机械式的容易坏。传统的电风扇没有单片机控制电风扇的功能,对平时调节风扇风速或其它对风扇的调节,而又不想走近风扇带来很多的不便。鉴于以上方面的考虑,我们需要设计一种智能电风扇控制系统来解决这些问题本设计为一种人体感应温控风扇系统,具有灵敏的温度感测和人

3、体感应功能,系统stc89C52 单片机作为控制平台对风扇转速进行控制。人体红外感应可感知人的存在,自动开关风扇。可由用户设置高、低档位,测得温度值在高低温度之间时打开风扇强弱风档,当温度升高超过所设定的温度时自动切换到大风档,当温度小于所设定的温度时自动降低风扇档位,控制状态随外界温度而定。同时,能够由人工设定风扇档位不受温度控制,灵活性强。所设高低温值保存在温度传感器DS18B20内部E2ROM中,掉电后仍然能保存上次设定值,性能稳定,控制准确。关键词:自动控制 人体感应 单片机 温控 手控 风扇二:实验过程本设计是以51单片机为主要控制核心,用51单片机系统对用户设定信号数据的采集以及分

4、析,能过各种可控型电子元器件对电风扇各种工作状态的控制,以达到用户需求。设计的功能要求 风速从高到低设置4个档位,并且每个档位都可以由用户设置或者根据温度自动调节。 风扇可以自动的根据环境的温度调节风扇风速的档位,温度上升2自动上升一个档位,温度每降低2自动下降一个档位。 设置数码管显示当前的工作状态以及温度,使其更具人性化。 自动模式时,感应人的存在而自动控制风扇的开关。方案论证1传感器部分方案一:采用热敏电阻采用热敏电阻,可满足40摄氏度至90摄氏度测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测1摄氏度的信号是不适用的。而且在温度测量系统中,采用单片温度传感器,比如AD590,LM

5、35等.但这些芯片输出的都是模拟信号,必须经过A/D转换后才能送给计算机,这样就使得测温装置的结构较复杂.另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量.即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。方案二:采用DS18B20温度传感器采用DS18B20数字温度传感器。DS18B20数字温度传感器芯片是以9位数字量的形式反映器件的温度值。DS18B20数字温度传感器通过一个单线接口发送或接受信息,因此在中央微处理器和DS18B20之间仅需一条连接线(加上地线)。用语读写和温度转换的电源可以从数据线本身获得,无需外部电源。它可以直接将模拟温度信号转化为数字信号

6、,降低了电路的复杂程度,提高了电路的运行质量。 综合考虑,选择方案DS18B20进行温度测量。 2调速方式的选择方案一:采用PWM控制PWM是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量。PWM 具有很强的抗噪性,且有节约空间、比较经济等特点。方案二:采用可控硅控制实际中通过控制双向可控硅的导通角,使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速,实现各档位风速的无级调速。从本设计要求综合考虑实际中选择方案一。3温度控制模块设计方案一:采用红外遥控器+红外遥控解码:红外遥控器的使用大大方便了用户,使他们可以在一定范围内实

7、现对本系统的远程控制,符合当代人的生活习惯,而且红外遥控器的技术已经相当成熟,使用也比较方便。方案二:选用键盘:假如使用键盘,用户就只能走进本控制系统去控制该系统已完成自己想要的操作。此方案设计与制作比较简单,且能完全完成既定功能。综合各方面因素,采用方案二。4显示电路的设计方案一:LCD1602液晶屏:LCD1602液晶屏是16*2的字符型液晶,可以显示英文26个字母的大小写,阿拉伯数字09,及一些简单的符号。该液晶屏操作简单,显示功能强大。方案二:数码管:虽然数码管的显示位数有限,且只能显示一些简单的字符。但是在本课程设计中,所需要的数码管不多,少量数码管即可符合设计要求,估可采用。综上所

8、述,我们选择了数码管作为显示模块。 系统简述本系统由人体红外感应、集成温度传感器、单片机、LED数码管、发光二极管、驱动芯片、直流电机及一些其他外围器件组成。辅助元件包括发光二极管、电阻、晶振、电源、按键等。使用具有价廉易购的stc89S52单片机编程控制,通过修改程序可方便实现系统升级。主程序流程图进入手动模式根据温度驱动电机开关初始化检测DS18B20温度转换命令读温度温度BCD码处理显示温度等待模式转换键进入温控模式YK2K2温度处理函数检测加减档位键根据档位调整电机风速人体感应红外系统各器件简介、DS18B20 单线数字温度传感器简介有3 引脚TO92 小体积封装形式。温度测量范围为-

9、55+125,可编程为9 位12 位A/D 转换精度,测温分辨率可达0.0625。被测温度用符号扩展的16 位数字量方式串行输出。工作电压支持3V5.5V 的电压范围,既可在远端引入,也可采用寄生电源方式产生。DS18B20 还支持“一线总线”接口,多个DS18B20可以并联到3 根或2 根线上,CPU 只需一根端口线就能与诸多DS18B20 通信。DS18B20 内部结构及管脚DS18B20 内部结构如图所示,主要由4 部分组成:64 位ROM、温度传感器、非挥发的温度报警触发器TH 和TL、配置寄存器。其管脚排列如图所示,DQ 为数字信号端,GND 为电源地,VDD 为电源输入端。2 st

10、c89C52 单片机简介stc 89C52 是一种带4K字节闪存可编程可擦除只读存储器(FPEROM)256B片内RAM的低电压,高性能CMOS8 位微处理器。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能8 位CPU 和闪烁存储器组合在单个芯片中,stc 89C52 是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚接法:P0口作为数码管段选,P1.1到P1.3作为数码管位选,P2.0到P2.3作为led显示,P3.0到P3.3作为动合触点开关,P3.4作为直流电机PWM驱动,P3.5接DS18B

11、20温度感应,P3.6接红外人体感应。3人体红外感应HC-SR5011.感应模块通电后有一分钟左右的初始化时间,在此期间模块会间隔地输出0-3次,一分钟后进入待机状态。2.应尽量避免灯光等干扰源近距离直射模块表面的透镜,以免引进干扰信号产生误动作;使用环境尽量避免流动的风,风也会对感应器造成干扰。3调节距离电位器顺时针转,感应距离增大(约7米),反之感应距离减小(约3米)。调节延时电位器顺时针转,感应延时加长(约300S),反之,感应延时减短(约5S)产品型号HC-SR501人体感应工作电压范围直流电压4.5-20V静态电流<50uA电平输出高3.3 V /低0V触发方式L不可重复触发/

12、H重复触发(默认重复触发)延时时间0.5-200S(可调)可制作范围零点几秒-几十分钟封锁时间2.5S(默认)可制作范围零点几秒-几十秒电路板外形尺寸32mm*24mm感应角度<100度锥角工作温度-15-+70度感应透镜尺寸直径:23mm(默认)4 八段LED 数码管本系统使用四个八段LED数码管作为温度和风扇档位显示,前三位显示温度,最后一位显示档位。公共阳极。5驱动芯片ULN2803 ULN2803, 8个NPN达林顿晶体管,连接在阵列非常适合逻辑接口电平数字电路(例如TTL,CMOS或PMOS上/ NMOS)和较高的电流/电压,如电灯,电磁阀,继电器,打印锤或其他类似的负载,广泛

13、的使用范围:计算机,工业和消费应用。所有设备功能由集电极输出和钳位二极管瞬态抑制。 该ULN2803是专为符合标准TTL,而制造ULN2804适合6至15V的高级别CMOS或PMOS上。该电路为反向输出型,即输入低电平电压,输出端才能导通工作。各部分电路设计1 电源电路电源电路采用LM7805集成稳压器作为稳压器件,用典型接法,220V电源整流滤波后送入LM7805稳压,在输出端接一个470U和0.1U电容进一步滤除纹波,得到5V稳压电源。电路如图4所示。2 数码管显示电路数码管显示电路采用共阳极四位数码管以及9012三极管作为驱动数码管发亮。其连接方式如下:应用单片机P0口连接八段数码管,用

14、P1口的P1.0P1.3四个端口作为数码管的片选信号输出端口,其中要用9012(PNP型)三极管做驱动。为了防止烧坏数码管,所以给数码管各段各加一个50k的限流电阻。要显示的数据通过P0口送给数码管显示,通过P1口的P1.0P1.3四个端口分别对数码管进行位选,事实上数码管是间断被点亮的,只是其间断时间十分短,扫描周期在20ms以下,利用人眼视觉暂留,我们基本看不出它们的闪烁。3温度采集、控制模式设定以及复位电路这一部分主要是由DS18B20,四个按键。 开关设定主要是通过按键K1来设定的。模式转换键由K2来完成,可以实现温度控制风速和手动设定风速的功能。手动设定风扇档位由K3、K4来完成,按

15、一下K3键可以实现档位增一,而按下K4键可以实现档位减一。4 电机驱动电路驱动模块主要采用驱动芯片ULN2803,PWM脉冲信息通过IO口P34输出,然后经过ULN2803时由1B7B输入至7C输出以驱动电机转动。5开关、模式指示灯电路分别通过P10P12作为开关、两个模式指示灯,按下开关键K1 时,开关指示灯亮,表明DS18B20一开始工作;若此时按下K2选择模式一,转为到温度控制风速功能,当达到相应温度范围,电机转速作相应改变;若按下K2选择模式二,转为手动控制风速,此时可以分别按K3或者K4键,以控制档位。三:结果与讨论将本电路用硬件做出来,用编程器将KEIL软件对源程序编译生成的.HE

16、X文件烧入stc89C52单片机,将单片机插入到目标板中,连好线。理想和现实总是很大差距,出了液晶显示可以正常显示外,其他功能都无法正常工作,接下来的事就是最关键的也是最难的 ,调试程序。我们小组成员分块进行了每个模块的功能实现,然后在整合到一起,过然不出所料,离结果越来越近,最终在查资料,问老师,问同学之后。结果终于出来了。四:参考文献1 郭天祥,51单片机c语言教程,电子工业出版社,2 张毅刚,单片机原理及应用,高等教育出版社,3 胡汉才.单片机原理及其接口技术.北京:清华大学出版社,4 吴金戍,沈庆阳,郭庭吉.8051单片机实践与应用.北京: 清华大学出版社,5 王化详,张淑英.传感器原

17、理.天津:天津大学出版社,6 荣俊昌.新型电风扇原理与维修.北京:高等教育出版社。参考网站:百度,电子发烧友网,单片机论坛,51单片机之家等。五:心得大约在去年的这个时候,在无意间听到同学说,学校现在在弄什么科技创新,当时就比较感兴趣,听到这个消息后我就想,如果我也能参加就好了,于是班上问了下,大家都很想做这个,但是没有行动起来,听到这个消息后我就想自己组个队,来做一些小作品,就算是对大学无聊生活的一种慰藉吧。说做就做,再联系了好多同学后,终于确定了人选,我,张月,黄业,操镭,吕超。我们五个组成的小组就开始了我们即将为期一年的创新之旅,可能是初生牛犊不怕虎,尽管我们什么都不懂,当时也不知道51

18、单片机是什么,但我们还是义无反顾了队员是有了,可是,我们做什么呢?困扰了我,由于我们班之前有同学参加过全国大学生电子设计大赛,所以我就打算做一个和51单片机这一块相似的东西,至少在不懂的情况下还可以问一下他们,当时我就在心里默默这么定了,尽管都没争取组员的同意。大体范围是有了,可是,具体做什么还是没方向,那几天我就想热锅上的蚂蚁,记得团团转,心里非常烦躁,回到宿舍打开风扇就趴在椅子上小睡了,睡到一半被冻醒了,我想,哎要是能自动调节温度就好了。“自动调节温度”突然这几个词在我脑海中浮现,为何我不自己做一个自动调节温度的风扇呢,对,就这么搞。经过酝酿,讨论,人体感应只能风扇就这样出来了购买材料,焊

19、接板块,集中学习单片机,c语言我们小组每位成员都忙的如火如荼,从将开发板上的每一个LDE灯点亮到数码管的动态显示,从ds18b20的温度读取到电机的占空比调转。我们一直忙碌着,从来不敢怠慢。尽管我们遇到很多困难,尽管一次次的失败,我们依然在前线。记得刚开始学习定时器计数器一块时候,我总是搞不清楚为什么可以通过寄存器的通知可以决定选什么,该怎样工作,直到后来秦昌研把电路图拿给我看时候,我才恍然大悟,此事深刻感觉到了原理的重要性,我们学习只是应该扎实,不能只知道其表面,不知其根本。在学习温度感应模块时候,我们之前已经把郭天祥书上的类似程序看的很明白了,可是移植到自己的程序上时候,还是不知道为什么,

20、温度显示不出来,后来查了好久才发现是参数设置问题,由此可见,相同的东西,我们不能照搬照抄,要有自己的独立性。另外,每个细节都是很重要的,细节决定成败,不是嘴上说说。在经历和查资料,学软件,分析程序,调试。最终的成品看起来却只有巴掌大,就这巴掌大的东西里面却蕴含着很多心血,真是台上一分钟,台下十年功。当初,学校给我们一年的时间我觉得蛮长的,现在想起来不仅不长,还是挤挤的,要是还有时间,我得要做的更好。设计得更优化,功能更多。在这里我想感谢我们的指导老师郑笔耕老师,记得有好几次遇到困难了,我都有想放弃的冲动,这个时候,郑老师总能给我正能量。例如上次中期检查时候,我有种不想接着做下去的冲动,老师还是

21、给了我继续的动力。很多事情老师都事先替我想好了,我想,如果没有老师的教导和监督,我们小组也就胎死腹中了。不仅是学习了很多东西,最重要的一点就是合作,我们小组的成员都有同感,合作和分工是成功的必备法则。很多东西在书上看了后不以为然,可是每当自己经历后才深刻体会到了他的真谛。总之,本次科技创新将是我人生的一大财富。感谢学校给了我们这次机会,感谢郑老师的帮助,还得感谢帮助我们小组的秦昌研同学。有人说成功男人后一定有一个贤惠的女人,我想说,成功的小组背后少不了一群人的帮助六:图片七:程序#include<reg52.h>#include<stdio.h>#define uint

22、 unsigned int#define uchar unsigned charfloat f_temp;uint temp;uchar bai,shi,ge;/温度显示百、十、个位;uchar num;uint warn1=200;/温度警示值;uint warn2=220;uint warn3=240;uint warn4=260;uint power,mode,flag;/开关、模式转换标志;sbit wx1=P10;/温度显示位选;sbit wx2=P11;sbit wx3=P12;sbit wx_dang=P13;/风扇档位显示数码管位选;sbit led0=P27;/相关模式指示灯

23、;sbit led1=P26;sbit led2=P25;sbit led3=P24;sbit on_off=P23;/开关;sbit modeswitch=P22;/模式转换标志;sbit jia_key=P21;/档位增;sbit jian_key=P20;/档位减;sbit ds=P35;/DS18B20的DQ端;sbit ren=P36; /红外sbit dianji=P37;/电机驱动端;uchar code table=/共阴数码管;0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code table_dot=/带小数

24、点共阳数码管0x40,0x79,0x24, 0x30,0x19,0x12,0x02,0x78,0x00,0x10;uchar code table_dang=/风扇档位数码管;0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void delay(uint z)/延时函数;uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void dsreset(void) /DS18B20复位,初始化函数uint i;ds=0;i=103;while(i>0) i-;ds=1;i=4;while(i>0) i

25、-;bit tempreadbit(void)/读一位数据函数uint i;bit dat;ds=0;i+;ds=1;i+;i+;dat=ds;i=8;while(i>0) i-;return(dat);uchar tempread(void)/读1个字节数据函数uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tempreadbit();dat=(j<<7)|(dat>>1);/读出的数据最低位在最前面,这样刚好一个字节在dat里return(dat);void tempwritebyte(uchar dat)/写入温度字节;ui

26、nt i;uchar j;bit testb;for(j=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb)ds=0;i+;i+;ds=1;i=8;while(i>0) i-;elseds=0;i=8;while(i>0) i-;ds=1;i+;i+;void tempchange(void)/DS18B20开始获取温度并转换dsreset();delay(1);tempwritebyte(0xcc);/写跳过读ROM指令tempwritebyte(0x44);/写温度转换指令uint get_temp()/读取寄存

27、器中存储的温度数据uchar a,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread();/读取低8位b=tempread();/读取高8位temp=b;temp<<=8;temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;f_temp=f_temp+0.05;return temp;void display_dang()/档位显示函数; wx_dang=0; P0=table_dangnum; delay(3); wx_dang=1;disp

28、lay(uint temp) /显示温度 ; bai=temp/100; shi=temp/10%10; ge=temp%10; wx1=0; P0=tablebai;/显示百位; delay(3); wx1=1; wx2=0; P0=table_dotshi;/显示十位; delay(3); wx2=1; wx3=0; P0=tablege;/显示个位; delay(3); wx3=1;void allot(uint t)if(t>warn1)&&(t<=warn2)/大于25度小于27度num=0;else if(t<=warn1)/小于25度num=0;

29、else if(t<warn4)&&(t>=warn3)/小于32度大于30度num=2;else if(t>=warn4)/大于32度num=3;else/在27度和30度之间时是调用显示函数延时num=1; void key() /键盘读取,显示num; if(jia_key=0) delay(5); if(jia_key=0) num+; if(num=4) num=3; while(!jia_key); if(jian_key=0) delay(5); if(jian_key=0) if(num=0) num=1;num-; while(!jian_k

30、ey); void t0_time()interrupt 1 flag+; if (flag=3) flag=1; if (flag=1) dianji=1;switch(num) case 0: TH0=(65536-1000)/256;TL0=(65536-1000)%256;break; case 1: TH0=(65536-2000)/256;TL0=(65536-2000)%256;break; case 2:TH0=(65536-3000)/256;TL0=(65536-3000)%256;break; case 3:TH0=(65536-4000)/256;TL0=(65536-4000)%256;break; if (flag=2) dianji=0;switch(num) case 0: TH0=(65536-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论