范 敏,余红英,孙甲凯,何昌东
(中北大学 信息与通信工程学院,山西 太原 030051)
温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。单片机具有处理能力强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。本设计使用单片机作为核心进行控制。单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智能化方面有广泛的用途[1]。
根据应用系统的要求及软硬件功能的划分,初步确定应用系统硬件结构如图1 所示。
图1 系统总体工作原理框图
利用温度传感器AD590 可以直接读取被测温度值,进行转换的特性,模拟温度值经过ADC0809 处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。同时处理后的数据送到LCD 中显示[2]。
1.1.1 微处理器选择和主机系统设计
由于本设计对控制精度要求不高,控制功能一般,故选择常用的MSC-51 系列单片机中的STC89C58 作为微处理器。片外程序存储器选用2732,容量为4 k ×8 位。因采集和处理的数据不多且不需要保留,估计数据存储器使用片内的即能满足要求。其中,硬件元器件STC89C58 有40 条引脚,有两条专门用于电源的引脚,两条外接晶振的引脚,四条控制或与其他电源复用的引脚,32 条I/O 引脚。
1.1.2 输入通道设计
输入通道只有一个,包括温度传感器、放大器和A/D 转换器三部分。本次设计的温度检测范围属于低温,适用于低温的检测元件有热电偶、热敏电阻、集成温度传感器等。
1)这里采用集成温度传感器AD590。这种传感器是一个双端元件,其工作温度范围为-55 ℃~+150 ℃,要求工作电源为直流+4 V~+30 V。它能把温度信号变为与绝对温度成比例的电流信号,比例因子为1 uA/K。其稳定性高,线形度好,测温误差有±1、±0.5、±0.3 几种等级。
AD590 本身产生的电流信号,通过运算放大器TD07 对电流做加法运算。在运放输出端可得到合适的电压信号,作为A/D 转换的输入。电阻RP1、RP2 的选择原则是使运放输出电压为0;当温度为60℃时,调节RP2 使运放输出电压为4.69 V。如果0 ℃不能实现,也可以在另外一个温度点上(如室温)来调整。0 V 和4.69 V 经A/D 转换后的数字量为00H 和F0H(240),这样对应1 ℃的数字量为04H,便于进行温度的标度变换[3]。
AD590 是电流型温度传感器,通过对电流的测量可得到所需要的温度值。根据特性分挡,AD590 的后缀以I,J,K,L,M 表示。AD590L,AD590M 一般用于精密温度测量电路,它采用金属壳3 脚封装,其中1 脚为电源正端V+;2 脚为电流输出端I0;3 脚为管壳,一般不用。
AD590 的工作原理是在被测温度一定时,AD590 相当于一个恒流源,把它和5~30 V 的直流电源相连,并在输出端串接一个1 kΩ 的恒值电阻,那么,此电阻上流过的电流将和被测温度成正比,此时电阻两端将会有1 mV/K 的电压信号。
2)本系统的运算放大器采用TD07。TD07 高精度运算放大器具有极低的输入失调电压,极低的失调电压温漂,非常低的输入噪声电压幅度及长期稳定等特点。可广泛应用于稳定积分、精密绝对值电路、比较器及微弱信号的精确放大,尤其适应于宇航、军工及要求微型化、高可靠的精密仪器仪表中[4]。
3)本系统的AD 转换芯片采用ADC0809。ADC0808 是精度为8 位的CMOS 器件,不仅包括一个8 位的逐次逼近型的ADC 部分,而且还提供一个8 通道的模拟多路开关和通道寻址逻辑,因而有理由把它作为简单的“数据采集系统”。利用它可直接输入8 个单端的模拟信号分时进行A/D 转换[5]。
1.1.3 输出通道设计
输出通道有3 条,分别控制3 台电炉通电和断电。这是3 条具有相同结构的开关量输出通道,拟采用前面介绍的光电耦合双向晶闸管驱动电路。
应用程序结构采用中断方式,由定时器发出定时中断申请。主程序进行系统初始化,包括定时器、I/O 口和中断系统的初始化,等待定时中断。在中断服务程序中,先判断是否到30 s。若不到30 s,则返回;若到30 s,进行以下操作:拨盘设定值检测、温度检测、标度变换、温度显示和温度控制,并根据温度检测值决定是否报警。
在应用程序总体结构中,将以下6 个功能程序作为模块程序:温度设定输入、温度检测、温度值标度变换、温度显示、温度控制和报警程序模块。
下面说明温度检测和温度控制这两个模块的程序设计。
1)温度检测程序模块。温度检测程序的功能是连续进行4 次A/D 转换,求取转换结果的平均值,存入内部50 H单元,A/D 转换采用查询方式。
2)温度控制程序模块。温度控制程序的功能是将温度实测值(存于50H)与设定值(存于51H)作比较,如测值高于设定值1 ℃(注意,此值小于要求误差2 ℃,对应的数字量为04H),则关闭1 台电炉;如实测值低于设定值,则接通一台电炉;否则不与调节。3 台电炉接通的顺序是3#、2#、1#,这样可以保持电炉的通断具有相对稳定性。
3)主程序和中断服务程序设计。在定时中断服务程序中,各功能程序都已模块化,可直接调用。
先说明30 s 定时的实现方法。当振荡频率为6 MHz时,STC89C58 内部定时器的最大定时值为131 ms。要实现30 s 定时,需要另外设置一软件计数器。现使定时器T0 工作于方式1,定时时间为130 ms,则其时间常数为:
软件计数器的初值=30、0.13≈E7H
主程序清单:
[1]冯文旭,刘传玺.单片机应用技术[M].北京:中国矿业大学出版社,2003.
[2]钟睿,张松,余波,等.MCS-51 单片机原理及应用开发技术[M].北京:中国铁道出版社,2006.
[3]赵丽娟,邵欣,房世平.基于单片机的温度监控系统的设计与实现[J].机械制造,2006:74-75.
[4]张开生,郭国法.MCS-51 单片机温度控制系统的设计[J].微计算机信息,2005(7) :72-73,+65.
[5]郭天祥.51 单片机C 语言教程[M].北京:电子工业出版社,2008.