基于AT89C52的温室用温度监控系统设计
扫描二维码
随时随地手机看文章
温室大棚要求温度保持在某范围内,这个范围温度是动植物生长的最佳环境温度,因此必须对动植物生长的环境温度进行监测和控制,使其适合动植物的生长,以提高产量和质量。本设计就是对温室的温度控制要求进行全面分析,综合考虑系统精度和经济性多方面因素后,设计一种基于单片机的温度自动控制系统。本系统能够实现对温室大棚温度的自动监控,可以通过按键输入设定温度等控制指令,并且使温室温度保持在设定值的范围内,完成监控系统的工作。
1 系统总体方案
本系统以AT89C52单片机为主控制器,加外围的温度采集模块、键盘模块、显示电路模块、加热模块和降温模块构成,系统结构框图如图1所示。温度采集模块首先采集温度值,A/D转换后送入AT89C52单片机处理,处理后的温度值在显示器上显示。另外由键盘设定动植物生长所需的理想温度值,并送到单片机中,单片机采用PID算法比较设定的温度值和采集的温度值后发出控制信号到继电器,继电器驱动风扇降温或加热片加热,直到与设定的温度值一致就停止工作。
2 系统硬件设计
2.1 温度采集模块
目前,温度采集装置常采用热电偶,因热电偶输出为模拟量电压,且输出电压很小,只有几毫伏,必须经过信号放大,到5伏左右进行A/D转换,转化后送给单片机处理。此方案的优点在于测量温度范围大,从-100℃到上千摄氏度,且精度高,但系统硬件复杂,抗干扰能性较低。数字式温度传感器弥补了热电偶的缺点,DS18B20就是一款单总线数字式温度传感器,无需外接其他电路,直接输出就是数字量,写入DS18B20的信息或从DS18B20读出的信息仅需要一根线,DS18B20与单片机的连接电路如图2,因而使用DS18B20可使系统结构更趋简单,抗干扰能力增强。DS18B20的测温范围从-55~+125℃,增量值为0.5℃,可在1 s内将温度变换成数字。
DS18B20接收到单片机发出的温度开始转换命令后,DS18B20启动转换。转换后的温度值以16位带符号的二进制补码形式存储在暂存存储器的0和1字节中。单片机通过单总线接口读到该数据,读取时低位在前,高位在后。温度值格式如表1,其中“S”为符号位,当高字节的前5位S=0时,代表正数,直接将高字节的低3位和低字节的二进制位转换成十进制就是对应的温度值;当高字节的前5位S=1时,代表负数,高字节的低3位和低字节的二进制位代表负数的补码,需先将补码变换成原码,再计算十进制值才是对应的温度值。
2.2 继电器电路模块
由于本系统要控制加热片加热或电风扇降温,功率较大,因此要借助功率电路。如果采用可控硅控制实现可以达到很高的控制精度,但需加光耦合隔离器件,电路稍显复杂。采用继电器控制可以很容易实现通过较高的电压和电流,而且无需外加光耦,电路简单可靠。因此,本设计采用继电器控制风扇和加热片,其电路如图3所示。
当实测温度低于或高于设定温度的下限或上限值时,由单片机输出高电平信号,NPN三极管9014导通,继电器驱动加热器开始加热或电风扇开始降温。为了防止继电器频繁动作,在程序中对温度测量精确到小数点后两位,而在温度设定时只取整数。继电器线圈旁边反方向并联一个二极管,二极管起到保护三极管的作用,防止三极管击穿。
2.3 键盘和显示模块
本系统需用4个LED数码管,分别显示温度的十位、个位和小数点后两位,当通过按键设定温度时,LED数码管停止显示当前温度,显示设定温度值,设定完毕后,继续显示当前的采集温度值。动态显示组合式数码管只需要较少的引脚个数,以4位一体组合式数码管为例,需要8+4=12个引脚。而如果每个数码管都要单独引脚,至少需要4*9=36个引脚。引脚数减少使得PCB板布线变得更为简单,因此,在需要使用多位数码管时,一般都用动态显示组合式。本设计采用四位一体的共阳极数码管,单片机PO口控制数码管的段a--dp,P2.4--P2.7通过4个9012 PNP型三极管接数码管的COM端。
温度的设置采用按键来实现,通过按键修改温度的上限值和下限值。按键采用独立式键盘,经上拉电阻分别接单片机的P1.1、P1.2和P1.3引脚上,其与单片机的连接如图4所示。先按一次控制键,然后每按上调或下调键一次,设定温度值增1或减1,再按一次控制键代表设定完毕。
3 系统软件设计
本系统的软件采用汇编语言设计,主程序中首先初始化,而后循环调用读温度、温度处理、显示、键盘和继电器控制子程序,实现温度控制的功能。
3.1 主程序流程图
主程序流程图如图5所示。
3.2 读温度模块子程序
DS18B20操作时都要严格按照DS18B20工作过程规定的协议进行。DS18B20应遵循以下工作协议:DS18B20复位->执行ROM命令->执行功能命令->数据处理,读取温度的子程序流图如图6所示。
3.3 数据处理子程序
由于DS18B20转换后的16位数据并不是实际的温度值,所以要进行数据处理。温度高字节中的高5位是用来表示温度的正负,高字节的低3位和低字节用来保存温度值。其中低字节的低4位用来保存温度的小数位。由于,1/24=0.062 5,所以,DS18B20的温度精度是0.062 5 ℃。用低字节的低4位数值乘以0.062 5,有可能是多个小数位,本设计要求温度值保留小数点后两位,所以采取四舍五入,得到真正的两位小数。具体算法是首先程序判断温度值是否为负,如果是,则DS18B20保存的是温度的补码值,需要先求其原码。处理过后的温度存储到单片机的RAM中,然后将RAM中的十六进制码转换成BCD码。数据处理子程序流程图如图7所示。
3.4 键盘扫描子程序
按键采用3个按键,分别表示控制键、加1键和减1键,键盘子程序流程图如图8所示。
4 系统调试
本设计制作了硬件实物,系统采用的是分模块焊接与调试,目的是为了防止全部焊接调试困难,若一次不成功,查找错误麻烦。分步调试后,最后进行联调,由于条件限制,在本设计中采用室内温度进行测试,若设定温度高于当前温度值,加热器模拟灯会亮,但是室内温度不会变化那么快,采用体温来实现温度的快速升高,达到设定值,加热器灯灭。由此可见,该系统具有较高的控制精度。
5 结束语
该温度控制器能够实时监测温室大棚的温度,误差小于0.1℃;可以设定农作物生长的理想温度,根据当前温度与设定温度之间的差别,加热器或者风扇将自动启动,直至达到设定温度停止工作。经改进后,该系统可以广泛地应用在养殖大棚等场所的温度控制,保证农作物理想的生长温度,提高产量。