基于AVR單片機(jī)atmega32的PID和PWM液體流量控制系統(tǒng)研究
4.2 PID算法
常規(guī)的PID算法的基本原理如下圖4-1所示,模擬PID控制器的控制規(guī)律為
——比例系數(shù); ——積分常數(shù); ——微分常數(shù); ——控制常量。
由于單片機(jī)控制是一種采樣控制,它只能根據(jù)采樣時(shí)刻的偏差值計(jì)算控制量,而不能像模擬控制那樣連續(xù)輸出控制量,進(jìn)行連續(xù)控制。并且單片機(jī)處理數(shù)據(jù)的量有限,綜合考慮該系統(tǒng)采用增量式PID控制,其算法如式4-3:
其中 為本次采樣誤差; 為上次采樣誤差; 為上上次采樣誤差。其控制程序的流程圖如圖4-2所示
用C編程實(shí)現(xiàn)程序如下所示:
void PID()
{float u; //電壓差值
sint z; //本次輸出增量
sint temp1; //臨時(shí)記錄值
float t;
t=itime*T;
Speed_change(); //將流速轉(zhuǎn)化為數(shù)字量
if (Ek==(0-Sheding_liusu)) //當(dāng)Ek大于某一值時(shí)直接加最大
{temp1=0x0000;
SetOutputOCR1A(temp1); }//設(shè)置輸出比較寄存器值
else{
Ek=Sheding_liusu-Celiang_liusu;
u=A*((Ek-Ek_1)+(t/B)*Ek+(C/t)*(Ek-2*Ek_1+Ek_2)); //增量式PID算法
z=u/U1*0x03FF;
temp1=GetOutputOCR1A(); //讀取輸出比較寄存器值
temp1=temp1+z;
SetOutputOCR1A(temp1);
Ek_2=Ek_1;
Ek_1=Ek;}
TCNT1=0x00;}
5. Matlab下的仿真
Matlab是控制系統(tǒng)的一種分析和仿真軟件,利用它可以方便準(zhǔn)確的對控制系統(tǒng)進(jìn)行仿真,為了驗(yàn)證數(shù)字PID算法的可靠性,采用Matlab6.5下的simulink組件對增量數(shù)字PID算法進(jìn)行了仿真,仿真程序如圖5-1所示,仿真結(jié)果如圖5-2所示.。
如圖5-2Kp=0.5,Ki=0.001,Kd=0.001
仿真結(jié)果表明運(yùn)用PID對PWM方波進(jìn)行調(diào)解具有良好的動態(tài)性和穩(wěn)定性,從而證明了該液體流量控制系統(tǒng)得可行性。
6.結(jié)束語
本文介紹了運(yùn)用數(shù)字PID算法結(jié)合AVR單片機(jī)的PWM功能實(shí)現(xiàn)液體流量控制的方案,并運(yùn)用Matlab軟件進(jìn)行了仿真,證明了系統(tǒng)的可行性。數(shù)字PID算法調(diào)整控制參數(shù)較之硬件PID控制器操作簡便,系統(tǒng)設(shè)置靈活。該控制系統(tǒng)可應(yīng)用于工業(yè)、農(nóng)業(yè)等領(lǐng)域的液體流量控制中,也可用于液壓系統(tǒng)的電磁閥控制。
本文作者創(chuàng)新點(diǎn):
傳統(tǒng)的液體流量控制大多采用高速開關(guān)電磁閥,電磁閥的頻繁開關(guān)會產(chǎn)生很大滯后性,不利于控制的系統(tǒng)的實(shí)時(shí)性。該系統(tǒng)利用PWM信號控制比例電磁閥開口的大小,實(shí)現(xiàn)了流量的連續(xù)控制,減少了滯后性同時(shí)采用了增量式數(shù)字PID算法調(diào)節(jié)實(shí)現(xiàn)了閉環(huán)控制,使系統(tǒng)調(diào)節(jié)更準(zhǔn)確,更穩(wěn)定。
參考文獻(xiàn):
[1] 劉金坤,先進(jìn)PID控制Matlab仿真(第2版)電子工業(yè)出版社 2004。
[2] 王曉明,電動機(jī)的單片機(jī)控制 北京:北京航空航天大學(xué)出版社 2002
[3] 王正林等 過程控制與Simulink應(yīng)用 電子工業(yè)出版社 2006。
[4] 聶慧萍 基于ARM 和uCOS—II的固體科氏流量計(jì)測控系統(tǒng) 微計(jì)算機(jī)信息 2005第21卷第7-2期。
pwm相關(guān)文章:pwm原理
評論