基于单片机的温控风扇设计_第1页
基于单片机的温控风扇设计_第2页
基于单片机的温控风扇设计_第3页
基于单片机的温控风扇设计_第4页
基于单片机的温控风扇设计_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

·PAGE36苏州市职业大学毕业设计摘要现代社会中,众多的工业生产、日常生活都离不开温控风扇的应用,其在工程建设的散热系统、手提电脑处理器降温等有着突出的作用。本研究对温控风扇系统进行分析设计,单片机为其核心构成部分,通过温度传感器DS18B20获取温度信息,输入至单片机内部,单片机与系统设置的温度做比较,发出相应的控制信号,通过ULN2803控制风扇系统对元件进行散热处理,同时能通过判断设定温度与采集温度的温差大小,来确定风扇系统的转速,采用LED八段数码管实现温度显示功能。动态显示当前所处的环境温度和设定温度,并可以通过键盘按钮设定当前温度。键盘部位则可以自主调节设定温度而DS18B20可以测定外部环境温度,然后记录环境温度和设定温度并将其连续及时显示。关键词:单片机、DS18B20、温控、LED

AbstractInmodernsociety,manyindustrialproductionanddailylifeareinseparablefromtheapplicationoftemperaturecontrolfan,whichplaysaprominentroleinthecoolingsystemofengineeringconstructionandthecoolingofportablecomputerprocessor.Inthisstudy,thetemperaturecontrolfansystemisanalyzedanddesigned.Thesingle-chipmicrocomputeristhecorecomponent.ThetemperatureinformationisobtainedbythetemperaturesensorDS18B20andinputtothesingle-chipmicrocomputer.Thesingle-chipmicrocomputercompareswiththetemperaturesetbythesystemandsendsoutthecorrespondingcontrolsignal.ThecomponentsarecooledbytheULN2803controlfansystem,Atthesametime,thespeedofthefansystemcanbedeterminedbyjudgingthetemperaturedifferencebetweenthesettemperatureandthecollectedtemperature,andtheLEDeightsegmentnixietubeisusedtorealizethetemperaturedisplayfunction.Dynamicdisplayofthecurrentenvironmenttemperatureandsettemperature,andthroughthekeyboardbuttontosetthecurrenttemperature.Thekeyboardpartcanadjustthesettingtemperatureindependently,andtheDS18B20canmeasuretheexternalenvironmenttemperature,thenrecordtheenvironmenttemperatureandsettingtemperature,anddisplaythemcontinuouslyandtimely.Keywords:MCU,DS18B20,temperaturecontrol,LEDTOC\o"1-3"\u目录摘要 IAbstract II第一章整体方案设计 11.1前言 11.2系统整体设计 11.3方案论证 21.3.1温度传感器的选择 21.3.2控制核心的选择 31.3.3温度显示器件的选择 31.3.4调速方式的选择 3第二章各单元模块的硬件设计 52.1系统器件简介 52.1.1DS18B20单线数字温度传感器简介 52.1.2达林顿反向驱动器ULN2803简介 52.1.3AT89C52单片机简介 62.1.4LED数码管简介 72.2各部分电路设计 82.2.1开关复位与晶振电路 92.2.2独立键盘连接电路 92.2.3数码管显示电路 102.2.4温度采集电路 112.2.5风扇电机驱动与调速电路 12第三章软件设计 143.1程序设置 143.2用KeilC51编写程序 143.3用Proteus进行仿真 153.3.1Proteus简介 153.3.2本设计基于Proteus的仿真 16第四章系统调试 214.1软件调试 214.1.1按键显示部分的调试 214.1.2传感器DS18B20温度采集部分调试 214.1.3电动机调速电路部分调试 214.2硬件调试 224.2.1按键显示部分的调试 224.2.2传感器DS18B20温度采集部分调试 224.2.3电动机调速电路部分调试 224.3系统功能 234.3.1系统实现的功能 234.3.2系统功能分析 23结论 24参考文献 25致谢 26附录1:电路总图 27附录2:程序代码 28第一章整体方案设计1.1前言在现代社会中,风扇被广泛的应用,在人民日常生活中的作用越来越大,无论是工程建设中的散热系统,还是电脑主机的散热功能,都离不开风扇的使用。由于科学技术的发展,低噪音、低耗能的风扇逐渐被推广,随着科技水平的智能化程度越来越高,如今的风扇的转速可以随着环境温度的变化而变化,同时当环境温度达到或者低于其设定值时,风扇可以自发启动或者停止,实现控制系统的智能化。目前单片机的应用愈加普及,一定程度上促进了温控系统的发展,通过单片机技术的运用,提升温控系统的智能性,实现风扇的自发启动与停止、风扇转速与环境温度相配合,提升风扇的智能化水平。这不仅给人民生活带来了便捷,提升工业生产质效,还避免了资源浪费,提升资源利用率。本命题介绍了8052系列中的不同单片机,早期由ATMEL公司研制并且生产,系统的核心元件为AT89C52,对环境温度进行检测用到DS18B20元件,此后,利用ULN2803元件,触发电机转动,进而带动风扇的转动。此外,对于LED数码管,其所显示温度由两种,一是检测到的环境温度,二是系统预先设置的温度,系统将两者相比较,进而实现风扇电机的自发启动与停止,同时能够根据环境温度的变化来调节风扇转速。1.2系统整体设计本系统的主要元件分工如下:首先利用温度传感器,对环境温度进行检测以及获取数字信息,进而将其输入单片机中,从而在八段数码管中显示出两种温度,一是环境温度,二是系统预先设置的温度。分别精确到十分位与整数位。并且通过运用PWM脉宽调制法,实现电机转速随着环境温度的改变而改变。此外,为了方面预设温度的调整,设定两个按键来对预设温度进行升高或者降低。该系统运行流程图如下所示:DS18B20温度显示DS18B20温度显示独立键盘独立键盘AT89C52AT89C52直流电机PWM直流电机PWM驱动电路晶振复位晶振复位图1.1系统构成框图1.3方案论证为了提升风扇的智能化水平,本产品风扇电机能根据采集的环境温度是否达到预设温度,实现风扇电机的自发启动与停止,这对温控器件以及温度传感器元件的技术要求较高。1.3.1温度传感器的选择可以选用以下两种温度传感器作为本系统的核心温度采集元件:A方案:通过热敏电阻来反映环境温度的变化,同时与运算放大器相配合,将热敏电阻反映的电压形式的温度信号通过AD转换,变成数字形式的温度信号,从单片机的输入端口传递温度信息,进而进行下一系统运转过程。B方案:通过DS18B20元件对环境温度信息进行采集,通过AD转换,将其所收集的电压形式温度信息转化为数字信号形式的温度信息,进而输入系统进行下一步操作。采用A方案选取热敏电阻作为核心,其优点是成本低,热敏电阻方便安装等,但其也有缺点,例如当温度产生微小变化时,热敏电阻的灵敏度低,变化不大,因此对温度采集过程会产生误差。同时,热敏电阻的电阻与温度之间的特性曲线非线性,这种测量方式具有一定的误差,但通过在外部添加矫正电路,一定程度上可以降低误差,但这种操作方式会一定程度上提升系统的设计难度,而且在环境温度产生微小变化时,由于热敏电阻的灵敏度较低,其阻值变化不明显,综合考虑A方案缺乏便捷性以及精准性。采用B方案由于DS18B20型温度传感器的精确度高,对采集温度过程中很大程度上减少了测量误差,相比于热敏电阻,其灵敏度高,其内部可以直接把电信号转化为数字信号,减少了电路的复杂程度。通过单线总技术,让系统电路简单化,并且提升其自动控制水平,提升系统的精简性与智能性。B方案与系统要求相契合。1.3.2控制核心的选择本产品中的选取AT89C52单片机作为温控系统的核心元件,对其输入对应功能的代码,实现温度采集与判定,在输入输出端口中输出数字信号。这一单片机的优点包括性能完善、工作耗能小、存储器容量大等,相比于其它单片机,AT89C52的兼容性较强,购买价格便宜,非常契合系统的运行。1.3.3温度显示器件的选择A方案:通过LED数码管获取数字信号,进而显示温度值。B方案:通过LCD液晶显示屏,获取数字信号温度信息,进而显示温度值。A方案的优点是采购价格低,耗能低,所显示出的温度即使在黑暗环境下也清晰可见,所植入的程序易理解,因此这类温度显示器得到了推广,普遍应用于人民的日常生活当中。由于它是通过动态扫描的方式来显示数字,只要显示间隔时间大于20MS,数字信息就能通过人眼采集,因此,设定适合的闪烁频率就可使用A方案。B方案的LCD液晶显示屏相比于LED数码管其所显示出的数字比较美观,除此之外还能显示多元化的字符以及图案。但相比于LED数码管,其采购成本较高,同时,其对应功能的代码程序设计难度也较高,为了提升便捷性,降低成本,因此A方案比较契合该系统。1.3.4调速方式的选择A方案:选取DAC0832元件作为核心元件,采集到的环境温度输入此芯片,通过相应的模拟信号输入至晶闸管,控制其α角的变化,进而控制系统的不同功能,实现风扇转速的自调节。B方案:选用脉宽调节法(PWM),通过输入编程代码实现对输入脉冲宽度的调节,进而调节输出波形,控制风扇转动速度。这种方法一般采取矩形波的脉冲信号,对脉冲宽度的调节时严格控制其占空比。PWM的占空比反映高电平脉冲在一个完整周期内所占的比例,高电平时间持续越长,电机转速就越高,当脉冲没有低电平时,风扇电机达到最大转速2]。下面为三种输出PWM信号的方法:(1)通过软件对PWM高改变高低电平的持续时间。当高电平的持续时间快要结束时,同时对I/O输出端口进行取反处理,通过软件的功能实现对其转变为低电平,增加延时时间;当低电平即将变成电平时,重复上述过程,不断循环处理便可输出PWM信号。这种方法比较契合本系统。(2)通过定时器的使用,与(1)中的控制方法相同,控制脉冲高低电平的持续时间,但这种方法系统对应功能所需代码的编写过程难度相对较高。(3)单片机具有自带的PWM调节器。众多系列的单片机都有这种功能,本设计中的AT89例外。A方案能够的性能较好,其灵敏度高,环境温度变化时对应的风扇电机速度变化灵敏,但DAC0832芯片的购买成本高,对本系统的而言其性价比较低。B方案采用软件系统对风扇电机的转速进行调节,这种方法转变性比较强,相比于硬件系统其成本低,单片的功能的体现不亚于硬件系统,对于比较单一的控制系统而言,B方案比较适合。第二章各单元模块的硬件设计本设计的主要硬件包含:①型号为DS18B20的输出离散型号的数字温度传感器;②型号为AT89C52的CMOS8位单片机;③5位发光二极管封装的数码管显示器④风扇直流电动机;⑤型号为ULN2803驱动器。其他电子元器件包含:①多种不同阻值的电阻器;②多种不同电容量的电容器;③多个晶体振荡器;④各类电压源以及电流源;⑤多个按键;⑥多个DIP开关。2.1系统器件简介2.1.1DS18B20单线数字温度传感器简介DS18B20属于DALLAS公司开发的一款数字温度传感器产品,该产品性能稳定、体积紧凑、功率损耗低、适用范围广,能够采集环境的温度信息并以数字信号的形式进行输出。若在一些微观领域使用DS18B20进行温度的测量,则可以充分发挥它的功能。其工作特性如下:第一,可以对环境的温度信息进行捕捉,并将这些信息转化为离散的数字信号,信号的输出端仅设有一条线路,DS18B20在该线路上以串行通信的方式将数字信号传输于中央处理器CPU,在这个过程中,还可以进行循环冗余效验,保证了数据传输的准确性以及稳定性;第二,以摄氏度为单位,DS18B20的测温区间为[-55,125],在区间[-10,85]内,DS18B20可以控制在0.5摄氏度以内的测量误差;第三,DS18B20温度分辨率设有0.5℃9bits、0.25℃10bits、0.125℃11bits、0.0625℃12bits这4个级次,即最高采样位数为12bits,显示温度的最小变化量为0,0625摄氏度;第四,DS18B20“一线总线”的模式,可以实现使用一条线路与MPU进行半双工通信;第五,多个DS18B20可以连接于一根接线上,构成温度监测网络,对环境温度进行大范围的监测;第六,DS18B20工作时,以V为单位,其两段的电压值区间为[3.0,5.5][3]。它的内部包含4个核心器件:①64bits的只读存储器;②用于采集温度信息的传感器;③温度高位与温度低位的触发报警器④寄存器。DS18B20含有引脚(3个),其中DQ端用于输出数字信号,GND端用于接地,VDD端用于外接电源的输入。2.1.2达林顿反向驱动器ULN2803简介本文主要对基于单片机的温控风扇进行设计,电机在需要一定的驱动电流才能正常工作,因此需引入相应的驱动电路。本设计选取ULN2803作为电机工作电流的驱动器。反向驱动器ULN2803的硬件接口较少,可以简化系统开发者的安装操作流程,并为本系统的风扇直流电动机提供充足的工作电流,ULN2803的本质为CMOS器件中的接口型集成芯片,1~8脚为输入端,11~18脚为输出端,可集中驱动8路小型直流电机。在本系统中,AT89C52的8个I/O口与ULN2803的8路输入进行连接,输入TTL高电平,进而实现对8个相应电机的控制。ULN2803的内部由8路NPN达林顿管构成,并采用合适的形式进行封装,包含18个管脚,1脚至8脚为输入端口,可接收TTL电平以及CMOS电平;11脚至18脚为输出端口,可输出充足的电压以及电流;9脚为GND端,用于接地;10脚为供电输入端口,接正极电源。若在1~8脚中输入5V的TTL高电平或者输入6V至15V的CMOS高电平,那么对应的11~18脚最高输出电压可以达到50V,相应的电流可达500mA,以摄氏度为单位,ULN2803可正常运行的温度限值区间为[0,70],本设计将选取工作电压为12V的直流电机,因此ULN2803符合该电机的驱动条件。2.1.3AT89C52单片机简介AT89C52属于COMS8位单片机,由制作商爱特梅尔公司推出,是一款性能极佳、工作电压低的单片机产品。AT89C52的组件使用爱特梅尔的NVM技术制作,可兼容Intel8051系统,内部装有8bitsCPU、容量为8KB的ROM、容量为256B的RAM。AT89C52功能强大,适用于各种不同系统的开发,它含有40只管脚,对应的功能如下:VCC:作为供电输入端口,接5V电压。GND:用于接地端或0线。P0.7~P0.0:P0端共含有八只管脚,从P0.0至P0.7位数逐渐上升。P0.7~P0.0包含两种使用情况:①若AT89C52不连接外部存储器,且确保P0口功能的正常,则需要在P0的引出端中插入一个电阻并输入高电平,进而实现中央处理器通过P0端与外部设备进行数据交换以及信息传输的功能。②若AT89C52外部接有存储器,那么在中央处理器与外部存储器进行数据传输时,相应引脚会先传输外部存储器的低八位地址信号,再传输中央处理器对应的读写信息[4]。P1.7~P1.0:P1端包含了P1.7~P1.0这8个管脚,属于插入了上拉电阻的半双工通信I/O接口,具备一般I/O端的功能,能够用于传输I/O信息,不同之处在于P1端内部预先插入了上拉电阻,因此P1端可直接通路使用。在使用AS语言进行编程时,可以通过P1端对AT89C52的EPROM的低八位地址信息进行输入。P2.7~P2.0:P2端包含了P2.7~P2.0这8个管脚,属于插入了上拉电阻的半双工通信I/O接口,具备一般I/O端的功能,传送用户的输入/输出数据,此外,P2还能与P0.7~P0.0管脚的②功能配合使用,实现外接存储器高八位地址信号的传输功能,输出16位地址信号,进而协同选取外接存储器的存储元集合,不足之处在于,二者配合使用时无法输出中央处理器对外接存储器的读写信息。对于一些其他不同的51机,P2.7~P2.0脚还能够与P0.7~P0.0脚协同使用,输入单片机内部EPROM的高四位地址信号。P3.7~P3.0:P3端包含了P3.7~P3.0这8个管脚,属于插入了上拉电阻的半双工通信I/O接口,在对P3端进行写1操作后,其将输出高电平。P3端具备一般I/O端口的功能,可以让CPU与外部设备进行数据的输入与输出,P3口也作为一些特殊功能端口使用,如下所示:P3.0:RXD(串行数据接收口)P3.1:TXD(串行数据发送口)P3.2:(外部中断0输入)P3.3:(外部中断1输入)P3.4:T0(记数器0计数输入)P3.5:T1(记时器1外部输入)P3.6:(外部RAM写选通信号)P3.7:(外部RAM读选通信号)图2.1.1AT89C51单片机ALE/:地址锁存器允许/编程线,在访问片外存储器时在ALE/线上输出高电位脉冲,此时外部存储器在引脚P0.7~P0.1的地址为低八位地址。该低八位地址是外部存储器专门用于外部地址的锁存器。为了上述工序完成后更好地储存读取相关数据,单片机自动进入以ALE/线上输出频率为1/6晶振频率的脉冲序列。:是读取外部程序存储器的先通信号,CPU从外部获取指令时,在一次工作周期中仅仅释放两次有效信号。但存在一种特殊情况,那就是读取外部存储器相关数据的过程中,不会释放信号。/VPP:允许访问片外存储器/编程电源线。程序存储器的选取是由电平状态决定的,当处于高电平状态时,只选用片内程序存储器;当处于低电平状态时,只选用外程序存储器。在固态存储器与动画编辑器工作过程中,经常性地使用12V编辑电压(VPP)。2.1.4LED数码管简介在本系统中,温度由五根LED管表示。LED管又名数码管,由八段具有发光功能的二极管组成,根据外界条件的变化,这八段具有发光功能的二极管可以组成成千上万种不同的组合。如下图2.1.2所示,其中标有字母a-g的二极管根据不同的发光组合可以用来表示数字0-9或字母A-F;标有dp的二极管则表示小数点。一般而言,LED管结构主要分为两类:①共阴极结构;②共阳极结构;其具体的结构设计图如图2.1.2(a)、(b)所示。两种结构不同的地方在于这八段二极管终端接连的差异,通过观察和分析两者的结构设计图可以得出,共阳极结构中,八段二极管与阳极相连接;共阴极结构中,八段二极管与阴极相连接。控制电平的高低状态可以使得二极管按照预先设定的组合发光,以此表示具体的数字组合或者字母组合,最终形成一段字形码,又称为段选码[5]。b.共阳极a.共阴极b.共阳极a.共阴极数码管引脚分配图图2.1.2七段LED数码管表2.1.17段LED的段选码表显示字符共阴极段码共阳极段码显示字符共阴极段码共阳极段码03fHC0H87fH80H106HF9H96fH90H25bHA4HA77H88H34fHB0HB7fH83H466H99HC39HC6H56dH92HD3fHA1H67dH82HE79H86H707HF8HF71H8EH在采用共阴极结构的单片机中,给“a、b、c”三个二极管输入高电平时,即这三个二极管同时发光时就会显示数字“7”。其具体操作为在P0输入端输入段选码07(H),即00000111就可以显示数字“7”。其他数字与段选码的相互关系如上表2.1.1所示。2.2各部分电路设计2.2.1开关复位与晶振电路复位不仅在单片机中发挥着非常重要的作用,还在外部组成结构之一的I/O接口电路中发挥着至关重要的作用。因此,需要设计一个具有复位功能的开关,除此之外,该开关还需同步单片机系统和外部I/O接口电路,以此简化整个操作过程。另外,借助XTAL1和XTAL2引脚有利于确保石英晶体以及微调电容接触状态良好。按照以上方法设计的具有复位功能的开关示意图如图2.2.1所示。具体功能如下:当按触S1时,单片机系统进行复位,此时电容C1、C2、C3以及电阻R2、R3都参与了整个复位过程。图2.2.1系统复位与晶振电路2.2.2独立键盘连接电路该独立键盘拥有两个具有特定功能的按钮,分别为:S2和S3。其中S2和单片机系统的P13接口相接;S3和单片机系统的P14接口相接。当单片机系统通电并按下S2、S3任一按钮之后,P1处会显示实时的电平状态。此时可以通过按触两个按钮调节初始温度大小,S2按钮为减按钮,S3为加按钮,每一次按触的变化值都是单位1,按触后系统会计算出最终的初始温度值。其接线图如下:图2.2.2独立键盘连接电路2.2.3数码管显示电路 本设计制作中选用5位共阴极数码管作为显示模块,它和单片机硬件的接口如图2.2.3所示。该5位共阴极数码管按顺序可分为DS1、DS2、DS3、DS4以及DS5。其中DS1~3作为前3位共阴极数码管,其主要负责测量温度的工作。一般而言,其能测量的温度范围在0℃至100℃之间,另外,在该测量范围内,其最终测量的温度精准度控制在±0.1℃。除此之外,初始温度值由后2位数码管DS4、DS5显示,而且改2位数码管有且仅有显示温度初始值得功能,其可显示的初始温度值区间为[0,99]。其各线路的衔接如下图2.2.3所示。通过观察下图,可以发现5位数码管借助a-g以及dp线与单片机相连接,其接口也是按照字母顺序对接单片机的P00-P07接口。除此之外,还需要给单片机P0接口处添加一个电阻为10K的电阻R,有利于精准地控制电平状态。图2.2.3数码管显示电路2.2.4温度采集电路内部计数时钟周期是DS18B20温度转换器的技术核心,当内部计数时钟周期正常运作时,DS18B20温度转换器才具有测量温度的功能。高温系数振荡器发出的门周期是后续计算低温系数振荡器时钟信号一个重要参数。此外,以-55℃作为一个权届值,然后预先设定相关数值与-55℃相对应,再以该权届值为界限,若当计数器输出结果为0时,高温系数振荡器还处于震荡状态,则表明此次测量的温度大于-55℃,此时原先存在在显示屏的温度值就会加1℃。重复以上过程直至高温系数震荡器停止震荡,该时显示屏显示的数值为温度的测量值。除此之外,该数值会被换算为16位二进制的表示形式储存在内部存储器。当需要读取温度测量值时只需要向系统输入相关指令[6]。单片机有利于DS18B20温度转换器实现其测量温度的功能。因此,在实际使用情况中,往往将DS18B20温度转换器的信号线与单片机的I/O线相连接。除此之外,单片机的I/O接口还可以同时与多个DS18B20温度转换器相连接,提高单片机的使用效率,有利于测量多点温度值[7]。其具体连接模式如下图2.2.4所示:图2.2.4温度采集电路2.2.5风扇电机驱动与调速电路本系统由AT89C52通过I/O端进行PWM脉冲的输出,再使用ULN2803将输出的电流电压参数放大至适宜的值,ULN2083与电机链接并发挥驱动作用,最终使工作电压为12V的直流电机正常运作并实现电机转速的调控功能。通过PC机的如键盘等终端设备进行目标环境温度值的设定,并使用51机相关软件将目标温度控制值转化为AT89C52的操作指令,进而使AT89C52的1.7引脚输出用于调控电机转速的PWM脉冲,该脉冲在其电流电压参数由ULN2803放大后可用于对电机的控制电路进行驱动,通过这些流程后最终可实现风扇电机的启动、关停以及工作频率的自动化调控功能[8]。若外界的温度值上升,那么风扇的工作频率也将上升,随之转速上升;若外界的温度值降低,那么风扇的工作频率也将下降,随之转速降低;若外界温度低于目标温度值,那么风扇将停止运作;若外界温度高于目标温度值,那么风扇将重新运行,进而实现风扇电机转速根据环境温度的自适应调节功能。电机的驱动与控制电路见图2.2.5,从该图中可以清晰地看到VCC输入+12V直流电压至MOTOR-DC,同时MOTOR-DC与ULN2803的输出端OUT7管脚连接;ULN2803的输入端IN7管脚与AT89C52的TXD引脚相接,同时GND脚接地,COM口接+12V的VCC输入电压,此时AT89C52的TXD脚将输出PWM脉冲,通过ULN2803的放大作用实现对MOTOR-DC的启动、关停以及工作频率的调控功能。图2.2.5风扇电机驱动与调速电本设计选取了工作电压为12V的直流电机,若ULN28031的1~8脚输入5V的TTL高电平或者输入6V至15V的CMOS高电平,那么对应的11~18脚最高输出电压可以达到50V,相应的电流可达500mA,以摄氏度为单位,ULN2803可正常运行的温度限值区间为[0,70]。因为本设计采用了51系列单片机AT89C52,其I/O端输出TTL高电平,满足ULN2803的使用要求,所以能够选取ULN2803作为电机的驱动器件。第三章软件设计3.1程序设置主程序、DS18B20初始化功能、DS18B20温度转换功能、温度读取功能、键盘扫描功能、数码管指示功能、温度功能和风扇发动机控制功能等均可使用和应用,旨在控制电风扇的相关指标。一般情况下,DS18B20程序恢复初始状态可以由DS18B20初始函数控制;外界环境温度可以通过DS18B20温度转换功能进行实时监测和记录;温度读取功能的功能则是将温度转换函数收集和记录的数据进行读取并将这些数据进行换算传输至主机中;键盘扫面功能的功能需要通过完成设定温度的原始数值进行加减设定来完成;对于检测、收集、记录的相关温度的数据进行处理则离不开温度处理功能,除此之外电风扇发动机转速的改变也离不开温度处理函数的运行;电风扇发动机是否转动以及转读的高低以外界温度和设定的温度为基础加以风扇电机控制函数进行控制。如图3.1.1所示该程序的具体使用方法:调用键盘扫描函数调用键盘扫描函数图3.1.1主程序流程图3.2用KeilC51编写程序本系统的编写程序使用的是由美国KeilSoftware公司开发的基于系列兼容单片机C语言类的KeilC5151编写程序,该程序的优势主要体现在其编程语言简单灵活,且编写的函数模块可移植性强,因而易学易用,效率高。随着时代的发展,关于单片机的相关技术也在发生日新月异的变化。现在的市面上基于单片机的开发软件种类和数量日益增多,同时为了提高编写得到的程序的安全性,单片机的开发技术也由原有编程语言转向高级的编程语言。在此基础上,Keil软件脱颖而出,其是目前使用人数最多、涉及面最广的基于MCS-51系列的单片机开发软件。KeilC51软件之所以在众多单片机软件中脱颖而出,因为该软件具有众多的优势,其中最主要的优势由以下两方面:一是KeilC51软件的数据库庞大且丰富,能够大大缩短编程人员的使用时间,同时可以简化使用流程;二是KeilC51软件集开发、集成、调试于一体,当程序编写完成之后可以直接进行调试缩短时间。KeilC51软件具有的这两点优势足以使其在开发大型软件时具有显著优势从而在众多开发软件中脱颖而出。使用Keil软件的流程是:软件使用界面如图所示3.2.1。图3.2.1KeilC51软件的使用界面3.3采用Proteus进行仿真3.3.1Proteus简介Proteus软件是由英国Labcenter公司研发出品的一款EDA的工具软件。此软件已在市场上存在了十几年,他的用户覆盖面广,几乎全球都有它的用户,且受到全球各地用户的喜欢。Proteus软件和其他EDA工具软件相比,除了具有原始设计、艺术布线和电路模拟功能外,还具有优于其他EDA工具软件的部分便是改软件的电路模拟功能还可以进行互动,更甚于用户根据电路模拟功能对程序进行实时监测,监测的结果可以用于验证程序设计的准确与否,本程序的代码、原理图连接和元件功能也将兼容系统配置的各种工具。除此之外,此款软件还可以用于促使其他仪器设备进行显示和输出数据,如示波器、逻辑分析仪等,效果非常好。Proteus软件由智能原理图设计、完善的电路仿真功能、独特的单片机协同仿真功能以及实用的PCB设计平台四个功能模块组成,而Proteus软件的优势也十分显著,主要由以下两点:一是大量的元件存在于该软件的内部元件库中,用以对已安装的总线和智能连接功能给予支持;二是该软件也可以支持对CPU(如ARM、8051/52、AVR)及其通用外设模型的实时仿真。这些优点有助于单片机的开发和应用。当Proteus软件被使用时,其主界面如图3.3.1所示。图3.3.1Proteus使用界面3.3.2本设计基于Proteus的仿真仿真部分的操作十分简单,具体操作如下:设置DS18B20温度传感器的温度为26.4℃,用键盘将电风扇的设定温度设置为22℃。点击相应的按钮后程序将开始进行仿真处理。仿真处理一段时间后,显示的温度稳定后观察并记录风扇发动机的转速,如图3.3.2所示,此时转速显示为+14.2r/s。图图3.3.2Proteus仿真效果图一设置DS18B20温度传感器的温度为28.4℃,用键盘将电风扇的设定温度设置为22℃。点击相应的按钮后程序将开始进行仿真处理。仿真处理一段时间后,显示的温度稳定后观察并记录风扇发动机的转速,如图3.3.3所示,此时转速显示为+23.3r/s。图3.3.3Proteus图3.3.3Proteus仿真效果图二设置DS18B20温度传感器的温度为33.4℃,用键盘将电风扇的设定温度设置为22℃。点击相应的按钮后程序将开始进行仿真处理。仿真处理一段时间后,显示的温度稳定后观察并记录风扇发动机的转速,如图3.3.4所示,此时转速显示为+32.0r/s。图图3.3.4Proteus仿真效果图三在温度传感器显示为33.4摄氏度和系统设定温度为22摄氏度条件下,用键盘将设定温度调整到34摄氏度,此时系统设定温度高于温度传感器检测到的温度,观察到电扇发动机的转速开始逐渐变慢,直到最后转速归0,符合系统所要达到的功能,如图3.3.5所示。图图3.3.5Proteus仿真效果图四经过上述一系列仿真结果可以得知:当系统设定的温度一定时,电风扇的发动机会发生转动,且转速会随着外界环境温度的升高而加快,外界环境温度是通过温度传感器测定得到的温度。当外界环境的温度比设定的温度低时风扇的发动机转速逐渐降低直至停止转动,此结果正是最初设计该系统时所希望的结果。该系统仅仅实现了发动机转速随着外界环境的四个等级变化并未实现发动机的无级调速,且该系统受温度的影响而使转速发生变化,但是该现象是基于外界环境温度变化程度较大的情况下。外界环境温度变化程度微小时,发动机的转速并不会发生加快或减慢,这种情况下,只有超过了设定的某一临界温度值时发动机的转速才会变化。第四章系统调试4.1软件调试4.1.1按键显示部分的调试首先,按照设计方案编写了系统程序:P0端口与数码管相连,P1端口与键盘接口相接,P2端口用于控制LED位码,用于控制键盘的使用功能和数码管的显示。此种情况下,并未显示编译出现错误,但在模拟调试中,数码管显示出现乱码情况,数码管上显示的设定温度也不正确,通过按键调节设定温度时显示器上的温度并没有发生任何的变化。通过对每一个部件进行查找和分析原因所在之处,发现键盘程序存在一定的问题,即键盘扫描程序并没有安装相应部件来防止震动现象的出现。这是因为当键盘中的某个按键被按下和松开时,因为惯性的原因按键均会出现一定程度的震动,致使单片机对此现象做出错误的判断,导致在通过按键来改变设定温度时出现故障,甚至某种程度上使其不工作。为了消除此类问题的发现或者减轻此类问题对仪器的影响则需要增加消除抖动部分在按键扫描程序中,即当按键被释放时延迟判断时间增加,其目的是用来确保按键是完全按下还是完全释放。数码管不能显示准确的主要原因是所有数码管段码都是通过P0端口传输的,而数码管屏幕认可的模式是动态扫描。然而,该系统程序中现有的寄存器没办法存储显示段码,导致P0端口传输段码时产生混淆,无法识别正确的段码。这就是为什么有必要向系统添加一个连接或设置程序的段代码空间的原因。在键盘扫描程序中上加入防震程序以加长按键的延迟判断时间,在数码管显示程序中加入可以用于保存段码的寄存器后,数码管显示并未出现乱码现象且可以正常显示,按键也可以正常工作且没有延迟现象发生,在模拟调试时取得了很好的效果。4.1.2传感器DS18B20温度采集部分调试由于数字温度积分传感器DS18B20集成度高,给软件设计和调试带来很大的方便。其体积小、能耗低、精度高,为检测仪器的精度和稳定性提供了支持和可能。软件使用P3.1端口作为数字温度输入端口,但必须在数字信号输入出现之前对其进行处理,因此这里有温度转换程序,此程序经过编程和软件设计之后可以实现对外部环境连续测温。但是也存在一定的问题,即由于硬件LED数量的限制,此处仅显示部分默认温度的整数部分。现阶段市面上的温度转换程序会将检测到的外界环境温度以10倍的形式在显示屏上显示,以解决温度传感器只显示测得的外界环境的整数部分而不显示小数点后的数字的问题,然后将其作为三位整数进行数字处理,例如将28.5更改为285,使编码变得更加简单方便,加快了编程的速度。4.1.3对电动机调速部分进行调式在本设计中,使用了一个达林顿驱动器ULN2803来驱动直流发动机,它可以驱动八台发动机。直流电软件将端口设置为P3.1端口以输出不同形式的PWM波。达林顿驱动器ULN2803驱动直流发动机运行。通过软件的程序任务定义,不同形式的PWM波在不同的温度下输出,从而通过不同的方式对对电风扇的发动机进行控制。一般情况下,外界环境温度高于系统设定温度时发动机会主动开始转动或转速自动增加,反之发动机不会转动或停止。此外,当外部温度与固定温度之差较大时,发动机转速会较高,因此工作循环会增加。在该系统中,风扇的发动机转速可以达到四级调速。将温度传感器检测到的温度与系统温度的默认值进行比较,可以实现速度的转换执行。当检测到的温度比默认温度升高5摄氏度时,风扇的发动机转速升高一个阶段。4.2硬件调试4.2.1按键显示部分的调试系统的按键部分功能如下:(1)按一下P1.3键时显示屏上的最后两个数字显示设定温度增加1℃;(2)按一下中间的P1.4键,最后两个LED数字显示温度降低1℃。但当按键时间过长时,系统设定的温度却不是增加1℃或减少1℃的情况,一般情况下是在呈现先增加后减少的变化特点。经调查分析,造成这种情况的主要原因可能是系统中加入的防震程序设定出现问题使增加按键释放时延迟判断时间过长,故在此基础上有所改变,具体改进方法是适当增加按键释放时的相应延迟时间,但同时控制时间不宜太久,否则密钥将无效。系统显示部分的主要功能如下:环境温度包括整数和小数两部分以前三位LED显示屏上的数字出现,最后两位LED数字显示按键设置的所需温度。结果表明LED显示屏的显示效果非常好,可持续性很强。4.2.2温度采集部分调试将DS18B20芯片连接到P3.1端口。通过对应系统板右下角的三个端口,特别是VCC、P3.1和GND,芯片可以直接插入此插针上。这一步操作的目的是为了使后续操作更加简便。在系统调试中,为了验证DS18B20是否能在系统板工作,通过合上手掌或握住芯片进行检测。如果结果显示LED屏幕上的前两个数字的温度迅速上升,则表明DS18B20可以在系统板工作,反之则不能在系统班上工作。因DS18B20有三列,在调试过程中需要看每一列的对应位置是否正确,避免使芯片不能正常工作甚至烧坏如果连接了芯片。4.2.3电动机调速电路部分调试电动机调速电路部分的调试重点在于调试相关软件的设计开发,因为该电路部分外侧的电路主要用于将外界接收的PWM信号放大而驱动电机转动。一般情况下在P3.1端口设置在系统软件,其目的是使电动机转动放大的PWM信号占空比。当外部环境温度高于系统的设定温度时,发动机转速会自动增加或开始转动。若系统中的热源温度显著高于外界环境温度或测温芯片DS18B20离热源距离较近几乎相接触时,发动机的转速会一直升高且转速会越来越快,当发动机的转速达其所能达到的最高值时转速将不再升高。当热源距离测温芯片DS18B20较远时,发动机的转速会逐渐下降,当发动机的转速达到一个最低临界值且此时将系统设定的温度升高并使设定温度高于外部环境温度时,发动机的转速一直下降直至变为0。此电路调试系统中选用的发动机是额定电压为12V的直流发动机,选用的电源是输出电压最高值为5V的单片机电源。在调试过程中,采用原直流发动机5V进行调试,发现控制效果客观。4.3系统功能4.3.1系统实现的功能单片机系统可以用来检测环境中的温度变化,直流电机的流量循环变化可以通过环境温度的变化来控制,从而使发动机产生不同转速。同时,本系统可以根据键盘中的按钮来调节和设定不同的温度以增大设定温度和外部环境温度的差值来控制发动机的转速。当外部环境温度高于系统所设定的温度时,不同占空比的PWM信号可以通过单片机中的不同输出端口输出此信号以达到控制发动机启动转动的目的,研究发现发动机转速随着外部环境温度与系统设定温度的差值变化而变化,一般规律为差值越大转速越快,反之发动机停止转动。另外,此系统还具有另外一大优势便是动态显示当前所处的环境温度和设定温度,并可以通过键盘按钮设定当前温度。4.3.2系统功能分析整个系统由按键和复位回路、数码管显示回路、温度检测回路和发动机驱动回路五部分组成。一是温度检测回路也就是整个系统中最重要的部位,其主要的功能是用于准确无误地测定所处环境的温度并将其传输给单片机,对环境温度及时进行评估以控制发动机的转速。二是发动机驱动回路,此部分采用了达林顿变化驱动器ULN2803以实现从单片机中输出的波形不同的PWM转化为不同的平均输出电压,以达到更好的控制发动机的转速;三是数码管动态显示回路,该部分的主要作用是可以实时显示所测得的环境温度和设定温度,键盘部位则可以自主调节设定温度而DS18B20可以测定外部环境温度,然后记录环境温度和设定温度并将其连续及时显示。结论本系统采用单片机为核心部位,以DS18B20温度传感器测定环境温度为基础组合可以具有不同转速的风扇发动机为一个整体,通过测定外界环境温度的变化来加快或减慢发动机的转速,并实现在一定的温度范围内转速的连续调节。LED数码管可以显示周围环境温度,并可以通过键盘上的两个独立按键实现维持和稳定数码管不同设定温度的调整,这意味着数码管的温度是固定在不同的温度差值水平的。改变环境的温度和设定温度之间的差值可以进一步改变发动机的转速。了解本系统的发动机转速设计可以应用众多发动机的控制系统之中。它可以在日常生活中使用,使智能化风扇可以被广大消费者所使用,为生活提供便利。在工业化生产中,为了控制发动机的转速,可以改变输入信号的不同类型,降低生产自动化程度和生产压力及使用成本。该系统的设计和研究在工业生产和日常生活中起着重要的作用。参考文献[1]李学龙.使用单片机控制的智能遥控电风扇控制器[J].电子电路制作,2003,9:13-15.[2]蓝厚荣.单片机的PWM控制技术[J].工业控制计算机.2010,23(3):97-98.[3]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社.2009,342-344.[4]胡汉才.单片机原理及其接口技术(第2版)[M].北京:清华大学出版社.2004,49-77.[5]胡全.51单片机的数码管动态显示技术[J].信息技术,2009,13:25-26.[6]李钢,赵彦峰.1-Wire总线数字温度传感器DSI8B20原理及应用[J].现代电子技术,2005,28(21):77-79.[7]马云峰.单片机与数字温度传感器DS18B20的接口设计[J].计算机测量与控制,2007,10(4):278-280.[8]王会明,侯加林.智能电风扇控制器的研制[J].电子与自动化,1998,5(4):25-26.[9]谭浩强.C程序设计(第三版)[M]..北京:清华大学出版社.2005,37—65.[10]孙号.Proteus软件在设计电子电路中的应用[J].仪表技术,2009,8:74-75.[11]楼俊军.基于Proteus和Keil的单片机演奏乐曲的实现[J].科技信息,2010,23:50.[12]王文海,周欢喜.用Proteus实现51单片机的动态仿真调试[J].IT技术,2006,20:10-11.[13]丁建军,陈定方,周国柱.基于AT89C51的智能电风扇控制系统[J].湖北工学院学报,2003,18(2):60-63.[14]王会明,侯加林.智能电风扇控制器的研制[J].电子与自动化,1998,5(4):25-26.[15]刘进山.基于MCS-51电风扇智能调速器的设计[J].电子质量.2004,10(10):71.[16]YUQihao,CHENGGuodong,NIUFujun.Theapplicationofauto-temperature-controlledventilationembankmentinQinghai--TibetRailway[J].ScienceinChinaSer.DEarthSciences,2004,1(47):168-176.[17]YLai,Y,Wang.Three—dimensionalnonlinearanalysisfortemperaturecharacteristicofventilatedembankmentinpermafrostregions[J].ColdRegionsScienceandTechnology,2004,38(2):165-184.[18]ChengGuodong.Linearityengineeringinpermafrostareas[J].JournalofGlaciologyandGeocryology(inChinese,2001,23(3):213-217.[19]BSchneier.AppliedCrytography:Algorithms,andSourceCodeinC[J].NewYork:JoneWiley&Sons.1994,301-307.[20]Intel:BenjaminJun,PaulKocher.ThelntelRandomNumberGenerator[J].WhitePaperPreparedforlntelCorporation,l999:4-5.附录1:电路总图附图1电路总图附录2:程序代码#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^7;sbitkey1=P1^3;sbitkey2=P1^4;sbitdianji=P3^1;floatff;uinty3;ucharshi,ge,xiaoshu,sheding=20,gaonum,dinum;ucharcodedispcode[]={//段码0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};ucharcodetablel[]={//带小数点的段码0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchardispbitcode[]={//位选0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchardispbuf[8]={0,0,0,0,0,0,0,0};voidDelay(uintnum)//延时函数{ while(--num);}voiddigitalshow(uchara4,uchara3,uchara2,uchara1,uchara0){ dispbuf[0]=a0; dispbuf[1]=a1; dispbuf[2]=a2; dispbuf[3]=a3; dispbuf[4]=a4; P2=0xff; P0=dispcode[dispbuf[0]]; P2=dispbitcode[5]; Delay(1); P2=0xff; P0=dispcode[dispbuf[1]]; P2=dispbitcode[4]; Delay(1); P2=0xff; P0=dispcode[dispbuf[2]]; P2=dispbitcode[2]; Delay(1); P2=0xff; P0=tablel[dispbuf[3]]; P2=dispbitcode[1]; Delay(1); P2=0xff; P0=dispcode[dispbuf[4]]; P2=dispbitcode[0]; Delay(1);}voiddmsec(uintcount){ uinti; //1ms延时 while(count--) { for(i=0;i<125;i++){} }}voidtmreset(void){ DQ=0; Delay(90); //精确延时大于480us DQ=1; Delay(4); //90,4可以小范围变化}voidtmpre(void){ while(DQ); while(~DQ); Delay(4);}bittmrbit(void){ uinti; bitdat; DQ=0; i++; //i++;大概1us DQ=1; i++; i++

温馨提示

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

评论

0/150

提交评论