《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 一种开关量控制的水浴恒温控制器设计
一种开关量控制的水浴恒温控制器设计
来源:微型机与应用2012年第13期
邵 伟,董 明,陆蔺辉
(中国工程物理研究院 化工材料研究所,四川 绵阳 621000)
摘要: 针对传统的水浴恒温加热过程温度过冲大,难以观察历史曲线的不足,设计了一种开关量控制的恒温加热控制器。该控制器具有温度控制精确,过冲小,设定参数掉电保持,温度变化趋势一目了然的特点。详细介绍了其硬件与软件设计过程。
Abstract:
Key words :

摘  要: 针对传统的水浴恒温加热过程温度过冲大,难以观察历史曲线的不足,设计了一种开关量控制的恒温加热控制器。该控制器具有温度控制精确,过冲小,设定参数掉电保持,温度变化趋势一目了然的特点。详细介绍了其硬件与软件设计过程。
关键词: 水浴恒温;掉电数据保持;TFT液晶曲线显示

 电加热水浴恒温控制具有升温单向性、大惯性、大滞后、时变性、依靠环境自然冷却降温的特点,难以用数学方法建立精确的模型[1]。传统的控制方法是温度低于设定值时,持续加热;高于设定值时,停止加热。这种方法容易使加热过程温度有很大的过冲,在其恒温过程中,温度波动也较大。
本设计采用的温控方法为:温度较低时,持续加热;温度接近时,断续加热;温度高于设定值时,停止加热。本控制器设定参数具有掉电保持功能,下次开机不用重新设定,方便连续作业;除了数字显示当前温度外,更能显示温度曲线,使其变化趋势一目了然,具有传统数码管显示无法比拟的优点。温度传感器采用数字温度传感器,硬件设计简单,大大减小了由信号转换引起的误差。
 本控制器可当作“水浴锅”、“水温箱”、“煮沸消毒箱”的控制器使用,其温控效果可用于蒸馏、干燥、浓缩及恒温加热、化学药品、生物发酵制品、检查血清和生化实验、恒温培养等。
1 控制器硬件组成
 如图1所示,控制器由实时时钟、数字温度传感器、单片机、TFT液晶屏、输出继电器、按键等部分组成。
本控制器采用宏晶公司STC89C52RC型单片机作为核心控制器,其Flash程序存储器容量为8 KB,数据存储器RAM为512 B,内部具有2 KB容量的E2PROM,可用作参数设置时掉电保存参数用,这样就不需要设计外部存储器,精减了硬件电路设计。该芯片加密性强,抗干扰能力强,功耗低,满足本控制器设计要求。内部E2PROM读写的3个基本命令为字节读、字节编程、扇区擦除。同一个地址的数据可以反复读出,但要写入数据,必须先将其擦除,而数据擦除是按扇区(每个扇区512 B)进行的[2]。

 数据显示部分采用的是1.8英寸TFT液晶屏,型号为GYTF018LB35B0M,由于没有自带汉字字库,所以需要自行取汉字字模,存入程序存储空间,通过函数调用实现字符显示。使用时需自行设定字符显示的大小,针对不同的显示要求,本系统使用了32×32、16×16、8×8三种大小字符显示效果。
 实时时钟芯片用于显示当前系统运行时间和控制温度均匀采样。本控制器采用DS1302作为时钟控制芯片。DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,采用SPI三线接口与CPU进行同步通信,可采用突发方式一次传送多个字节的数据。实时时钟提供秒、分、时、日、星期、月和年记录,且具有闰年补偿功能,工作电压宽达2.5 V~5.5 V,采用双电源供电(主电源与备用电源)。DS1302能实现数据与出现该数据的时间同时记录,因此广泛用于测量系统中。控制器的时钟电路如图2所示。

2.1 初始化模块
 初始化模块由以下函数组成:(1)读取上一次存储在E2PROM中的两个设定值,即设定温度值,时间间隔值;(2)配置数字温度传感器18B20;(3)配置LCD,清屏LCD为黑色,并显示一些在整个控制过程中不变的字符和曲线,如“g”、“℃”等。本模块在程序开始运行后,只执行一次。

2.4 获取当前时钟模块

 


 通过函数Read_RTC(unsigned char *pdate_r),将DS1302当前时钟数据读入到date_r[7]数组中,调用方式为:Read_RTC(date_r)。其中date_r[7]数组中每位依次表示为秒、分、时、日、月、年、周,且均为BCD码。所以date_r[0]代表了当前的秒数,date_r[3]位表示了当前代表的天数。获取了当前的时钟信息后,通过函数date2string(unsigned char *pdate_dispstr)转换为相应的字符串,然后调用字符串显示函数在液晶屏上显示。本系统为了方便记录当前系统已运行的时间,需设置相应按键,用于时钟清零[4]。
2.5 温度曲线显示模块
 温度曲线显示模块是本控制器编程的难点之一。本文选择的液晶屏点数为128×160,真正显示曲线部分如图6所示。由图6可知,可显示的横坐标点共121个点。若在while循环中,每次循环都在液晶屏上显示一个点,则121个横坐标表示的点只能覆盖很短的时间。若能实现每隔1 s读取一次温度值,则整个屏幕可以覆盖2 min内的数据,也就是说足可以显示2 min内的温度变化的趋势。本文实现的方法如下:
 cur_sec=date_r[0]; //读出当前的秒数,为BCD码
if (cur_sec!=last_sec)
//当前的秒数与上一次不相等,则过了1 s了
       {
       ……//此部分代码1 s执行一次
       last_sec=cur_sec;
       count++;//用于控制断续加热
       }

 画点函数与画直线函数原型为:
 void  LCD_draw_point(uchar x,uchar y,uint color);
 //画点函数
 void  LCD_draw_line(uchar xStart,uchar yStart,uchar xEnd,uchar yEnd, uint color)//画直线函数
在曲线显示时,希望温度曲线始终在屏幕的中间部分显示,以全面反映温度的上下波动。而且画直线时,需要知道上一个温度点的纵坐标和当前温度点的纵坐标。本系统中,曲线显示部分中间那条标尺纵坐标为115,于是计算当前温度点的纵坐标和上一次温度点的纵坐标方法为:
 a=115+(TargetTemSet-Temperature);
    //温度变化后的Y坐标
 b=115+(TargetTemSet-Temperature_last);
    //温度变化前的Y坐标
 其中,TargetTemSet为当前设定的温度值,Temperature为当前检测到的温度值,Temperature_last为上一秒检测到的温度值。假设设定温度TargetTemSet=200(即20.0℃),上一次温度Temperature_last=200,当前温度为Temperature=210,则变化后的温度点纵坐标a=105,温度变化前的温度点纵坐标b=115。由此可以画一条竖线,就可以达到设计要求。在使用画直线函数前,还需要将a、b限幅,即{a,b}?奂[75,155]。
在本设计中,共画出了9条标尺,每个标尺间距为10个像素点,代表温度相差1℃。
2.6 温度调节模块
 本控制器要求实现温度值与设定值相差大于3℃时,连续加热;小于3℃时,断续加热;大于设定值时,断开继电器;断续加热时,继电器交替通断。关键代码如下:
if(Temperature<(TargetTemSet-30))
//温度较低,直接加热
{
 if (Temperature!=0)   RELAY=RelayOn;
}
 else if(Temperature<TargetTemSet)
//温度接近设定温度,断续加热
{
  if (count>= TargetTimeInterval)
//读出秒数,需加热时,加热几秒,停几秒
 { count=0;   RELAY=!RELAY;}
 }
 else   RELAY=RelayOff;//大于设定值, 断电
3 恒温实验效果
 针对本设计进行相关的实验,实验原理图如图10所示。实验中,设定了3个温度档次,即30 ℃、35 ℃、40 ℃分时进行。

 当设定为30℃时,通过实验发现加热过程温度过冲为0.3℃,恒温过程波动为±0.1℃,控制过程运行良好。
当温度设定为35℃时,发现过冲比较大,说明传感器与加热体相隔距离太远,不合理,需要重新调整。但恒温过程比较满意。
 于是调整传感器与加热体的距离(减小),使之更加合理。设定为40℃时,水槽水温上升曲线可知基本上无过冲,恒温效果比较满意。在恒温过程中将时间清零了一次,所以运行时间比加温时间小。
实验中发现:温度是否恒定、过冲是否小与许多因素有关,如:加热体和传感器之间的距离、水槽是否密封、水槽材质散热性等。当温度设定较高时,水槽周边散热较大,同一水槽中,不同位置水的温度不同,水槽中的水温呈一定的梯度分布。要提高恒温效果,除了从控制器本身入手外,还可以进行如下方面的考虑:
 (1)保持加热体与传感器之间处于合适的距离。
 (2)有条件的话,在加热体附近增加一个小的螺旋桨,使水在水槽内温度更加均匀。
 (3)保持水槽密封,根据水槽装水的多少,选择合适功率的加热体。
 (4)增大加热体加热面积,使水槽整体升温,减小局部温度过高的可能。
 本文设计了一种水浴恒温控制器,介绍了其硬件与软件设计过程,并进行了相关实验,结果表明其升温与恒温效果均比较满意。本设计的一大亮点在于通过TFT液晶屏实时显示了当前温度值、设定值、当前运时间等,还能通过彩色曲线显示2 min内温度变化趋势。文中提出的实时时钟编程思想,可在高速微处理器上实现长时间定时,对其他大惯性控制系统的设计具有一定的借鉴意义。
参考文献
[1] 贺艳秋,黄大贵.电阻炉FuZZy_PID温度控制系统[J]. 橡胶工业,2006(53):109-109.
[2] 宏晶公司.单片机器件手则:STC89C51RC-RD+GUIDE-CHINESE.2006:42-43.
[3] 杜克铭,姚燕,李景涌.基于STC89C52的多路温度传感器标定系统[J].电子技术应用,2009(4):152-155.
[4] 王节旺.一种基于STC89C52RC单片机的计时系统的设计方案[J].微型机与应用,2011(6):28-30.

此内容为AET网站原创,未经授权禁止转载。