温度是工业控制中主要的被控参数之一.对典型的温度控制系统进行研究具有很广泛的意义。根据不同场所、不同温度范围、精度等要求.所采用的测温元件、测温方法以及对温度的控制方法也不同.本文以实验室电烤箱为被控对象,以AT89S52单片机为控制核心,温度传感单元采用DS18B20.采用PID算法,实现智能的温度控制系统。
1 系统组成
整个系统主控部分采用AT89S52构成单片机应用系统:温度检测部分采用DS18B20单总线数字温度传感器对温度进行检测:控制部分由固态继电器控制加热管的通断。工作时.由键盘输入设定温度值,系统采用PID控制算法进行运箅,通过单片机AT89S52的开关量控制固态继电器(SSR)的通断,以调节烤箱内温度至设定值,稳态误差在+(-)1℃。液晶实时显示烤箱内温度和设定温度值。
单片机温度控制系统原理图如图1所示。
图1 单片机温度控制系统原理图
2 温度检测电路
温度检测部分采用集成温度传感器DS18B20,它采用独特的单口接线方式传输,在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,不需要外围器件,全部传感元件及转换电路集成在形如一只i极管的集成电路内,外加电源范围是3.0~5.5V,测温范围从-55%到+125℃,在-1O℃~+85℃同有分辨率为0.5℃,测量结果以9位到12位数字量方式直接输出数字温度信号,以”一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
DS18B20测温原理如图2所示。图中低温度系数品振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55%所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时。温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图2 DS18B20测温原理图
3 系统软件设计
3.1温度检测子程序
DS18B20使用的关键在于清楚总线的读写时序。
由于DS18B20外接电路极为简单,所以电路连接没有问题;但在软件编程上,就要求严格按照它的时序进行读写操作。具体操作如下:
对DS18B20操作时,首先要将它复位。将DQ线拉低480至960μs,再将数据线拉高15至60μs,然后,DS18B20发出60至此240μs的低电平作为应答信号,这时主机才能对它进行其它操作。
写操作:将数据线从岛电平拉至低电平,产生写起始信号。从DQ线的下降滑起计时,在15μs到60μs这段时问内对数据线进行检测,如数据线为高电平则写1;若为低电平,则写0,完成了一个写周期。在开始另一个写周期前,必须有1μs以上的高电平恢复期。每个写周期必须要有60μs以上的持续期。
读操作:主机将数据线从高电平拉至低电平1μs以上,再使数据线升为高电平,从而产生读起始信号。从主机将数据线从高电平拉至低电平起15μs至60μs,主机读取数据。每个读周期最短的持续期为60μs。周期乏问必须有1μs以上的高电平恢复期。
系统软件采用keil c51编制。
复位子程序:
sbit DQ=P3^3:定义数据线口地址
unsigned char reset()
{
unsigned char presence;
DQ=O; //拉低DQ总线开始复位
delay(30); //保持低电平480us
DQ=1; //释放总线
delay(3);//等待芯片应答信号75us
presence=DQ; //获取应答信号
delay(28); //延时以完成整个时序
return(presence);//返回应答信号,有芯片应答返同0,无芯片则返回1
}
读一位数据子程序
unsigned char read_bit()
{
unsigned char i,value_bit;
DQ=0; //拉低DQ,开始读时序
DQ=1; //释放总线
for(i=0;i<2;i++){}//8us delay
value_bit=DQ;
return(value_bit);
}
读一字节数据子程序:
unsigned char read__byte()
{
unsigned char i,value=0;
for(i=0;i<8;i++)
{
if(read_bit()) //读一字节数据,一个时序中读一次,并作移位处理
value!=0x01<<i;
delay(4); //延时80us以完成此次都时序,之后再读下一数据
}
return(value);
}
延时子程序void delay(unsigned char time).延时时间为25usx time
3.2 控制算法子程序
目前数字PID控制器被广泛应用十温度控制系统之中,本系统即以PID控制算法为核心,通过实验测试的方法获得控制参数范围.然后应用试凑法进行参数整定,最终达到较为快速,精确的控制。通过PID算法得到SSR固态继电器“通”在总通断时间的百分比。
PID算法的增量表达式为:
其中,k表示第k次采样,s(k)为设定温度,y(k)为实际温度,u(k)为电炉功率控制,KP为比例系数,e(t)为误差,e(k)=y(k)一s(k)。T1为积分时间常数,TD为微分时问常数:T为采样周期。
PID控制器的这些参数,分别对系统性能产生不同的影响。Kp加大,响应速度加快,可以减小稳态误差.积分时间常数T1越小。积分作用越强,积分控制能消除系统的稳态误差,提高控制系统的控制精度。微分时问常数Tn越大,微分作用越强,微分控制可以改善动态特性,如超调量减小,调节时问缩短。采样周期T直接影响到系统的控制性能。采样周期太小偏差信号也会过小,计算机将会失去调节的作用,采样周期过长,又会引起过大的误差,因此采样周期必须综合考虑。
扩充响应曲线法是当系统在给定值处于平衡后,加一阶跃输入(如图3a所示)。用仪表记录下被调参数在阶跃作用下的变化过程曲线,如图3b所示。在曲线最大斜率k处做切线,求得滞后时间t,对象时问常数Tm,以及它们的比值Tm/t。根据所求得的Tm、t和Tm/t的值,查表1即可求得控制器的T、Kp、Ti和Td。由于温度控制过程千差万别,经验数据不一定就合适,最后可用试凑法逐步调试进行确定。
图3 扩充响应曲线法
表1 扩充响应曲线法整定参数表
为了得到最佳的控制效果,我们采用了扩允响应曲线法和现场经验试凑法来整定各项参数。
所谓试凑法是人们在长期工作程实践中,从各种控制规律对系统控制质量的影响的定性分析总结出来的一种行之有效、并得到广泛应用的工程整定方法。在实际现场整定过程中,我们首先通过扩充响应曲线法整定参数,设定初始的PID参数进行控制,为了达到理想的控制目标,对PID参数进行了不断的调整,原则是要保持PID参数按先比例,后积分,最后微分的顺序进行反复试凑至获得满意的控制效果和PID控制参数。
4 结束语
该系统利用DS18B20进行测温,基于单片机AT89S52进行温度控制,具有硬件电路简单,控温精度高(误差在±1℃范围内)、功能强、体积小、价格低.简单灵活等优点,可以应用于控制温度在-55℃到+125℃之间的各种场合,可以实现温度的实时采集、显示与控制功能,是一种较理想的智能化控制系统。
本文作者创新点:文中采用数字温度计芯片DS18B20构成测温单元,采用PID控制算法调节烤箱内温度。