自动化101 李新 10423070_第1页
自动化101 李新 10423070_第2页
自动化101 李新 10423070_第3页
自动化101 李新 10423070_第4页
自动化101 李新 10423070_第5页
已阅读5页,还剩15页未读, 继续免费阅读

下载本文档

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

文档简介

1、温控自动电风扇的设计Automatic temperature control fan信息工程学院专业:自动化101姓名:李新学号:10423070摘 要本文的目的是提高风扇的性能,改变转速为实现温度的自动控制或手动控制,并显示速度和室温,硬件设计主要是使用三极管驱动继电器控制风扇电机、LCD显示、温度传感器测温。单片机编程实现转速自动随温度的变化,并显示温度和转速,为了更方便地使用,该系统还设计了手动调整转速的功能。 关键词:单片机 温度传感器 液晶显示AbstractThis paper aims to improve the performance of the fan, the spe

2、ed to achieve automatic control of temperature or manual control ,and shows speed and room temperature.Hardware design is mainly use triode driving relay to control the fan motor,and LCD to display as well as temperature sensor to measure.MCU programming for the fan speed automatically changes with

3、temperature, and show that the temperature and speed, in order to be more convenient to use, the system is also designed to manually adjust the speed function. Keywords: MCU temperature sensor LCD 传统的风扇是只高,中,低三个风速挡,并且是人工开关,还不知室温是多少,该用哪个挡。而这个设计是一新技术,在电子行业,单片机上早已经广泛的应用。而这个是单片机电路板和溫度探测相結合,将其应用于家用电风扇的转速

4、精确控制上,能够有良好的表现。温控电风扇是采用多挡全自动变频器,使得对电风扇各挡风量的调节更加细化,使得电风扇的控制更具人性化,同时它也具有全自动、控制简单、智能化、制作容易。在日常生活中,单片机得到了越来越广泛的应用。它体积小、重量轻、集成度高、抗干扰能力强、性价比高,尤其适合应用于小型的自动控制系统中。电风扇起停的自动控制,能够解决夏天人们晚上熟睡时,由于夜里温度下降而导致受凉,或者从睡梦中醒来亲自开关电风扇的问题,具有重要的现实意义。本系统由温度传感器DS18B20、单片机、LCD1602液晶显示、继电器及其它外围器件组成。使用价格低廉且性能较好到的AT89S52单片机作组要控制器,通过

5、修改程序可方便实现系统的升级,系统的框图结构如图1所示。 图1 系统框图1硬件电路设计1.1 电源模块 电源电路采用LM7805集成稳压器作为稳压器件,用最常见的接法,220V交流电压经过整流滤波后送给LM7805稳压,在输出端接有10uf电容来进一步滤除高频纹波,得到比较稳定且纹波小得5v电压。电路如图2所示:图2 电源电路1.2液晶显示模块显示模块主要是由单片机控制LCD液晶显示器实现的。1602液晶是工业字符型液晶,能够同时显示1602即32个字符(16列2行),引脚如图3所示。   图3 1602引脚图1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多

6、出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样。该液晶主要是显示测得的风扇转速与室内温度,AT89S52单片机利用DS18B20采集温度、光电对管测速,从而它处理后利用液晶显示。显示屏的亮暗程度可通过电位器R2调节,由于单片机是通过P0口与1602实现的数据转换,故而需要增加上拉电阻,液晶电路如图4所示。图4 液晶显示电路1.3测温模块温度采集主要由DS18B20实现,它是单线数字温度传感器,可应用于多种场合。该系统设计用到的DS18B20可用于锅炉测温,机房测温,农业大棚测温,洁净室测温等各种非极限温度场合。它具有耐磨耐碰,体积小,使用方便

7、等特点,适用于各种狭小空间设备数字测温和控制领域。它的测温电路简单,只需与单片机I/O口直接相连即可,电路如图5所示。图5 温度采集电路1.4测速模块该模块主要用光电对管实现的,它内部结构就是一个发光二极管和一个光敏三极管,分为反射式和直射的,都是通过集聚光线来控制光敏三极管的导通与截止,其主要原理是光电转换。光电对管中发光二极管不断向光敏三极管发光,产生电信号,而风扇转动一次会遮挡二者一段时间,通过电路把电信号传给单片机后计算出遮挡时间,即可测出风扇转速。测速电路主要通过运放对光电对管的处理达到的,电路如图6所示,其中R3可以调节测量灵敏度,在风扇中粘有黑胶带用于测量。图6 风扇测速电路1.

8、5电机控制模块该模块主要由人工控制和温度控制两部分组成。其中控制电机的继电器选用HG4098。当系统选择利用温度控制转速时,将拨码开关K1关闭即可。这时系统在工作时,在DS18B20检测温度后,送由单片机处理,从而控制三个控制速度档的继电器。这样就达到了温度自动控制风扇转速的功能,其中温度范围的控制由程序实现。当系统选择手动控制速度档时,只需将K1打开即可。而拨码开关的其它三个开关就是控制三个速度档的调节。在设计拨码开关时,由于单片机的P2口的内部结构,也就是它在空置的情况下处于高电平,故而将拨码开关的公共端接地,这样单片机只要能够检测到低电平即可。该模块的电路如图7所示。 图 7 电机控制电

9、路1.6 系统总原理图 通过以上分析可知本系统是主要由电源模块、液晶显示模块、测速模块等组成,经过软件调试和硬件调试后,在室内环境中可以使用,该系统的总原理图如图8所示。图 8 系统总原理图2软件流程设计系统的各个模块起不同的功能,经分析后得该系统的程序流程图,如图9所示。其中各个模块的流程在此省略,只将各个模块的大体链接画出,程序见附录A程序1.1所示。图9 软件流程图 3误差分析 在硬件和软件调试后,测得了俩组关于风扇转速与温度、风扇转速与拨码开关的数据,如表1.1所示,经拨码开关验证,该数据是正确的,从而知设计可靠。 表1.1 温度控制速度数据温度()23.2024.6425.7826.

10、9227.0229.1230.2832.42速度()0781110111314但是由于光电对管会由于光照强度而发生测量的不精确,故而风扇转速的测量有时会出现不准确的现象,预计可以利用交流耦合设计的思想解决此问题。4 结论AT89S52单片机体积小,重量轻,抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好。利用单片机实现的自动温控电风扇系统,性能可靠,成本较低,适合大众消费,有利于提高人们的睡眠质量,有重要的应用价值。其中温度的准确采集、继电器控制是实现本系统的关键。电路和程序稍作修改,还可以实现其他一些功能,比如大棚温度控制、电动机温度检测、自动定时闹钟、家庭电器自动控制系统等,系统

11、移植性强参考文献:1李长云.C语言程序设计.北京:国防工业出版社.20112周润景, 徐宏伟, 丁莉编著.单片机电路设计、分析与制作.北京:机械工业出版社.20103付少波,付兰芳主编.传感器及其应用电路.北京:化学工业出版社.20114周杏鹏. 传感器与检测技术. 北京:清华大学出版社.2010 附录A(程序)程序1.1#include<reg51.h>#include"intrins.h"sbit RS=P10; /1602 kongzhiduansbit EN=P12;sbit RW=P11;sbit DQ=P13; /18B20cewenduansbit

12、 speed1=P20;sbit speed2=P21;sbit speed3=P22;sbit stop=P24;sbit button1=P25;sbit button2=P26;sbit button3=P27;#define uchar unsigned char#define uint unsigned intvoid Init18B20(void); /初始化void Write18B20(uchar ch);/写数据unsigned char Read18B20(void);/读数据 void Delay15(uchar n); void Delay10ms(uint delay

13、_num);void Display(void);void sudu(uint temp3 ); void sudu2(); Code uchar decimalH=00,06,12,18,25,31,37,43,50,56,62,68,75,81,87,93;code uchar decimalL=00,25,50,75,00,25,50,75,00,25,50,75,00,25,50,75;uint ResultTemperatureH ,ResultTemperatureLH,ResultTemperatureLL;/整数,小数高位,小数低位 */uint ResultSignal;ui

14、nt temp;/*/测速/float f=0;/uchar LED0_data,LED1_data,LED2_data,LED3_data;uchar i=0;/*显示模块*/延时函数void delay_1us(void) /1us延时函数 _nop_(); void delay_nus(unsigned int n)/N us延时函数 unsigned int i=0; for(i=0;i<n;i+) delay_1us(); void delay_1ms(void) /1ms延时函数 unsigned int i; for(i=0;i<1140;i+); void dela

15、y_nms(unsigned int n) unsigned int i=0; for(i=0;i<n;i+) delay_1ms(); /*/写指令函数void write_command(unsigned char com) delay_nus(10); /delay RS=0; EN=1; P0&=0x00;/清高四位 P0=com;/写高四位 EN=0; /写数据函数void write_data(unsigned char datas) delay_nus(10); RS=1; EN=1; P0&=0x00; P0=datas; EN=0;/初始化LCD1602

16、函数void LCD_init(void) P0=0xff;/设为输出 write_command(0x38);/8位显示-对应功能设置指令 write_command(0x0c);/显示开-对应开关显示控制指令 write_command(0x01);/清屏-对应清屏指令 delay_nms(2); /delay void LCD_set_addr(unsigned char x,unsigned char y) /x:015,y:01 if(y) write_command(0xc0+x); /第二行显示 else write_command(0x80+x); /第一行显示/写字符函数vo

17、id LCD_write_char(unsigned char X,unsigned char Y, unsigned char datas) /列x=015,行y=0,1 LCD_set_addr(X,Y); /写地址 write_data(datas); /写字符串函数void LCD_write_string(unsigned char X,unsigned char Y, unsigned char *s) /列015,行y=0,1 LCD_set_addr(X,Y); /写地址 while(*s) write_data(*s);s+; /*/*测温模块*/读温度数据unsigned

18、char Read18B20(void) unsigned char ch; unsigned char q ; for(q=0;q<8;q+) ch=ch>>1; DQ=0; _nop_(); DQ=1; _nop_();_nop_();_nop_();_nop_(); if(DQ=1) ch=ch|0x80; else ch=ch&0x7f; Delay15(3); DQ=1; return (ch);/写指令void Write18B20(uchar ch) uchar i; for(i=0;i<8;i+) DQ=0; Delay15(1); DQ=ch&

19、amp;0x01; Delay15(3); DQ=1; ch=ch>>1; _nop_(); /初始化void Init18B20(void) DQ=0; Delay15(33);/至少延时480us DQ=1; Delay15(10);/至少延时100us /延时子程序void Delay15(uchar n) do _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); n-; while(n); vo

20、id Delay10ms(uint delay_num) uchar i; while(delay_num-) for(i=0;i<125;i+) ; /温度显示void Display(void) uint i,j,q; LCD_init(); write_command(0x01); write_command(0x01); delay_nms(2); q=ResultTemperatureH/100; i=(ResultTemperatureH%100)/10; j=ResultTemperatureH-(i*10+q*100); temp=q*100+i*10+j; if(Res

21、ultSignal) LCD_write_string(0,0,"T:- . "); else LCD_write_string(0,0,"T:+ . "); LCD_write_char(3,0,i|0x30); LCD_write_char(4,0,j|0x30); LCD_write_char(6,0,(ResultTemperatureLH/10)|0x30); LCD_write_char(7,0,(ResultTemperatureLH%10)|0x30);/*/*测速模块*/*定时器初始化*/void initime() TMOD=0x51

22、; /T1计数器,T0定时器,方式1 TL0=(65536-10000)%256; TH0=(65536-10000)/256; TL1=0; TH1=0; ET0=1; EA=1;/速度显示display(uint f) uint a=0,b=0,c=0; f=f/3.14; a=f/100; b=(f%100)/10; c=f-(a*100+b*10); delay_nus(50); LCD_write_string(0,1,"speed:"); LCD_write_char(6,1,a|0x30); LCD_write_char(7,1,b|0x30); LCD_wr

23、ite_char(8,1,c|0x30); LCD_write_string(9,1,"r/s");timer()interrupt 1 using 2 i=i+1; if(i=100) i=0; f=(TH1*256+TL1); TL1=0; TH1=0; TL0=(65536-10000)%256; TH0=(65536-10000)/256;void sudu(uint temp3) if( (temp3<26)&&(temp3>23)|(temp3=26) speed1=0; speed2=0; speed3=1; else if(tem

24、p3<30)&&(temp3>26) speed1=0; speed2=1; speed3=0; else if(temp3>30)|(temp3=30) speed1=1; speed2=0; speed3=0; else speed1=0; speed2=0; speed3=0; void sudu2() if(button1=0)&&(button2=1)&&(button3=1) speed1=0; speed2=0; speed3=1; else if( (button2=0 ) &&(button3=1) ) speed1=0; speed2=1; speed3=0; else if(button3=0) speed1=1; speed2=0; speed3=0; else speed1=0; speed2=0; speed3=0; main() uint i; uint TemH,TemL,delay; speed3=0;/速度初始化 speed2=0; speed1=0; Init18B20(); initime(); TR0=1; TR1=1; RW=0; button1=1;/按键初始值 bu

温馨提示

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

评论

0/150

提交评论