冷库温控系统的单片机改造
2014-10-22贺淑敏盛树军
贺淑敏 盛树军
摘 要:温度检测一般有两种方式,一是模拟采集后再进行数字转换;另一种是直接利用温度传感器输出数字量。本文考虑的主要因素是控制成本和便利性,对精度要求不是特别高,所以采用了18B20数字温度传感器。相对原系统增加了无线传输功能,大大方便了对冷库温度信息的掌控。无线传输部分采用了集成模块,价格便宜、功能稳定,极大缩短了开发周期,使系统能够在短期内投入使用。
关键词:温度采集 18B20 无线传输
中图分类号:TP368 文献标识码:A 文章编号:1672-3791(2014)07(a)-0023-02
有一私人冷库在仲夏期间由于意外情况崩溃,就剩制冷压缩机还正常。库房中储藏的都是肉类,如果不能及时降温的话,损失非常大。应急措施只能先将原供电线路临时更换,用人工方式定时开关压缩机来制冷,这种方式显然不能持久。原系统设计公司已经倒闭,无法购买产品,所以当务之急就是重新设计温度控制系统。由于是私人使用,老板特别交代成本越低越好。
在重新设计之前,我大致了解了一下原系统采用的是AD590+A/D模块+三菱PLC的方式。在成本优先的前提下,有必要对比一下几种备选方案。
方案1:继续采用原系统。AD590功能单一、测量误差小、响应速度快。输出信号必须外加A/D转换电路或采用A/D模块处理后才能变成数字量。若使用转换电路,则程序工作量大、外围电路复杂;使用A/D模块的话,就必须与PLC配合,系统成本高。
方案2:采用DS18B20数字温度传感器。DS18B20功耗低、抗干扰能力强,采用单总线工作方式,既能单点测温,也可构成多点测控系统。最明显的优势是它直接输出数字信号,无需A/D转换就能被处理器接受,测温范围-55℃~+125℃。
本冷库常年要求温度范围是-18℃~ -5℃,结合以上介绍,采用DS18B20比较合适。处理器采用常见的STC89C52,造价低、使用经验成熟。在准备过程中,应使用者的要求临时增加了无线数据传输功能。
(1)温度采集与控制电路显示部分采用S03641B四位一体LED,千位用于显示正负号,若为正值则不显示,若为负值则显示“-”。需要注意18B20的控制方法,特别是18B20对时序要求非常严格,本系统用的是51汇编语言,所以一定要根据晶振频率计算好合适的时序,否则传感器不工作。为了加强稳定性,单片机晶振选取了6MHz,速度不快,但对系统来说基本够用。现将系统主程序的温度转换部分示例。
acall rst;调用初始化子程序
jnb f0,main;判断是否将1820有效复位,f0为1则复位有效
mov a,#44h;发温度转换命令
mov r6,#16;利用重复调用显示子程序延时约1s,时间必须
;大于等于750ms,否则读不出正确的数值,只会有85度一个值
acall rst;再复位
jnb f0,main1;判断传感器复位是否有效
mov a,#0beh;读暂存器命令
acall r2b;读取暂存器中的温度值2个字节,存放于lsb/msb中
acall get_thm;此子程序作用是将lsb/msb组合为一个字节,得到完整的温度数值
温度数值被正确读出后的工作有三部分。
一是将温度显示出来,由于是四位一体数码管,只有动态扫描一种,注意控制好扫描频率即可,不再赘述。
二是将读取的温度值与事先设定的标准温度进行对比,如果采集温度高于设定温度范围则压缩机开始工作。在主程序中,get_thm子程序的作用是用来组合最后的温度数值,事先设定的温度值有两个,-5℃(maxThm)和-18℃(minThm)。若高于-5℃,则通过P3.0管脚发出一低电平控制命令,经过7404反相后进入ULN2003第一组输入端,二次反相驱动后输出接通固态继电器(SSR),再通过接触器接通压缩机电源,制冷过程开始。为了避免压缩机频繁启停,程序设定制冷溫度必须低于-18℃后压缩机才能停止。
三是将读取的数值通过SI4432模块发送出去。为了缩短开发周期,在淘宝上选择了成品SI4432无线收发模块,带高增益天线每块只需28元,性价比很高。模块与单片机的接线方式如下。
在接收模式下,通过SPI直接操作数据缓冲区即可。由于STC89C52没有SPI接口,所以只能用软件来模拟。这里用P1.0模拟主设备的数据输出端SDO,P1.1模拟SPI的时钟输出端SCK,P1.2模拟从机选择端SCS,P1.3模拟数据输入SDI。SI4432的数据传送模式有三种:FIFO模式、直接模式和PN9模式,在FIFO模式是下使用片内的堆栈区来发送接收数据,通过对寄存器的连续读写进行的。这种方式原理简单,缺点是传输距离没有直接模式远。为了稳定性的需要,尽可能降低程序复杂度,这里采用了FIFO模式。由于冷库温度不会突然变化,所以对实时性要求不高,数据传输任务量很小,系统主程序刻意设定了十秒钟传输一次,这样就大大降低了无线收发模块的任务量,从而间接提高了稳定性。
(2)接收显示与报警电路这部分电路功能上主要是显示与报警驱动两部分。
由无线模块接收到的温度值通过数码管显示的同时,也要与存储在制定单元的设定值进行比较:如果温度高于-5℃或低于-18℃的时间超过半小时,则认定系统出现故障,通过P3.4管脚发出信号,经过LM386驱动报警蜂鸣器工作,直至温度恢复正常。
由于本系统在设计过程中时间比较仓促,很多功能还有待完善,比如可增加键盘输入温度值功能;与组态软件联机实现数据实时记录的功能和多点温度测量功能等。在调试过程中当传输距离超过200米时偶尔出现掉帧现象,这一问题在将无线模块天线引出冷库后得以解决。
参考文献
[1] 吴金戌.8051单片机实践与应用[M].清华大学出版社,2002(9).