1、基于单片机的温控风扇设计本科论文摘 要温控风扇是利用温度的变化控制风扇启停及转速的智能系统,在现代社会中的生产以及人们的日常生活中都有广泛的应用,如工业生产大型机械散热系统中的风扇、现在笔记本电脑上的广泛应用的智能CPU风扇等。本文设计了基于单片机的温控风扇系统,采用单片机为控制器,利用温度传感器DS18B20作为温度采集元件,并根据采集到的温度,通过一个达林顿反向驱动器ULN2803驱动风扇电机。根据检测到的温度与系统设定的温度比较实现风扇电机的自动启动和停止,并能根据温度的变化自动改变风扇电机的转速,同时用LED八段数码管显示检测到的温度与设定的温度。系统的预设温度的设置是通过两个独立按键
2、来实现的,一个增大预设温度,一个减小预设温度。 关键词: 单片机;DS18B20;温控;风扇ABSTRACTIn life, we often use to electric fan. For example, in the hot summer people use electric fan to cool; in industrial production, large-scale machinery use electric fan for cooling. But when the environmental temperature changes, artificial hard t
3、o timely control the speed of the fan, is also very difficult to effectively utilize valuable resources. With the development of technology of temperature control, temperature control technology has been fully meet the modern daily life and production requirements, emerge as the times require temper
4、ature-controlled electric fan has gradually entered peoples life. Temperature control electric fan according to the ambient temperature automatic regulating electric fan start / stop and speed, in real life use, temperature-controlled electric fan not only can save valuable resources, also brings gr
5、eat convenience for peoples life and production.Temperature control fan in modern society production and peoples daily life have a wide range of applications, Such as industrial production of large mechanical cooling system of fan, now notebook computer on a wide range of application of intelligent
6、CPU fan. This paper introduces the design of MCU based temperature control fan system, using SCM as the controller, use of temperature sensor DS18B20 as a temperature acquisition component, and according to the collected temperature, through a Darlington reverse driving fan motor driver ULN2803. Acc
7、ording to the detected temperature and a set temperature to achieve system comparison of fan motor for automatic start and stop, and according to temperature changes automatically change the fan motor speed, at the same time with the LED eight digital tube display the detected temperature and a set
8、temperature. The preset temperature set by two independent buttons to achieve, The one increase the preset temperature, and the another one reduced the preset temperature.Key words: single chip microcomputer; DS18B20; temperature control; fan基于单片机的温控风扇设计目 录摘 要 1第1章 前 言 1第2章 整体方案设计 2第3章 各单元模块的硬件设计 63
9、.1 系统器件简介 63.1.1 DS18B20单线数字温度传感器简介 63.1.2 达林顿反向驱动器ULN2803简介 63.1.3 AT89C52单片机简介 73.1.4 LED数码管简介 83.2电路设计 93.2.1 开关复位与晶振电路 93.2.2 独立按键连接电路 103.2.3 数码管显示电路 113.2.4 温度采集电路 123.2.5 风扇电机驱动与调速电路 133.2.6 电路总图 14第4章 软件设计 174.1 程序设置 174.2 用Keil C51 编写程序 184.3 用Proteus进行仿真 18第5章 系统调试 265.1 软件调试 265.1.1 按键显示部
10、分的调试 265.1.2 传感器DS18B20温度采集部分调试 265.1.3 电动机调速电路部分调试 275.2 硬件调试 275.2.1 按键显示部分的调试 275.2.2 传感器DS18B20温度采集部分调试 275.2.3 电动机调速电路部分调试 28第6章 结束语 30参考文献 31致 谢 32第1章 前 言在现代生活和生产中,电风扇被广泛应用,起着重要的作用,如冷却风扇,用于人的大型机械的夏季冷却风扇,工业生产,现在广泛应用于笔记本电脑的智能风扇。随着温度控制技术的发展,为了降低风机运行和节能的噪声,温度控制风机越来越受到广泛的关注和广泛的应用。第一阶段,温度控制风扇的设计有一定的
11、效果,可以使风机根据环境温度变化自动无级调速,当环境温度上升到一定时间会自动启动风机,并随着环境温度的升高加速自动风扇转速,当环境温度降低到一定时间会自动停止风机,实现智能化控制。本文设计的8052系列单片机AT89C52单片机是ATMEL公司的控制器,利用温度传感器DS18B20作为温度采集装置,达拉斯,并通过Darlington司机ULN2803驱动风扇电机反转。同时,该系统检测环境的温度,以及系统的温度显示在LED数码管的动态显示。根据环境温度与预置温度的比较,实现了风机电机的自动启动和停止,并实现了转速的自动调整。第2章 整体方案设计本设计的整体思路是:检测环境温度和直接输出数字温度信
12、号给单片机AT89C52处理温度传感器采用DS18B20,LED数码管显示当前温度值与设定温度值。所设定的温度值只能是一个整数,而当前环境温度可以精确地检测到小数点。同时,采用脉宽调制方法改变直流风扇电机的转速。并通过两个按钮来改变预设温度的大小,一个预设的温度,另一个降低预设的温度。系统结构框图如图2-1所示。图2-1 系统构成框图第3章 各单元模块的硬件设计系统的主要设备包括DS18B20温度传感器,由AT89C52单片机、五位LED共阴极数码管、风扇电机、反向驱动ULN2803达林顿。该辅助装置包括电阻器、电容器、电源、钥匙、拨号开关等。3.1 系统器件简介3.1.1 DS18B20单线
13、数字温度传感器简介DS18B20数字温度传感器,是由美国达拉斯半导体公司的DS18B20数字温度传感器芯片用于网络的包装,它具有体积小、功耗低、性能高、抗干扰能力强,易于与微处理器的优点,可以直接转换成串行数字信号处理器的温度。各种小空间设备的数字温度测量与控制领域。DS18B20的主要特点:测量结果直接以数字信号的形式输出发送到CPU的“一线总线”串行,同时可传送CRC校验码,具有较强的抗干扰能力的误差校正;温度测量范围为55125C,在10 + 85C时的准确性。0.5 C;可检测9 12温度分辨率,相应的分解温度为0.5度,0.25度,0.125度和0.0625度,可以实现高精度的温度;
14、其独特的单线接口与微处理器相连接时,只有一个端口,可以实现与微处理器的支持双向通信;多点网络的功能,即多个DS18B20可以并联在三线,实现了多网络;工作电压范围宽,其范围从3至5.5V。DS18B20的内部结构主要有四部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL配置。针有三针:数字信号端子,接地是电源,VDD为电源输入端。3.1.2 达林顿反向驱动器ULN2803简介本系统要用单片机控制风扇直流电机,需要加驱动电路,为直流电机提供足够大的驱动电流。在本系统驱动电路中,选用达林顿反向驱动器ULN2803来驱动风扇直流电机。ULN2803在使用时接口简单,操作方便,可为电
15、机提供较大的驱动电流,它实际上是一个集成芯片,单块芯片可同时驱动8个电机。每个电机由单片机的一个I/O口输出的为5V的TTL信号。UNL2803由8个NPN达林顿晶体管组装而成,共18个引脚,引脚18分别是8路驱动器的输入端,输入信号可直接是TTL或是CMOS信号;引脚1118分别是8路驱动器的输出端;引脚9为接地线,引脚10为电源输入。当输入TTL信号为5V或CMOS信号为615V时,输出的最大电压为50V,最大电流为500mA,工作温度范围为070。本系统选用的电机为12V直流无刷电机,可用ULN2803来驱动。3.1.3 AT89C52单片机简介AT89C52是51系列单片机的一个型号,
16、它是由ATMEL公司生产的一个低电压、高性能的8位单片机,片内器件采用ATMEL公司的非易失性、高密度存储技术 ,与标准的MCS-51指令系统兼容,同时片内设置有通用8位中央处理器和8k字节的可反复擦写的只读程序存储器ROM以及256字节的数据存储器RAM,在许多较复杂的控制系统中AT89C52单片机得到了广泛的应用。AT89C52有40个引脚,各引脚介绍如下:3.1.4 LED数码管简介本系统选用五个LED数码管来进行温度显示。LED又称为数码管,它主要有8段发光二极管组成的不同组合,其中ag为数字和字符显示段,dp为小数点的显示,通过ag这7个发光二极管点亮的不同组合,可以显示09和AF共
17、16个数字和字母。LED数码管可以分为共阴极和共阳极两种结构,如图3-2(a)和图3-2(b)所示。共阴极结构把8个发光二极管阴极连接在一起,共阳极结构是把8个发光二极管阳极连接在一起。通过单片机引脚输出高低电平,可使数码管显示相应的数字或字母,这种使数码管显示字形的数据称字形码,又称段选码。 3-1 七段LED的段选码表显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码03FHC0H87FH80H106HF9H96FH90H25BHA4HA77H88H34FHB0HB7FH83H466H99HC39HC6H56DH92HD3FHA1H67DH82HE79H86H707HF8HF71H8
18、EH一个共阴极数码管接至单片机的电路,要想显示“7”,须a、b、c这3个显示段发光(即这3个字段为高电平)只要在P0口输入00000111(07H)即可。这里07H即为数字7的段选码。字形与段选码的关系见表3-1所示。3.2电路设计3.2.1 开关复位与晶振电路在单片机应用系统中,单片机本身需要复位,外部扩展的I / O接口电路还需要复位,所以需要一个上电复位电路,包括电源和复位按钮。单片机XTAL1和XTAL2用于连接外部石英晶体和微调电容器,是用于连接控制器振荡器定时反馈回路。复位和晶振电路如图3-3所示。开关的设计,当你按下按钮开关S1,系统复位。其中电容C1、C2为33pF,C3为10
19、uF,电阻R2、R3阻值为10k,晶振频率为12MHz。图3-3 系统复位与晶振电路3.2.2 独立按键连接电路按钮包括两个独立按键S2和S3,一端连接口和单片机的P1.4口,而另一端接地。按下按钮时,P1口读取有源低水平。系统上电后,输入键扫描子程序,检查方式确定键,完成初始值的温度设置。S2键每按一次键,与设定值的原型系统,为minusbuttons关键S3,每按一次系统,计算的初始值减一。其连线图如图3-4所示。图3-4 独立按键连接电路3.2.3 数码管显示电路本设计采用5个共阴极数码管作为显示模块,与单片机的接口如图3-5所示。排名前3位的数码管DS1、DS2、DS3是用来显示温度传
20、感器检测采集的温度,精确到0.1摄氏度,显示范围为0至99.9摄氏度;2 DS4数码管后,DS5是用来显示系统设置初始温度只能显示温度显示范围0 摄氏99度的整数。所选B,A,C,D,E,F,G 5个数码管段,DP线与单片机的P0.0 P0.7端口,其中P0口需要上拉电阻接一个10K,使单片机的P0口输出高低电平。所选的W1 W5 5位数码管与单片机P2.0 2.4端口,只要在任何一个输出低电平,则选中与该位相连的数码管。图3-5 数码管显示电路3.2.4 温度采集电路DS18B20数字温度传感器,通过其内部的时钟的时钟周期的作用来实现温度的测量的一个独特的功能。低温度系数振荡器输出一个时钟信
21、号,该时钟信号由一个由一个高温系数振荡器产生的栅极周期计算,计数器是预置与相应的- 55 -的基。如果计数器计数到0,高温度系数的振荡周期还没有结束,说测量温度高于设定温度是55,在登记的55的值加上1度,然后重复该过程,直到最后,高温度系数的振荡周期。当温度寄存器的值是测得的温度值,此值为16位二进制存储在内存中,主机发出的内存读命令读出的温度值,当读取在低,高,反过来。抛物型特征温度对斜坡蓄能器补偿的影响。DS18B20在使用中,一般采用单片机实现数据采集。只要DS18B20的信号线连接1位I/O线单片机,和1位I/O线单片机可以挂多个DS18B20,单点或多点温度检测可以实现。在本设计中
22、,DS18B20的连接到P1.7口实现温度采集,其与单片机的连接如图3-6所示。图3-6 温度采集电路3.2.5 风扇电机驱动与调速电路本设计以单片机I/O口输出PWM脉冲,直流调速器通过Darlington反向驱动器ULN2803驱动12V的无刷电机和风扇电机的转速。设定温度控制按钮,通过软件输入相应的控制命令给单片机,单片机通过P1.7 PWM脉冲输出和相应的ULN2803驱动风扇的转速,在直流电机控制电路,电机的速度和启停控制。当温度升高时,直流电动机的转速将按照相应的水平较高;当环境温度下降时,电动机的转速将下降;当环境温度低于设定温度时,电机停转,和环境温度高于设定温度时,电机启动。
23、电路图如图3-7所示,风扇电机的一端接12V电源,对ULN2803分出销的另一端,在销ULN2803和单片机P3.1引脚连接到P3.1引脚输出PWM信号,控制单片机,从而控制直流电机的转速和启动风扇停止。图3-7 风扇电机驱动与调速电路系统选用的风扇电机为12直流无刷电机,达林顿反向驱动器ULN2803输入TTL信号为5V或CMOS信号为615V时,输出的最大电压为50V,最大电流为500mA,工作温度范围为070。本系统中单片机I/O口输出的TTL信号为5V,因此此风扇电机可以用ULN2803来驱动。3.2.6 电路总图电路总图主要包括系统复位与晶振电路、独立按键连接电路、数码管显示电路、温
24、度采集电路、风扇电机驱动与调速电路等,如图3-8所示。图3-8 电路总图第4章 软件设计4.1 程序设置软件设计包括主程序、DS18B20的初始化函数、DS18B20温度转换功能,温度读数功能,按键扫描功能,数字显示功能,温度处理功能和风扇电机控制功能。DS18B20的初始化函数完成对DS18B20 DS18B20的初始化;温度转换函数来完成对环境温度的实时采集;温度读取功能来完成主机读数据转换温度传感器的数据,按键扫描功能根据需要完成初始温度设定和处理功能;采集到的温度分析,为改变电机转速的条件;风扇电机控制功能,根据温度来控制电机的速度和启停的价值。主程序流程图如图4-1所示。图4-1 主
25、程序图4.2 用Keil C51 编写程序Keil C51是Keil软件的51系列兼容单片机C语言软件开发系统的发展,用单片机汇编语言相比,C语言语句不仅简单灵活,和功能模块编写的可移植性,使用方便,效率高。随着单片机技术的不断发展,从普遍使用汇编语言逐渐使用高级语言开发,单片机的软件也在发展,Keil软件是目前使用的MCS-51系列单片机开发软件。C51 keil软件不仅提供了丰富的库函数,它的功能强大的集成开发调试工具对程序的编辑和调试的方便,在大型软件的开发能够更好地体现高级语言的优势。早期使用,建立一个项目,然后添加文件和写程序,经过编写的编辑和调试。Keil C51的使用界面如图3-
26、2所示。图4-2 Keil C51的使用界面4.3 用Proteus进行仿真 第一次启动Proteus软件,创建一个项目,然后根据绘制出相应的元件的工作原理,然后改变各部件的性能要求,根据原理图链接按照各部件。画好后连接到编译程序的原理是加载到AT89C52单片机。最后,根据系统实现了分布式仿真的功能。 温度传感器DS18B20的温度设置为27.6摄氏度,与按钮S2调整设定温度23摄氏度。点击开始按钮,系统开始模拟,要经过一段时间的稳定,观察此时风扇直流电机速度,如图4-4所示。 图4-4 仿真效果图一把温度传感器DS18B20温度设置为30.5摄氏度,用按键S2调节预设的温度为23摄氏度。点
27、击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为+23.4 r/s,如图4-5所示。 图4-5 仿真效果图二把温度传感器DS18B20温度设置为35.6摄氏度,用按键S2调节预设的温度为23摄氏度。点击开始按钮,系统开始仿真,待一段时间稳定后,观察到此时风扇直流电机的转速为+32.1 r/s,如图4-6所示。 图4-6 仿真效果图三基于仿真的上一步(温度传感器DS18B20的温度设置为35.6摄氏度,系统默认的温度是23摄氏度),与关键的S2控制系统的设定温度为31摄氏度,温度大于设定温度传感器检测温度,风扇电机的转速逐渐在DC观察慢下来。速度为0,符合系统实现功能,
28、如图4-7所示。 图4-7 仿真效果图四 通过以上仿真,可以看出,直流风扇电机在系统设置的温度,速度与环境温度(温度传感器来检测的温度)增加。当环境温度低于系统的预置温度时,风扇自动停止运行,并实现了系统的功能。当然,这扇没有实现直流电机无级调速控制,该系统是在四级电机随环境温度的变化的速度,在一个小范围的环境温度变化、风机的直流电机的转速是恒定的,只有超过一定限度,速度会改变设定。第5章 系统调试5.1 软件调试5.1.1 按键显示部分的调试首先根据系统程序设计:使用P1口程序的关键界面,对LED段码控制P0现实数字控制,P2口控制LED的位码,从而实现关键功能和数码管显示。编译没有错误,但
29、在仿真调试,数字显示的是乱码,没有正确的关键功能的显示温度,当按下按钮时,显示的是不会改变的。在找到一个按键扫描程序没有找到按键消抖,按下按钮,就让它去吧,会有一个程序的抖动,使单片机做出错误的判断,导致其温度设定关键条件失败,甚至不工作。它必须加入消抖按键扫描程序,按下按钮,让去另外确定延迟检测是否有键被按下或完全放手。数码管可以显示不正确,主要是因为所有数码管的段码由P0口转移,但数字显示采用动态扫描方式,但并没有在程序中设置显示段码登记,因为当P0口传输段代码混淆,不能正确识别码。一个锁存器应该被添加到系统中,或者在程序中的一个空间来设置内存段代码。在按钮上添加一个抖动处理,数码管显示程
30、序添加了一段代码存储空间,数码管可以正常显示,按钮可以正常工作,达到更好的效果。5.1.2 传感器DS18B20温度采集部分调试由于高度集成的数字集成温度传感器DS18B20,带来了极大的便利和调试软件,设计体积小、低功耗、高精度提供了可能性,对电机控制的精度和稳定性。软件设计采用P1.7口数字温度输入,但需要输入数字信号处理显示,从而超过温度转换程序。通过软件设计,实现了环境温度的连续检测,由于硬件LED数量的限制,只显示了整数部分的预置温度。在温度转换程序中,为了能够正确的检测和显示温度控制的小数,程序检测温度和10相乘,然后用一三位整数来处理。如果19.7至197处理,以方便程序的编制。
31、5.1.3 电动机调速电路部分调试在本设计中,采用反向驱动Darlington ULN2803驱动直流电动机,可驱动八个直流电机,系统只驱动器A软件集P3.1端口输出PWM波形,驱动直流电机转动的反向驱动ULN2803达林顿,通过软件编程,根据不同的温度不同的PWM波输出,从而产生不同的占空比控制直流风扇电机。该程序实现了PWM波形输出端口P3.1,当温度低于设定温度时,电机不转动或停止转动;当温度高于设定温度时,电机的转速增加或自动开始转动,和环境温度与设定温度之间的差异较大,其电机转速越高,即责任增加。风扇直流电机的调速系统,可以实现四速。通过对温度传感器的温度和预定温度值的比较,实现了速度的变化。当检测到的温度升高5摄氏度时,风扇电机的转速增加一级。5.2 硬件调试5.2.1 按键显示部分的调试系统实现了以下功能:按钮按下P1.3按钮,两个LED的显示一个值后;按P1.4按钮,LED后两显示温度值减一。在调试过程中出现的关键时间太长,增加或降低温度设定值是没有的,但增加后减少和几个值,这种情况的主要原因可能是长时间造成的延迟抖动的关键,为提高时延抖动量相应按钮的改进方法,但也不能太长,否则会导致无效的钥匙。部分实现以下功能:L
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1