基于单片机的电加热恒温箱控制器设计
4数字PID及其算法 对电加热恒温箱的温度进行控制,把给定值与温度采集的值进行比较,根据偏差进行控制,控制算法采用PID调节算法。下面介绍两种PID控制方式,本系统采用增量式控制。
PID调节是连续系统中技术最成熟、应用最为广泛的一种调节方式。PID调节的实质就是根据输入的偏差值,按比例、积分、微分的函数关系进行运算,其运算结果用以输出控制。在实际应用中,根据被控对象的特性和控制要求,可灵活地改变PID的结构,取其中的一部分环节构成控制规律,如比例(P)调节、比例积分(PI)调节、比例积分微分(PID)调节等。 4.1 PID算法的数字化
在模拟系统中,PID算法的表达式为
P(t)?Kpt)??e(?T1??1e(t)?dDtde(t)?T? (4-1) dt?式中 P(t)—调节器的输出信号;
e(t)—调节器的偏差信号,它等于测量值与给定值之差; Kp—调节器的比例系数; —调节器的微分时间。
T1—调节器的积分时间; TD由于计算机控制是一种采样控制,它只能根据采样时刻的偏差来计算控制量。因此,在计算机控制系统中,必须首先对式(4-1)进行离散化处理,用数字形式的差分方程式代替连续系统的微分方程,此时积分项可用求和及增量式表示:
?n0nne(t)dt??E(j)?t?T?E(j) (4-2)
j?0j?0de(t)dt?E(k)?E(k?1)?t?E(k)?E(k?1)T (4-3)
将式(4-2)和式(4-3)代入(4-1),则可得到离散的PID表达式:
??TkTDP(k)?Kp?E(k)?E(j)?E(k)?E(k?1)??? (4-4) ?T1j?0T??式中?t=T—采样周期,必须使T足够小,才能保证系统有一定的精度; E(k)—第k次采样时的偏差值; E(k-1)—第(k-1)次采样时的偏差值;
k—采样序号,k=0,1,2,…; P(k)—第k次采样时调节器的输出。
22
由式(4-4)可以看出,要想计算P(k),不仅需要本次与上次的偏差信号E(k)K和E(k-1),而且还要在积分项中把历次的偏差信号E(j)进行相加,即 ?E(j)
j?0这样,不仅计算烦琐,而且为保存E(j)还要占用很多的内存。因此,用式(4-4)直接进行控制很不方便,可以做如下改动。
根据递推原理,可写出(k-1)次的PID输出表达式:
? P(k)?Kp?Ek(??1?)TT1k?1?j?0TDEj(?)?Ek?(T? (4-5) ?E1)k?(?? 2 )?用式(4-4)减去式(4-5),可得:
P(k)?P(k?1)?Kp?E(k)?E(k?1)??K1E(k)?KD?E(k)?2E(k?1)?E(k?2)? (4-6)
式中 K1? KDKpTT1 — 积分系数; — 微分系数。
?KpTDT由式(4-6)可知,要计算第k次输出值P(k),只需知道P(k?1),E(k),E(k?1),E(k?2)即可,比用式(4-4)计算要简单得多。
在很多控制系统中,由于执行机构是采用电阻丝进行控制的,所以,只要给一个增量信号即可。因此,把式(4-4)和式(4-5)相减,得到:
?P(k)?P(k)?P(k?1)
E(?k)2E(?k1?)E??( k2)) (4-7
?Kp?E(k)?E(k?1?)?1KE(k)?D?K式中Kp,KD同式(4-6)。
式(4-7)表示第k次输出的增量?P(k),它等于第k次与第k?1次调节器的输出和差值,即在第k?1次的基础上增加(或减少)的量,所以式(4-7)叫做增量型
PID控制算式。
此外,除了上述两种控制算法外,还有一种称为速度控制的PID算法,即
V(k)??P(k)T
1?)TT1E(?k)TDT ?Kp???E(k)?E(kT??E?(k)2?E(k??) 1)?E?k(2)?(4-8
?4.2 PID算法的程序设计
用C语言进行PID程序设计有两种运算方法,一种用定点运算,一种为浮点运算。定点运算速度比较快,但精度低一点;浮点运算精度高,但运算速度比较慢。一般情况下,当速度变化比较慢时,可采用浮点运算。如果系统要求速度比较快,则需采用定点运算的方法。
4.2.1 位置型PID算法程序的设计
由式(4-7)可写出第k次采样时PID的输出表达式为
23
基于单片机的电加热恒温箱控制器设计
k P(k)?KpE(k)?1K?j?0E(?)jD?KE(?)k ) (4-9) E(?? k 1 P(k)?Pp(k)?P1(k)?PD(k) (4-10)
式(4-10)即为离散化的位置型PID编程公式,其流程如图4-1。
开始计算E(k)?R(k)?M(k)计算Pp(k)?KPE(k)计算P1(k)?K1E(k)?P(k?1)1计算PD(k)?KD?E(k?E(k?1)?计算P(k)=Pp(k)?P(k)?PD(k)1将P(k)转换成双字节整数 R2R3E(k?1)?E(k)结束图4-1 位置型PID运算程序流程图
4.2.2 增量型PID算法的程序设计
由式(4-7)可知,增量型PID算式为
?P(k)?Kp?E(k)?E(k?1)??K1E(k)?KD?E(k)?2E(k?1)?E(k?2)?
(?)Ek(??1设 ?Pp(k)?Kp?Ek ) ?P1(k)?K1E(k)
(?)E2k?( ?PD(k)?KD?Ek?1E)k?(?
2)所以,有 ?P(k)??Pp(k)??P1(k)??PD(k) (4-11)
式(4-11)为离散化的增量型PID编程表达式。增量型PID运算程序流程如图4-2。
24
开始计算e1?给定值-采样值计算ei?ei?1、ei?1?ei?2计算?ei?ei?1???ei?1?ei?2?计算Kp?ei?ei?1?计算K1ei计算KD???ei?ei?1???ei?1ei?2???计算Kp?ei?ei?1??K1ei计算?ui?Kp?ei?ei?1??K1ei?KD???ei?ei?1???ei?1?ei?2???计算输出值数据迭代ui结束 图4-2 增量型PID运算程序流程图
25
基于单片机的电加热恒温箱控制器设计
5 系统的软件设计 5.1 系统软件功能分析
对于单片机系统的设计,设计好了硬件,只是完成了一半工作,没有软件,硬件是没有意义的。因此必须设计出相关的程序,通过应用程序把器件与器件之间、器件与人之间建立起沟通和相关联系,才能发挥系统应有的作用。
恒温箱在上电复位后,处于停止加热状态,此时通过按键来设定预置温度和定时时间。初始温度和定时时间设定好后,开始加热,并实时的检测恒温箱的温度,通过PID控制算法计算出加热时间,从而控制晶闸管的导通和关断时间,以达到控制温度的目的。当恒温箱的温度达到初始温度后,在单片机的控制下处于恒温,知道定时时间到,蜂鸣器提示,停止加热。
根据上面对系统的分析,可实现下面几个功能: A. 系统初始化:对系统进行初始化;
B. 设定温度控制值和定时时间,控制系统转入相应的加热或恒温阶段; C. 检测恒温箱温度经过A/D转换,输入单片机进行处理; D. 进行PID运算,按照运算结果,驱动加热器加热,以调节温度; E. 实现定时功能,定时时间到,蜂鸣器蜂鸣提示。 5.2 主程序的设计
主程序主要进行初始化,分配内存单元及设置定时器参数,以便为系统正常工作创造条件。由于本系统采样数据为12位(双字节),加上一些给定值,如温度上限报警值,所以内存单元比较多,故本系统将同时使用内部RAM及外部RAM。主程序流程如图5-1所示,本系统的采样周期为5s,采用两个定时器串联的方法,即设T0为定时方式,设T1为计数方式。设T0为定时方式1,定时的时间间隔为100ms,时钟频率选6MHz。代入公式,
T??216?X??12?1/fosc可得出T0应装入的
时间常数X=3CB0H,可分别装TH0和TL0。设T1为计数方式2,计数值为50。
26