任 玲,翟旭军,李增国,张 衡
(江苏农牧科技职业学院 机电系,江苏 泰州225300)
温室大棚要求温度保持在某范围内,这个范围温度是动植物生长的最佳环境温度,因此必须对动植物生长的环境温度进行监测和控制,使其适合动植物的生长,以提高产量和质量。本设计就是对温室的温度控制要求进行全面分析,综合考虑系统精度和经济性多方面因素后,设计一种基于单片机的温度自动控制系统。本系统能够实现对温室大棚温度的自动监控,可以通过按键输入设定温度等控制指令,并且使温室温度保持在设定值的范围内,完成监控系统的工作。
本系统以AT89C52单片机为主控制器,加外围的温度采集模块、键盘模块、显示电路模块、加热模块和降温模块构成,系统结构框图如图1所示。温度采集模块首先采集温度值,A/D转换后送入AT89C52单片机处理,处理后的温度值在显示器上显示。另外由键盘设定动植物生长所需的理想温度值,并送到单片机中,单片机采用PID算法比较设定的温度值和采集的温度值后发出控制信号到继电器,继电器驱动风扇降温或加热片加热,直到与设定的温度值一致就停止工作。
图1 系统框图Fig.1 The system block diagram
目前,温度采集装置常采用热电偶,因热电偶输出为模拟量电压,且输出电压很小,只有几毫伏,必须经过信号放大,到5伏左右进行A/D转换,转化后送给单片机处理。此方案的优点在于测量温度范围大,从-100°C到上千摄氏度,且精度高,但系统硬件复杂,抗干扰能性较低。数字式温度传感器弥补了热电偶的缺点,DS18B20就是一款单总线数字式温度传感器,无需外接其他电路,直接输出就是数字量,写入DS18B20的信息或从DS18B20读出的信息仅需要一根线[1],DS18B20与单片机的连接电路如图2,因而使用DS18B20可使系统结构更趋简单,抗干扰能力增强。DS18B20的测温范围从-55~+125℃,增量值为0.5℃,可在1 s内将温度变换成数字。
图2 DS18B20测温电路Fig.2 DS18B20 temperature measurement circuit
DS18B20接收到单片机发出的温度开始转换命令后,DS18B20启动转换。转换后的温度值以16位带符号的二进制补码形式存储在暂存存储器的0和1字节中[1-2]。单片机通过单总线接口读到该数据,读取时低位在前,高位在后。温度值格式如表1,其中“S”为符号位,当高字节的前5位S=0时,代表正数,直接将高字节的低3位和低字节的二进制位转换成十进制就是对应的温度值;当高字节的前5位S=1时,代表负数,高字节的低3位和低字节的二进制位代表负数的补码,需先将补码变换成原码,再计算十进制值才是对应的温度值。
表1 DS18B20温度值格式表Tab.1 DS18B20 temperature values format table
由于本系统要控制加热片加热或电风扇降温,功率较大,因此要借助功率电路。如果采用可控硅控制实现可以达到很高的控制精度,但需加光耦合隔离器件,电路稍显复杂。采用继电器控制可以很容易实现通过较高的电压和电流,而且无需外加光耦,电路简单可靠。因此,本设计采用继电器控制风扇和加热片,其电路如图3所示。
图3 继电器控制电路图Fig.3 The relay control circuit diagram
当实测温度低于或高于设定温度的下限或上限值时,由单片机输出高电平信号,NPN三极管9014导通,继电器驱动加热器开始加热或电风扇开始降温。为了防止继电器频繁动作,在程序中对温度测量精确到小数点后两位,而在温度设定时只取整数[3]。继电器线圈旁边反方向并联一个二极管,二极管起到保护三极管的作用,防止三极管击穿。
本系统需用4个LED数码管,分别显示温度的十位、个位和小数点后两位,当通过按键设定温度时,LED数码管停止显示当前温度,显示设定温度值,设定完毕后,继续显示当前的采集温度值。动态显示组合式数码管只需要较少的引脚个数,以4位一体组合式数码管为例,需要8+4=12个引脚。而如果每个数码管都要单独引脚,至少需要4*9=36个引脚。引脚数减少使得PCB板布线变得更为简单,因此,在需要使用多位数码管时,一般都用动态显示组合式。本设计采用四位一体的共阳极数码管,单片机P0口控制数码管的段a--dp,P2.4--P2.7通过4个9012 PNP型三极管接数码管的COM端。
温度的设置采用按键来实现,通过按键修改温度的上限值和下限值。按键采用独立式键盘,经上拉电阻分别接单片机的P1.1、P1.2和P1.3引脚上,其与单片机的连接如图4所示。先按一次控制键,然后每按上调或下调键一次,设定温度值增1或减1,再按一次控制键代表设定完毕。
本系统的软件采用汇编语言设计,主程序中首先初始化,而后循环调用读温度、温度处理、显示、键盘和继电器控制子程序,实现温度控制的功能。
主程序流程图如图5所示。
图5 主程序流程图Fig.5 The main program flow chart
DS18B20操作时都要严格按照DS18B20工作过程规定的协议进行。DS18B20应遵循以下工作协议:DS18B20复位->执行ROM命令->执行功能命令->数据处理,读取温度的子程序流图如图6所示。
图6 读温度子程序流图Fig.6 Read the temperature subroutine flow chart
由于DS18B20转换后的16位数据并不是实际的温度值,所以要进行数据处理。温度高字节中的高5位是用来表示温度的正负,高字节的低3位和低字节用来保存温度值。其中低字节的低4位用来保存温度的小数位。由于,1/2-4=0.062 5,所以,DS18B20的温度精度是0.062 5℃。用低字节的低4位数值乘以0.062 5,有可能是多个小数位,本设计要求温度值保留小数点后两位,所以采取四舍五入,得到真正的两位小数。具体算法是首先程序判断温度值是否为负,如果是,则DS18B20保存的是温度的补码值,需要先求其原码[5]。处理过后的温度存储到单片机的RAM中,然后将RAM中的十六进制码转换成BCD码。数据处理子程序流程图如图7所示。
图7 数据处理子程序流程图Fig.7 Data processing subroutine flow chart
按键采用3个按键,分别表示控制键、加1键和减1键,键盘子程序流程图如图8所示。
图8 键盘子程序流程图Fig.8 Keyboard subroutine flow chart
本设计制作了硬件实物,系统采用的是分模块焊接与调试,目的是为了防止全部焊接调试困难,若一次不成功,查找错误麻烦。分步调试后,最后进行联调,由于条件限制,在本设计中采用室内温度进行测试,若设定温度高于当前温度值,加热器模拟灯会亮,但是室内温度不会变化那么快,采用体温来实现温度的快速升高,达到设定值,加热器灯灭。由此可见,该系统具有较高的控制精度。
该温度控制器能够实时监测温室大棚的温度,误差小于0.1℃;可以设定农作物生长的理想温度,根据当前温度与设定温度之间的差别,加热器或者风扇将自动启动,直至达到设定温度停止工作。经改进后,该系统可以广泛地应用在养殖大棚等场所的温度控制,保证农作物理想的生长温度,提高产量。
[1]艾诚,韩峻峰.基于DS18B20的温度控制系统设计[J].微型机与应用,2013(9):11-13.AI Cheng,HAN Jun-feng.Temperature control system design based on DS18B20[J].Microcomputer&Its Applications,2013(9):11-13.
[2]裴清华.基于AT89C51单片机的蔬菜大棚控制系统[J].计算机与现代化,2010(1):4-6.PEI Qing-hua.Vegetable greenhouse control system based on AT89C51 microcontroller[J].Computer and Modernization,2010(1):4-6.
[3]周坚.单片机项目教程[M].北京:北京航空航天大学出版社,2011.
[4]钟晓伟,宋蛰存.基于单片机的实验室温湿度控制系统设计[J].林业机械与木工设备,2010,38(1):39-42.ZHOU Xiao-wei,SONG Zhe-cun.System design of laboratory temperature and humidity controlbased on single chip microcomputer[J].Forestry Machinery and Woodworking Equipment,2010,38(1):39-42.
[5]易顺明,赵海兰,袁 然.基于单片机的大棚温湿度控制系统设计[J].现代电子技术,2011,34(7):129-132.XIShun-ming,ZHAOHai-lan,YUAN Ran.The design of control system of greenhouse temperature and humidity based on single chip microcomputer[J].Modern Electronic Technology,2011,34(7):129-132.
[6]李德路,谢欢.基于DS18B20的室内温度监控系统设计[J].电子科技,2013(5):1-4.LI De-lu,XIE Huan.Design of indoor temperature monitoring system based on DS18B20[J].Electronic Technology,2013(5):1-4.