基于单片机及PID算法的水温控制系统的设计
【摘要】此水温控制系统以单片机AT89S52为核心控制器,温度由DS18B20数字温度传感器进行采集。为了更精确的测温,本系统采用三点测温,并采用PID算法进行水温控制,使温度能够自行调节。
【关键词】AT89S52单片机;DS18B20;可控硅;PID算法控制;LCD1602
1.引言
温度控制在生产生活中应用都十分广泛,但其控制过程中存在着很大的时滞性和极强的干扰性,因此,如何很好地控制温度是评价一个温度控制系统优劣的关键之处。PID控制是按设定值和被控量偏差的比例、积分和微分进行控制的一种控制方法。PID控制在控制理论中占有举足轻重的地位,由于其结构简单、稳定性好、工作可靠、调整方便,被广泛应用于包括温度控制的各种控制过程中。
本课题是设计一个水温自动控制系统,设定温度是80度,从40度对500mL的水加热,在多种环境下,达到80度的时间不超过5分钟,温度最后稳定在80度左右的调整时间不超过4分钟,超调量不大于5%。
2.总体设计方案
本系统主要由单片机控制模块、温度检测模块、可控硅控制电路模块、加热电路、矩阵键盘、液晶显示模块等部分组成。其整体设计框图如图1所示:
图1 系统框图
图2 控制电路
本系统主要以单片机AT89S52为核心,基于自动控制原理与PID算法,根据不断扫描测量的温度值对电炉进行反馈调节,从而对温度实现精确的调节。
温度传感器DS18B20将测得的温度数据传输给单片机AT89S52,单片机来调整PWM波的占空比,通过驱动电路对可控硅进行控制完成对电炉的通断电控制,从而控制其功率,达到调节水温的目的。
3.各个模块电路设计
(1)主控部分:由于本控制系统并不复杂,故选择Atmel公司的AT89S52单片机作为CPU。
(2)温度采集部分:本系统选择使用数字温度传感器DS18B20检测温度。其温度测量精度较高,能够达到0.0625度以上精度。为了更精确测量,采用多
点测温的方法,本系统中选用三点测温。
(3)键盘设置部分:本系统选择4*4矩阵键盘作为输入部分,用来输入预设温度、开启与关闭加热、调节时间等。
(4)显示模块:本系统用LCD1602显示设定温度、当前温度、时间及加热部分现在处于加热还是停止加热的状态。
(5)控制加热部分:由于本系统要控制电热炉加热,功率较大,因此需要借助功率电路。设计中我们使用光耦+可控硅,简化电路的制作。其控制部分电路图如图2所示。
4.系统程序设计
(1)主程序流程
图3 主程序流程图
(2)PID算法
PID算法原理框图如图4所示:
图4 PID算法原理框图
PID算法的一般表达式为:
温度PID调节器有三个可设定参数,即比例放大系数Kp、积分时间常数Ki、微分时间常数Kd。比例调节的作用是使调节过程趋于稳定,但会产生稳态误差;积分作用可消除被调量的稳态误差,但可能会使系统振荡甚至使系统不稳定;微分作用能有效的减小动态偏差。
P1D算法的离散化表达式为:
其中,上式中k表示第k次采样,r(k)为设定温度,c(k)为实际水温,M(k)为电炉功率控制量,误差为e(k)=r(k)-c(k)。
PID算法的输出形式为一PWM波,通过PID算法调节PWM波形的占空比,使电炉在一周期内开通的时间可调,这样就可以调节电热炉的功率进而控制温度的变化,使水温稳定在设定值,从而使精度提高。
(3)PID参数的整定
对一个控制系统而言,控制质量的好坏取决于参数整定是否合理。PID参数整定主要有两类,理论整定法和工程整定法。理论整定法主要是依据系统的数学
模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。工程整定法主要依靠控制经验,直接在系统运行时进行调整。因此本实验采用经验法即试凑法来确定PID的参数。
试凑时,对参数整定实行先比例、后积分,再微分的整定步骤。
首先确定比例部分。将比例参数由小变大,并观察相应的系统响应,直至得到反应快、超调小的响应曲线。如果系统没有静差或静差已经小到允许范围内,并且对响应曲线已经满意,则只需要比例调节器即可。
如果在比例调节的基础上系统的静差不能满足设计要求,则必须加入积分环节。在整定时先将积分时间设定到一个比较大的值,然后将已经调节好的比例系数略微缩小,然后减小积分时间,使得系统在保持良好动态性能的情况下,静差得到消除。在此过程中,可根据系统的响应曲线的好坏反复改变比例系数和积分时间,以期得到满意的控制过程和整定参数。
如果在上述调整过程中对系统的动态过程反复调整还不能得到满意的结果,则可以加入微分环节。首先把微分时间设置为0,在上述基础上逐渐增加微分时间,同时相应地改变比例系数和积分时间,逐步凑试,直到得到满意的调节效果。
(4)PID算法程序
本系统PID控制的思路:
在第一次PID调节时记下PID调节器的输出值uk0(该值为以后PID调节器输出的最大值),并以该值为参考,以后的输出uk与uk0做比值,假设uk0表示加热a,那么输出uk与uk0比值表示加热a*uk/uk0时间,以此类推,最后算出每次计算应该加热的时间作用于可控硅,控制电炉加热。由于温度变化缓慢,则设置为5s计算PID一次。
另外本系统的PID采用了开关量计算——积分分离相结合的改进PID算法,具体思路是:
1)当温差>=15度时,不用PID直接进行加热。2)当温差在0-15度之间时,采用PID计算。
①当温差>5度时,采用PD控制加快响应速度并减少超调;
②当温差=15)
{outflag=1;OUT=0;Time_on=100; break;} //温差大于15度,不用PID调节
else if(ek5)
a=0;
if(ek<5)
a=1;
ek2=ek1;
ek1=ek;
ek_sum+=ek;
uk=kp*ek+ki*ek_sum+kd*(ek1-ek2); //计算PID输出uk if(start_flag==0)//PID运算标志位 {
uk0=uk; //uk初值,用于参考以后uk加热时间
start_flag=1;
div=100/uk0;
} //开始PID计算
else if(start_flag==1)
{ //加热片加热时间
Time_on=uk*div;
OUT=0;
outflag=1; }
break;}
} else{outflag=0;OUT=1;break;} //不加热 }
}
5.实验数据及结果分析
经过多次测量,确定了测温过程中的几个指标:
从起始温度到设定温度经历的时间:t(min);
使其达到设定温度的调整时间:t*(min);
达到设定温度的超调量:Δ%。
其测量结果如表1所示。
通过上表的数据分析,各项指标均满足要求。
6.结束语
本系统设计采用单片机AT89S52为控制中心,利用DS18B20采集温度,采用PID算法对水温进行控制系统,具有成本低、控制可靠等优点。经过多次测试,验证了该水温控制系统达到了较高的精确度,满足要求。
参考文献
[1]黄勤.单片机原理及应用[M].清华大学出版社.
[2]刘金琨.先进PID控制MATLAB仿真(第3版)[M].电子工业出版社.
[3]明鑫,陈可中,王戎丞,等.基于单片机的水温控制系统[J].现代电子技术,2005(6):1-2.
[4]胡焱,周超,沈家庆,等.基于单片机的水温控制系统设计[J].通信技术,2007(8):31-33.
王飞虎,现就读于郑州大学信息工程学院电子信息工程学院。
因篇幅问题不能全部显示,请点此查看更多更全内容