伍先春
(1.合肥工业大学,安徽合肥230009;2.芜湖市铁山宾馆,安徽芜湖241000)
多点温度检测控制
伍先春
(1.合肥工业大学,安徽合肥230009;2.芜湖市铁山宾馆,安徽芜湖241000)
结合铁山宾馆多处生活热水控温的需求,提出采用PC机和单片机相结合的控制方案,由PC机进行多点温度集中监控和管理,单片机现场实时温度显示和自动控温。实践表明,该控制方案在工、农业生产和日常生活等诸多领域有非常广阔的应用前景,值得推广。
多点温度;PC;单片机;自动控制;串行通信;管理
芜湖市铁山宾馆的每幢客房楼设置有独立的生活热水加热装置,以前生活水温控制全靠员工不停巡视来控制、记录水温,员工的值班工作量很大,而且经常出现水温过高或过低的现象。因此我们对该系统进行改造:
一、在值班点设置一台PC机,对所有的六幢客房楼的生活热水加热装置进行温度显示、监控、设置的集中管理;任何一处出现超、低温时,发出声光报警。
二、在每幢客房楼的生活热水加热管道上安装电动阀门,现场安装单片机实时显示温度,根据温度变化自动控制阀门开、闭;超温或低温时发出声光报警。
三、可以现场对单片机进行温度等的设定;亦可以远程对单片机进行管理。
本设计运用主从分布式思想,由一台上位机(PC机),多台下位机(单片机)多点温度数据采集,组成两级分布式多点温度测量的巡回检测系统。该系统采用RS-485串行通讯标准,通过上位机控制下位机进行现场温度采集。温度值既可以送回主控PC进行数据处理,由显示器集中显示。也可以由下位机单独工作,实时显示当前各点的温度值,并对各点进行实时温度控制,并具有超、低温声光报警功能。
图1 系统结构示意图
每路单片机带有四路温度传感器,负责温度数据的现场采集、处理、实时温度值显示。可以给每路温度传感器设置温度上、下限值,并根据此上、下限值进行温度的实时控制。如果超温、低温均可进行声光报警。根据功能要求,可以设计单片机的硬件电路如下:
图2 单片机系统结构示意图
近十年来在工业测控领域,国内运用最多的是Atmel公司的AT89系列,它的标准型产品在指令上,在管脚上都兼容Intel公司的MCS-51系列的第一代CPU8031,并在片内存储器、振荡电路、功耗、软件加密以及内置看门狗等技术水平上有很大程度的提高。因此选用ATMEL的8位单片机AT89S52。
下位机温度采集传感器采用的是数字温度传感器DS18B20。DS18B20利用单总线的特点可以方便的实现多点温度的测量,轻松的组建传感器网络,系统的抗干扰性好、设计灵活、方便,而且适合于在恶劣的环境下进行现场温度测量。
DS18B20的内部结构如下图所示:
图3 DS18B20内部结构图
DS18B20支持“一线总线”接口,测量温度范围为-55° C~+125°C,在-10~+85°C范围内,精度为±0.5°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
键盘电路比较简单,设置四个键K1,K2.K3,K4。其中:
K1(“■”键):用来选择显示方式,循环切换可以选择循环轮流显示各个传感器的实时温度或选择显示指定传感器的实时温度两种方式。
K2:循环切换,可以选择设定不同温度传感器的上,下限温度报警值。
K3(“▲”键):在选择显示指定传感器的实时温度方式时,按“▲“键,传感器号加1。在选择设定传感器的上,下限温度报警值时,按“▲”键,设定值加1。
K4(“▼”键):在选择显示指定传感器的实时温度方式时,按“▼”键,传感器号减1。在选择设定传感器的上,下限温度报警值时,按“▼”键,设定值减1。
图4 89S52单片机键盘和报警电路图
图5 温度控制电路图
该系统由上位机和下位机组成,系统中单片机负责数据采集、处理和控制,上位机负责对单片机的数据进行处理,非常直观地对所有温度值进行显示、监控。通信协议采用半双工异步串行通信方式,通过RS485的RTS信号进行收发转换,上位机与下位机之间采用主从式通讯。
(1)PC机程序结构
采用的VB环境下PC机与单片机之间实现串行通讯的软硬件方案。PC微型机程序结构示意图如下:
图6 PC机程序结构框图
(2)PC机多点温度控制报警显示系统主界面:
图7 PC机程序界面
主要的程序代码如下:
PrivateSubTimer1_Timer()
Ifnumb>=3Thennumb=0
numb=numb+1
Callorder_num
EndSub
Suborder_num()'周期发出请求指令,自动连续采集
Ifnumb=1Then
a(0)=&H81
a(1)=&H81
a(2)=&HA1
a(3)=&HA1
MSComm1.Output=a
ElseIfnumb=2Then
a(0)=&H82
a(1)=&H82
a(2)=&HA2
'读取各单片机返回的数据串
'获取实时温度值
temp=Left(buffer1,25)
data1=Val("&H"<rim(Mid(temp,4,2)))*16+ Val("&H"&Mid(temp,1,1))+Val("&H"&Mid(temp, 2,1))*0.0625
data2=Val("&H"<rim(Mid(temp,10,2)))*16+ Val("&H"&Mid(temp,7,1))+Val("&H"&Mid(temp, 8,1))*0.0625
data3=Val("&H"<rim(Mid(temp,16,2)))*16+ Val("&H"&Mid(temp,13,1))+Val("&H"&Mid (temp,14,1))*0.0625
data4=Val("&H"<rim(Mid(temp,22,2)))*16+ Val("&H"&Mid(temp,19,1))+Val("&H"&Mid (temp,20,1))*0.0625
其余程序代码略。
(1)单片机主程序
整个系统的功能是由硬件电路配合软件来实现的,软件由监控软件和执行软件组成。其中监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块。而执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。
主程序调用了9个子程序,分别是温度转换开始子程序、读出温度值子程序、根据温度进行控制子程序、温度显示模式设定子程序、温度数据计算处理子程序、显示数据BCD码刷新子程序、数码管显示子程序、键盘扫描以及按键处理程序、单片机与PC机串口通讯程序。各子程序功能如下:
1)温度转换开始子程序:通知各温度传感器开始进行温度转换。
2)读出温度值子程序:从各个DS18B20的高速暂存器中读出温度值。
3)温度控制子程序:根据各个温度传感器设定的上下限报警值和实时温度值来控制各个继电器的通断,并进行声光报警。
4)温度显示模式设定子程序:用来选择是顺序循环检测显示,还是选择指定的温度传感器进行温度显示。
5)温度数据计算处理子程序:用于将DS18B20读出的二进制温度转化为十进制数值。
6)显示数据BCD码刷新子程序:用于显示区BCD码温度值刷新子程序。
7)数码管显示子程序:向数码的显示送数,控制系统的显示部分。
8)键盘扫描电路及按键处理程序:实现键盘的输入按键的识别,主要用于对各个温度传感器上下限报警值的设定。
9)中断控制程序:实现循环显示功能。
10)串口通讯程序:实现PC机与单片机通讯,将温度数据传送给PC机。
主程序流程图如下:
图8 主程序流程图
图9 读出温度值和温度上下限值流程图
2)温度控制子程序(见图10):
3)(4)温度数据计算处理子程序(见图11):
图10 温度控制子程序流程图
图11 温度数据计算处理子程序流程图
其余程序略。
该系统能够轻松地实现多点温度检测控制,PC机可以形象直观地进行集中监控和管理;单片机在现场实时、可靠地进行自动控制。操作方便,有效地节省了人力和物力。该系统具有通用性,可用于多种场合,具有很好的实用价值。
[1]彭为,黄科.雷道仲单片机典型系统设计实例精讲[M].北京:电子工业出版社,2007.
[2]王为青,邱文勋.51单片机开发案例精选[M].北京:人民邮电出版社,2007.
[3]李江全,张丽,岑红蕾.VisualBasic串口通信与测控应用技术实战祥解[M].北京:人民邮电出版社,2007.
[4]余永权.ATMEL89系列单片机应用技术[M].北京:北京航空航天大学出版社,2002.
[5]胡汉才.单片机原理及系统设计[M].北京:清华大学出版社,2002.
[6]周云波.由DS18B20单线数字温度计构成的单线多点温度测量系统[J].电子技术应用,1996,(2):15-20.
[7]周月霞,孙传友.DS18B20硬件连接及软件编程[J].传感器世界,2001,(12).
(责任编辑:袁清萍)
book=1,ebook=1
TP272
A
1671-752X(2012)02-0061-04
2002-01-24
伍先春(1969-),男,安徽芜湖人,合肥工业大学机械与汽车学院教师,芜湖市铁山宾馆工程师。