1 系统简述
电热恒温培养箱可供科研机构及医院作细菌培养之用,也可用于育种、发酵及其他恒温实验。老式培养箱采用模拟电路,温度漂移及元器件的参数误差对温度的设定及控制精度影响较大,并且不能显示当前温度。本文详细地介绍了一种以单片机AT89C2051和数字温度传感器AD590为核心的电热恒温培养箱的设计方案,能实现精确控温,并能显示当前温度。其各项功能的实现由单片机控制系统来完成。该电热恒温培养箱硬、软件设计合理,运行安全可靠,而且耗电省、性价比高。其加热功率为200~700W,容积为350×350×400(mm3),电源为交流220V,调温范围+3℃~+60℃,升温速度0.3℃/min~0.9℃/min,可以根据实际需要进行调节,温度控制精度为±0.1℃。
本控制系统的主要性能指标:
控温范围:室温~99.9℃;控制精度:<±0.1℃;控制方式:数字式PID控制。
2 工作原理及硬件设计
2.1 工作原理
本文设计的电热恒温培养箱的硬件原理框图如图1所示。该系统通过自动/手动按键完成整个系统的恒温控制功能。在自动状态时,温度传感器AD590把检测到的温度信号放大经A/D转换后,送入AT89C2051,与温度设定值比较,经过PID控制后,输出控制信号控制电热丝的通断,以达到控温的目的。AT89C2051的端口输出高电平时,使双向可控硅导通,电热丝通电,通电的时间脉冲宽度T1;输出低电平时,双向可控硅截止,电热丝断电。脉冲宽度T1与周期T的比值为ρ,反映了系统的输出控制量。同时,显示器上显示实际温度的变化趋势(H代表高于设定值,E代表等于设定值,L代表低于设定值)以及变化值。
在手动状态时,通过移位递增的方法可以改变温度设定值以及PID参数的调整,以达到最佳的控制状态。
2.2 硬件设计
AT89C2051是美国Atmel公司推出的高效单片机,是一种低功耗、高性能的片内含有2KB快闪可编程/擦除只读存储器的8位CMOS微控制器,并且与80C51引脚和指令系统完全兼容。芯片上的FPEROM允许在线编程或采用通用的非易失存储编程器对程序存储器重复编程。由于将具有多种功能的8位CPU与FPEROM结合在一个芯片上,因而它是一种高效的微控制器,为很多嵌入式控制系统提供了灵活性高且价格低廉的方案。本系统使用一片AT89C2051就代替了原来的8031、EPROM2732和地址锁存器74LS373,因为AT89C2051内部的2KBEPROM和128B的RAM,对智能化温度传感器测试系统已能满足设计要求,而且降低了成本,结构设计也较精巧。
测量环境温度的传感器采用二端式半导体集成温度传感器AD590和低温漂高精度集成运算放大器OP07,精度可达到±0.1℃,满足测量精度的要求。采用自带采保器的12位逐次逼近型快速A/D转换器AD1674,其数据输出是三态控制的,所以数据总线不是通过锁存器而是直接与AT89C2051相连。这样不仅简化了系统结构,而且实现了对温度信号的高精度数据采集。
显示器采用低功耗液晶显示模块LCM045,并且采用宽温型,工作温度范围为-20℃~85℃,这样在高温下也能可靠地工作。其功能有:温度设定时能显示设定值;系统工作时能显示环境温度以及温度变化的趋势。
在控制方面,为了简化输出通道的硬件结构,考虑到加热系统具有较大的热惯性,本系统采用脉冲宽度调制的控制方法。AT89C2051的输出信号经过光电耦合器,直接控制双向可控硅的门极,从而控制电热丝的平均加热功率。同时,可控硅工作在过零触发状态,提高了设备的功率因数,减轻了对电网的干扰。
本系统的设计关键还有抗干扰设计。由于系统电压过高或者其他原因,对输入系统造成模拟信号失真,数字信号出错,使输出信号混乱,甚至导致程序失控(跑飞),因此,抗干扰措施应从硬件和软件两方面设计。
3 系统的应用软件设计
3.1 系统的主程序
当系统复位后首先扫描键盘,判断是否有组态请求的键按下,如果有则进行系统组态,包括实际温度的设定、控制参数的设定等,然后进入主程序;如果没有组态请求则直接进入主程序,主程序包括模数转换、数字滤波、量程变换、采集数据的显示和PID运算程序等部分组成。整个系统采用循环控制。其流程图如图2所示。
由于十进制浮点数运算精度太低,而三字节浮点数运算速度较快,精度优于0.003%,完全满足我们的要求,故使用三字节的二进制浮点数进行运算,用十进制浮点数进行数据的输入和输出。系统组态数据由键盘输入,键控程序按照十进制浮点数的结构来存储,由于键控程序非常复杂,我们采用状态转移法来编制,使得程序结构清楚,调试、修改也非常方便。当系统组态完成后,将组态数据由十进制浮点数转换为二进制浮点数,并保存在FPEROM中备用。
为了削弱干扰的影响,程序采用一阶滞后数字滤波的方法,对读入的信号进行平滑加工。滤波算式为:
式中:为第i和i-1次读入后经滤波的信号值,Xi为第i次未滤波的读入信号。
显示更新程序把滤波后的温度值从单片机的串行口输送到显示接口电路。
3.2 控制算法
在标准的PID算法中,积分项的累积值过大,常常是造成系统超调的原因。为了提高控制质量,我们对PID算法进行改进,采用所谓积分分离的PID位置式算法。其程序流程图见图3所示。
积分分离算法设置一个误差值,当偏差时,即偏差比较小时,采用PID控制,可使稳态误差为零;
KP、KI、KD分别为比例、积分、微分系数,是设定值。PID参数可由飞升曲线法测得,然后在系统运行中调整到最佳值。
参考文献: