摘 要: 该温度控制系统以STC89C52单片机为核心,采用DS18B20数字温度传感器采集温度,并以PWM形式输出,确保温度输出的稳定,再结合PID闭环控制,使系统能够更稳定地运行。先利用Proteus软件结合Keil软件仿真,再用STC89C52单片机进行实测,从而进一步验证了设计的可靠性和准确性,所控制温度的精度能达到±1 ℃范围之内。该系统具有灵活性强、电路简单、可靠性高、易于操作等优点,能够实现对温度的稳定控制。
关键词: STC89C52;DS18B20;PID闭环控制;Proteus
温度的变化影响各种系统的自动运作,例如冶金、机械、食品、化工等工业中,广泛使用各种加热炉、散热处理、反应炉等,要求对工件的温度进行控制。对于不同的控制系统,其适宜的温度总是在一个范围,超过这个范围,系统或许会停止运行或遭受破坏,因此必须能实时获取温度的变化,对于超过适宜范围的温度能够报警。同时也希望在适宜温度范围内可以由检测人员根据实际情况加以改变。温度控制在工业及日常生活中应用广泛,分类较多,不同温度控制系统的控制方法也不尽相同,其中以PID控制法最为常见。
1 温度控制系统的组成及硬件设计
本设计采用STC89C52单片机为处理器,利用温度传感器DS18B20采集温度,结合Keil软件编程[1],实现用PID算法来控制PWM波形的产生,进而控制加热电阻以实现温度控制。该设计利用Proteus仿真为基础,再结合单片机最小系统调试验证结果。系统的总体结构框架图如图1所示。
本温度闭环控制系统由温度传感器、控制器、PWM控制模块、加热电路、键盘和显示模块等部分组成。单片机选用宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机STC89C52RC[2]。温度经过DS18B20传感器模块传给控制器,控制器根据检测值与设定值的偏差,计算PID控制值,其结果通过PWM模块控制加热电路功率,实现对温度的控制。系统硬件电路原理图如图2所示。
LCD1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的两条线是背光电源线。该模块用D0~D7作为8 bit双向数据线,4 bit数据分两次传送,可以节省CPU的I/O口资源[4]。
VSS、VDD分别接地和5 V电源。VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。E(或EN)端为使能(Enable)端,下降沿使能。DB0~DB7为双向数据总线。
2 温度控制系统软件设计
系统程序主要包括主程序、初始化子程序、PID计算子程序、温度比较处理子程序、延时子程序、T0中断服务子程序和DS18B20驱动程序等。主程序流程图如图6所示。
2.1 加热功率PWM控制
本设计采用的STC89C52单片机虽然不具有4路16位的可编程计数器阵列(SPA)或8位的可调制脉冲输出(PWM)模块,但在本设计中,利用软件编程,通过PID控制,调整PWM占空比,通过P1.5口输出PWM信号,去控制外围加热电路。PWM的输出频率决定于PCA定时器的时钟源。PCA定时器的时钟输入源有4种可供选择,分别是Fosc/12、Fosc/2、定时器0的溢出频率以及P3.4/ECT的输入频率。由于PWM是8位的,因此PWM的输出频率=PCA时钟输入频率/256。本设计采用的是定时器0的溢出频率作为PCA的时钟输入,这样可以通过设置定时器0的计数值改变PWM的频率。本设计先进行温度比较,再采用定时器0中断来实现PWM输出,从而实现温度的实时控制。
2.2 PID算法设计
PID调节器是一种线性调节器,它将给定值R(t)与实际输出值C(t)的偏差的比例(P)、积分(I)、微分(D)通过定值线性组合构成控制量,对控制对象进行控制。其模拟PID控制系统原理框图如图7所示。
void PIDInit(struct PID*pp)
{
……
{
unsigned int dError,Error;
Error=pp->SetPoint-NextPoint;//偏差
pp->SumError+=Error;//积分
dError=pp->LastError-pp->PrevError;//当前微分
pp->PrevError=pp->LastError;
pp->LastError=Error;
return(pp->Proportion*Error//比例
+pp->Integral*pp->SumError//积分项
+pp->Derivative*dError);//微分项
}
3 实验结果
现利用Keil编辑程序结合Proteus所做的原理图进行仿真处理,仿真结果可以达到设计要求。本设计制作了硬件设计实物,通过PID控制,当加热电阻靠近温度传感器时,测量温度明显上升,并达到31℃(设置温度)。此后加热变缓,温度维持在31℃,系统温度误差精度可达到±1℃之内,并且用蜂鸣器发出鸣响。当加热电阻离开温度传感器,测量温度会降低,当实测温度低于设置温度,蜂鸣器不响。再次设置温度,当加热电阻再次靠近温度传感器时,测量温度又明显上升到设置温度。
为了更好地观察实验结果,证明仿真结果的可靠性,体现本设计对温度控制的稳定性和精确性,经过多次设置不同的温度,实验记录数据如表1所示。从记录数据分析可知,本设计达到了预期的设计目标,控制温度误差范围在±1℃之内。
本系统以单片机为控制核心,采用PID算法进行温度闭环控制,具有控制精度高,能够克服容量滞后的特点,特别适用于负荷变化大、容量滞后较大、控制品质要求高的控制系统[6-7]。以DS18B20温度传感器设计的温度闭环控制系统线路简单、硬件少、成本低廉、软件设计简单,尤其是其具有完善的单总线通信协议,无需复杂的布线,只需3根连线就能很容易地组成多点测温系统,因此在工农业生产和科学研究中有着广阔的应用前景[8]。
参考文献
[1] 胡寿松.自动控制原理[M].北京:科学出版社,2002.
[2] 马淑华,王凤文,张美金,等.单片机原理与接口技术[M].北京:北京邮电大学出版社,2005.
[3] 黄建伟.基于DS18B20无线温度测量系统[J].煤矿机械,2008,29(7):118-119.
[4] 潘新民,王燕芳.微型计算机控制技术实用教程[M].北京:电子工业出版社,2006.
[5] 谭浩强.C程序设计[M].北京:清华大学出版社,1991.
[6] 吕俊亚.一种基于单片机的温度控制系统设计与实现[J].计算机仿真,2012,29(7):230-233.
[7] 叶丹,齐国生,洪强宁,等.基于单片机的自适应温度控制系统[J].传感器技术,2002,21(3):27-30.
[8] 赵娜,赵刚,于珍珠,等.基于51单片机温度测量系统[J].微计算机信息,2007,(12):146-148.