黄浚恒,李 冶,刘宾坤
(大连理工大学城市学院,辽宁 大连 116000)
散热风扇在生活中是不可或缺的,但是只依靠人工手动地开启与停止风扇是比较繁琐的,而且也不能精确地感知周围的温度,所以加入单片机对风扇进行控制是一种更有效和更方便的方法。现如今很多人利用单片机控制风扇进行散热,比如在电脑机房里,考虑到线路问题,室内温度不能太高,这种情况下为了保证电路的稳定性和可靠性,就可以考虑采用单片机控制风扇这种方式。为此,本文设计了一种智能温度控制风扇,此装置通过温度传感器监测温度并且用单片机控制风扇的转速。
温控风扇系统由复位电路、晶振电路、5 V电源、电机驱动、LCD显示、温度采集电路、独立按键电路、风扇控制电路、蜂鸣器提示电路组成。
微处理器模块:STC89C51单片机拥有32位双向输入输出线、2个16位定时器、5个中断源、1个全双工的异步串行口,具有抗干扰能力强、宽电压、不怕电源抖动的特点。单片机最小系统主要由时钟电路、复位电路、电源电路和STC89C51单片机组成。其中时钟电路提供的时钟信号为单片机提供一个时间基准;复位电路是为了使单片机回到原始状态重新执行程序;5 V电源主要为单片机供电以保证其正常工作。
显示模块:LCD显示模块可以只用D4~D7作为四位数据分两次传送,能节省I/O口资源;显示屏能显示32个字符,即2行16个字符;有8位数据总线和3个控制端口,可以调节对比度和背光。LCD1602是一种显示字母、数字、符号的点阵型液晶模块。显示内容分两种:一种是常用字符,存储在CGROM中,用户可以直接调用;另一种是自定义的字符,同样存储在CGROM中。在LCD显示模块中,当输入的接口信号RS=0、RW=1时,引脚E输出高电平,输出的D0~D7为状态字,此时为读状态模式;当输入的RS=1、RW=1时,E输出高电平,输出的D0~D7为数据,此时为读数据模式;当输入的RS=0、RW=0时,E输出低电平,此时为写命令模式;当输入的RS=1、RW=0时,E输出低电平,此时为读命令模式。
温度采集模块:系统采用的DS18B20温度传感器有64位ROM、温度传感器、温度报警触发器TH和TL三个主要数字部件,具有非易失性用户可编程上限的报警功能和较低的触发点,只需要一根总线与微处理器进行连接;还可以直接从数据线供电,无需外部电源。每个DS18B20温度传感器都许可多个DS18B20在同一总线上运行,因此使用一个单片机就可以很简单地控制大面积的DS18B20,可以用在工业系统、热敏系统、温度监控系统上。DS18B20在一条线的单个端口条件下要先建立一个协议,才可对存储器进行操作处理;一条指令对DS18B20进行一次温度测量,将所测量的结果放到暂存器中,可以用一条读指令把暂存器中的数据读出。DS18B20通过一个振荡器来确定一个门周期,计数器在周期内对这个振荡器所产生的脉冲进行计数来得到相对应的温度值。
按键模块:按键一端与单片机的I/O口相连接,另一端与地相连接。单片机的I/O在没有作为输出的情况下默认高电平,当按键按下后相当于I/O口短接电源地,这种按键的接触方式会产生抖动的情况,所以在程序中需要适当地加上短暂的延时消抖。通过检测I/O口是否会出现低电平并进行消抖就可以判断是否有按键按下,再执行对应的功能。设置键的作用是能在加值键和减值键之间进行切换,方便控制温度值的范围。加值键能调整温度的上限值,减值键能调整温度的下限值。三个按键的功能如下:
(1)第一个位置的按键:按下后进入上下限设置。
(2)第二个位置的按键:在所对应的模式下,对应参数加1。
(3)第三个位置的按键:在所对应的模式下,对应参数减1。
驱动模块:采用了L9110S电机驱动,L9110是为控制电机和驱动电机而设置的一个两通道推挽式功率放大集成器件,其特点是:具有较低的饱和压降;TTL/CMOS输出电平可以直接连接CPU,并且具有比较好的抗干扰性;低静态的工作电流;内置的钳位二极管能够释放出反向冲击的电流,使其在驱动继电器、直流电机、步进电机时更安全可靠。两个输出的电平可以驱使电机进行正反转,L9110的IA引脚接高电平,单片机的I/O口接IB引脚,所以单片机I/O口输出低电平时电机转动,当I/O口输出高电平时电机停止。
蜂鸣器模块:蜂鸣器选用5 V的电磁式有源蜂鸣器,由于蜂鸣器的工作电流一般比较大,以致单片机的I/O口无法直接驱动,所以要利用三极管开关电路来驱动。本文选用的是8550三极管,它是一个PNP型的三极管。当I/O口输出低电平时,三极管导通,蜂鸣器响起;当I/O口输出高电平时,三极管截止,蜂鸣器也停止响声。
系统通过温度传感器采集周围环境的温度,将采集到的温度转换为温度信号,把温度信号传输给单片机,单片机对温度信号进行加工处理并输出到显示屏中,在显示屏上显示出当前的温度数值,调用风扇的控制函数,进而控制风扇的转速大小。当所测的温度超出设定的温度阈值时,风扇为最高转速,蜂鸣器报警;当所测的温度处于设定的温度阈值之间时,风扇为正常转速,蜂鸣器停止;当所测的温度值低于设定的温度阈值时,风扇停止,蜂鸣器停止。主程序流程如图1所示。
图1 主程序流程
使用Proteus制作出原理图,选择程序后运行加载程序,得到的结果如图2所示。当前环境温度为28.12 ℃,处于设置的温度上限值和下限值之间,蜂鸣器停止,风扇低速转动,LED灯亮,通过加值键和减值键调整温度阈值来控制风扇转速。在仿真过程中添加一个上拉排阻,它的作用为:增强输出引脚的驱动能力,提高输出电平;提高芯片输入信号的噪声容限,增强抗干扰能力,提高输出的高电平值。
图2 Proteus仿真图
系统的软件方面通过Keil软件进行编写,将编写好的程序生成.HEX文件后通过下载器下载到单片机中。通过观察整个系统运行的状态,然后对程序进行修改和调试,最终能够获到一个完整的程序。在调试过程中发现按键按下抖动会产生误差,致使实验数据产生偏差,所以加入延时函数判断按键按下与松开的状态,以此来消除因抖动带来的误差。在实验中发现显示屏的亮度很低,不便于观察,因此加入电位器、旋转电位器可以调整显示屏的对比度,使显示屏更加明亮。为了使风扇的温度阈值能够在加减键之间进行切换,所以添加了一个设置切换按键。
在如今信息飞速发展的时代,单片机在各行各业里都是不可缺少的,人们灵活地使用单片机能增加许多工作效率。本文将51单片机与风扇结合起来,实现了智能温控风扇系统,主要基于51单片机和DS18B20温度传感器监测环境温度,监测到的温度值会被返还给单片机;单片机通过分析和比较接收到的温度值来控制风扇的转速。该系统能够监测环境温度并针对温度变化做出相应的调整措施,解决了以前需要人工操作且效率低下的问题,为社会生产和生活提供了便利。