1、风扇报告智能电风扇设计报告摘要本系统主要由ET45M052单片机、LCD1602显示屏、固态继电器、普通直流电风、去光电耦合电路、DS18B20和独立键盘等模块组成。该系统的核心部分为ET45M052单片机,通过单片机去控制各个模块,单总线器件DS18B20用于测温,LCD1602用于显示温度和风扇的各种工作状态。该系统电路比较简单,功能强大,操作简单方便。关键词ET45M052单片机,DS18B20,LCD1602,固态继电器等。目 录1.引言42.系统设计4 2.1总体设计方案4 2.2方案论证与比较4 2.2.1调速模块4 2.2.2按钮模块5 2.2.3显示模块5 2.2.4电机驱动模
2、块 5 3.单元电路设计 6 3.1ET45M052单片机模块 6 3.2电机控制模块6 3.3显示模块 7 3.4温度测量模块8 3.5按键及LED发光二极管指示模块84.软件设计8 4.1主程序流程图9 4.2按键处理流程图95.系统测试106.结束语107.参考文献108.附录10 8.1元件清单10 8.2电路原理图11 8.3源程序清单121.引言电风扇曾一度被认为是空调产品冲击下的淘汰品,其实并非如此。作为一种老式家电,电风扇具有价格便宜、摆放方便、体积轻巧等特点。由于大部分家庭消费水平的限制,电风扇作为一个成熟的家电行业的一员,尤其在中小城市,以及乡村将来一段时间内仍然会占有市场
3、的大部分份额。 面临庞大的市场需要的同时,也要提高电风扇的市场竞争力。使之在技术含量上有所提高,应使风扇不仅功能多样,操作简便,而且更加安全可靠。 为此,在现有市场上多功能电风扇的基础上,我们提出了一种新型的智能电风扇,该风扇功能更多,添加了很多人性化的设计,如实时温度测量,让用户随时知道当前温度,从而让电风扇工作于相应状态;自动关机:当温度低于设定值时,自动关机等功能,使电风扇更加人性化,相信其丰富的功能,人性化的设计将会大大提高电风扇的市场竞争力。 2.系统设计2.1总体设计方案要求设计一个智能风扇的控制电路,可以控制风扇的转速、工作时间等。此电路包含: 1. 5V 的直流电源用于系统供电
4、; 2. 单片机控制系统,此系统应该包含有 4 个点按按钮(K1:全速;K2:停止;K3:半速;K4、自然风) ,4 个发光二极管(D1,D2,D3,D4)指示四种状态:全速停止半速自然风; 3. 一个固态继电器用于控制风扇电机电源; 4. 一个电风扇。 当点按面板上的K1 时风扇全速转动,点按 K2 时风扇停止转动,点按K3时风扇半速转动,点按K4 时自然风(一段时间全速,一段时间半速) 。分析题目我们基本上可以通过这样的方案实现题目的要求:通过固态继电器控制的接通与断开控制电风扇与电源的接通和断开,达到实现风扇工作与否的目的。用4个LED来指示电风扇的四个工作状态:全速,半速,自然风,开始
5、/停止。通过按键切换不同的工作状态和调节风速的大小,同时增加DS18B20测温和LCD1602显示功能。2.2方案论证与比较2.2.1调速模块:方案一:三级调速该方案只提供在全速、半速、自然风三者之间转换。操作简单,比较适合老人小孩等使用。但风速级数太小,不能满足用户的一些需要(如:在秋季晚上使用较低风速既能祛暑且风扇噪音更小更有利于用户睡眠)适应范围窄。不能很好的满足市场的需求,故不采纳此方案。方案二:无级调速此方案在最大风速内用户能够随心所欲的调节风扇转速以满足不同需要。而单片机只能输出数字信号,因此该设计需要D/A转换,上需要D/A转换模块才能实现。因此会增加硬件开销,即提高风扇的价格。
6、而更重要的一方面,无级调速在现实使用中意义不大。故放不采用方案。方案三:三级调速与十几调速该方案与方案一比同样有操作简单的特性,而与方案二相比能符合用户多转速、低转速的需要且该方案较容易实现、性价比高,故采用此案。2.2.2按钮模块:方案一:每个按钮控制一个功能此方案需要较多按钮、要使用I/O口扩展且操作复杂、性价比低。故不采用此方案。方案二:同一按钮多功能兼并该方案可大大减少按钮的数量、不必I/O口扩展、操作简单、性价比高。故使用此方案。2.2.3显示模块:方案一:数码静态显示静态显示是指当显示某一字符时,相对应的二极管会被点亮。静态显示的主要优点是显示稳定,亮度大且无闪烁感。系统运行时在需
7、要更新时CPU才去执行相应程序,有利于提高CPU工作效率。但此显示方式,每个数码管显示器需要一个8位的I/O口进行控制,由于单片机的I/O口有限,当显示位数增多时需要I/O扩展性价比、性耗比不高。故不使用此方案。方案二:数码管动态显示动态显示能用较少的I/O口的情况下驱动数码管。且数码管有低功耗、亮度高、高低温等的优点。但数码管显示的数据位数直接与数码管显示器的个数有关,在显示位数较多时需要较多数码管-占用空间较多。且数码显示的数据可视化程度不高,故抛弃该方案。方案三:LCD液晶显示液晶显示器功耗低、体积小、显示内容丰富、超薄轻巧、驱动简单等优点使它足以胜任智能风扇的显示一职。综合性价比及具体
8、情况后我们决定使用1602显示器。2.2.4电机驱动模块方案一:三极管驱动 采用三极管组合放大电路。采用三极管构成的组合放大电路驱动电机,但其稳定性不高,而且易受外界干扰和干扰其他器件。方案二:L298驱动 采用专用驱动芯片L298。L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件
9、工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动两个二相电机,也可以驱动一个四相电机,可以直接通过电源来调节输出电压;并可以直接用单片机的I/O口提供信号;而且电路简单,使用比较方便。综上所诉,本设计采用方案二作为电机的驱动。 3. 单元电路设计 单元电路设计分为五个部分:ET45M052单片机模块,电机控制模块,显示模块,温度测量模块,按键及LED指示模块。3.1 ET45M052单片机模块单片机模块是整个系统的核心,它控制着整个系统的运行,ET45M052单片机外解24M晶振,外围电路由LCD1
10、602显示屏,DS18B20温度传感器,固态继电器,电机等部分组成。 图1. 系统控制图3.2电机控制模块: 采用直流电机控制电风扇的转动,使用固态继电器的断开和闭合控制电机停止和转动。二继电器的断开或者是闭合是通过单片机某个引脚输出高低电平来控制的。同时采用驱动芯片L298作为电机的驱动电路。电路图见图2。图2.电机控制电路3.3显示模块:本系统采用长沙太阳人有限公司生产的1602液晶显示器显示。1602液晶最多能同时显示162=32个字符。液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一
11、个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。 1接口方面,有 8条数据,三条控线。可与微处理器或微控制相连,通过送入数据和指令,就可使模块正常工作。提供多个功能指令:清屏、开关显示,光标显示/关闭,移动与闪烁,整屏移动等多种模式。接口信号说明:引脚号符号引脚说明引脚号符号引脚说明1Vss电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS
12、数据/命令选择(H/L)12D5数据5R/W读/写选择(H/L)13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极基本操作指令:读状态输出RS=L,R/W=H,E=H输出D0-D7=状态字写指令输出RS=L,R/W=L,D0-D7=指令,E=高脉冲输出无读数据输出RS=H,R/W=H,E=H输出D0-D7=数据写数据输出RS=H,R/W=L,D0-D7=数据,E=高脉冲输出无图3.LCD16023.4温度测量模块温度测量才用单总线DS18B20传感器,该产品采用美国DALLAS公司生产的 DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰
13、,体积小,微型化,低功耗,高性能,抗干扰能力强使用方便,封装形式多样,可直接将温度转换成串行数字信号给单片机处理,适用于各种狭小空间设备数字测温和控制领域。 图4.DS18B203.5按键及LED指示模块本系统采用了个按键和五个LED发光二极管,其中K1:开始(全速)/停止,K2:半速/自然风,K3:功能键,K4:切换,K5:增加,K6:减小;五个发光二极管指示不同的工作状态,D1:全速,D2:半速,D3:自然风,D4:用户(但进入调节风速大小进入用户模式),D5:系统刷新(闪烁)。4.软件设计系统软件设计采用C语言编写,对单片机进行编程实现各项功能。程序是在Windows XP环境下采用Ke
14、ilu Vision2软件编写的。仿真平台为Proteus 7.4。介绍系统主程序,测温子程序,显示子程序,调速子程序,延时子程序等,程序见附录。4.1主程序流程图图5.主程序流程图4.2按键处理流程图 图6.按键处理流程图 5.系统测试 本设计的主要目的是使普通直流电风扇的功能更强大,更完善,操作简单方便,主要实现了一下几个方面的功能。 温度监测:可以实时测量温度,为用户选择哪种工作模式提供可靠的参考。 多级调速:提供多个级别的风速和风型,以满足不同用户和不同环境的需要。 液晶显示:液晶显示当前温度,用户随时知道当前温度。 设定关机温度:默认关机温度为25,用户可以上下调节,当温度低于设定值
15、时自动关机。6.结束语 系统总体测试表明,该系统运行良好,各部分功能均正常。在普通直流风扇的基础上增加了一些功能,使之更加智能化,人性化,操作简单方便。本设计使我们所学的知识得到了应用,增强了实际动手能力,同时在设计中也提高发现,分析,解决问题的能力。在设计中我们也遇到了很多问题,但是我们没有退却,依靠网络,书本等资源,一个个把它们的解决了。同时这个设计也存在不足之处,比如安全保护,倾倒保护等其他一些很实用的功能。这个和我们自身的知识水平和时间有关。7.参考文献:1.张毅刚.单片机原理及其应用.北京:高等教育出版社,20032.徐玮.C51单片机高效入门.北京:机械工业出版社,20073.刘建
16、清.从零开始学单片机C语言.北京:国防工业出版社20064.郭浩志.C语言程序设计教程.北京:北京邮电出版社.20058.附录:1.原件清单:元件数量元件数量ET45M0521块固态继电器1个DS18B201个按钮7个LCD16021块万用板1块直流电风扇1台导线若干发光二极管6个电容若干电阻若干24M晶振1个其他2.电路原理图 图7.电路原理图图8.Proteus仿真图3.源程序清单#include /头文件#include /头文件sbit up=P35; /增加键sbit down=P36; /减小键sbit turn=P37; /切换键sbit fun=P00; /功能键sbit mo
17、de=P01; /半速/自然风/全速键sbit on_off=P02; /开关sbit full=P10; /全速指示灯sbit half=P11; /半速指示灯sbit nature=P12; /自然风指示灯sbit custome=P13; /用户模式指示灯sbit new=P14; /刷新灯sbit relay=P16; /继电器sbit motor=P17; /电机uchar disdata1; /温度各位数值uint temp1=25;/默认关机温度值uchar num1,num2,num3,num4,num5,num6,num7,num22=0,flag; /标志位int t0co
18、unt,t1count,speed=10,relay1=1;/*/ 函数申明/*void set_speed(); void keyscan(); void ziranfeng(); void set_temp(); void tj(); void sz(); void gnj(); void mod(); void mo();/ 延时程序 /void delay(unsigned int x) unsigned int y; while (x-) for(y=125;y0;y-);/ 延时程序程2/void delay2(unsigned int x) unsigned int y; whi
19、le(x-) new=!new; /刷新灯闪烁 for(y=5000;y0;y-); / 延时程序1/void delay1(int x) int y; while (x-) for(y=50;y0;y-) if(on_off=0) /检测开关键是否按下 delay2(30); relay1=1; /若按下标志位置1关闭电源 return;/立即返回 if(mode=0) /检测模式选择键是否按下 delay2(30); num2=0; /若按下则进入全速模式 return; /立即返回 delay2(1); /调用延时 / 关闭所有灯/ void off_all(void) full=1;
20、/关闭全速灯 nature=1; /关闭自然风灯 half=1; /关闭半速灯 custome=1; /关闭用户灯 void main() /主函数 TMOD=0x10; TH1=(65536-5000)/256; /装入初值 TL1=(65536-5000)%256; EA=1; /开启中断总开关 ET1=1; /开启定时器1的开关 lcd_init(); /初始化液晶显示器 off_all(); /关闭所以指示灯 while(1) /大循环 read_temp(); /读取温度 ds1820disp(); /显示温度 wr_dat(0xdf); wr_dat(C); / new=!new;
21、 /刷新灯闪烁 keyscan(); /调用键盘扫描 set_speed(); /速度设置 set_temp(); /设置关机温度 /-/ 设置/- void sz() if(num3=1) /如果按下了功能键 off_all(); /关闭所以灯 custome=0; /开启用户灯 tj(); /调用调节函数 else custome=1; /如果没有按下功能键则关闭功能键 /+/ 调节/+void tj(void)if(num3=1) if(up=0) /如果按下了加速键 delay2(30); /延时 speed+; /加速 if(speed=11) speed=10; /限制最高速度 i
22、f(down=0) /如果按下减速键 delay2(30); /延时 speed-; /减速 if(speed=0) speed=1; /限制速度下限 set_speed(); /刷新速度设置 /+/+/!/ 键盘扫描/!/ void ks(void) /开始键处理 delay2(30); /延时去抖 relay1=!relay1; / void mo(void) /功能键按下后相应操作函数 delay2(30); /延时去抖 num2+; if(num2=3) num2=0; / void gb(void) /关闭风扇的初始化操作 off_all(); /关闭所有灯 num3=0; speed=0; num2=0; num22=0; /所以数据初始化 / void qbz(void) /全速/半速/自然风调节处理 if(fun=0) /如果按下功能键进入功能选择 gnj(); sz(); /功能键状态判断处理 if(num22=0) relay=0; if(num2=1)|(num3=1)|(num22=1) /在调速和半速等状态下开启中断以调节占空比 TR1=1; else TR1=0; /不在相应状态则关闭中断提高CPU利用率 switch(num2) case 0:if(num22=0) speed=10; /全速 off_all(); fu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1