




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、我的題目是:基于PID算法的溫度控制系統(tǒng)89C51單片機,通過鍵盤輸入預設值,與DS18B20測得的實際值做比較,然后驅動制冷或加熱電路。用keil C語言來實現(xiàn)PID的控制。最佳答案/PID 算法溫控 C 語言 2008-08-17 18:58#in clude<reg51.h>#in clude< intrin s.h>#in clude<math.h>#in clude<stri ng.h>struct PID un sig ned int SetPo int; / un sig ned int Proporti on; / un sig
2、ned int In tegral; / un sig ned int Derivative; /設定目標 Desired Value比例常數(shù) Proportio nal Co nst 積分常數(shù) In tegral Co nst微分常數(shù) Derivative Co nstun sig ned int LastError; / Error-1un sig ned int PrevError; / Error-2un sig ned int SumError; / Sums of Errors;struct PID spid; / PID Control Structureun sig ned i
3、nt rout; / PID Resp onse (Output) un sig ned int rin; / PID Feedback (In put) sbit data 1= P1A0;sbit clk=P1Ai;sbit plus=P2A0;sbit subs=P2Al;sbit stop=P2A2;sbit output=P3A4;sbit DQ=P3A3;un sig ned char flag,flag_1=0;un sig ned char high_time,low_time,co un t=0;占空比調節(jié)參數(shù)un sig ned char set_temper=35;un
4、sig ned char temper;un sig ned char i;un sig ned char j=0;un sig ned int s;/*延時子程序,延時時間以12M晶振為準,延時時間為30usxtime*/void delay (un sig ned char time)un sig ned char m,n;for(n=0;n< time ;n+)for(m=0;m<2;m+)/*寫一位數(shù)據(jù)子程序*/void write_bit( un sig ned char bitval)EA=0;DQ=0; /*拉低DQ以開始一個寫時序*/if(bitval=1)_n o
5、p_();DQ=1; /*如要寫1,則將總線置高*/delay(5); /* 延時 90us 供 DA18B20 采樣 */DQ=1; /*釋放DQ總線*/_n op_();_n op_();EA=1;/*寫一字節(jié)數(shù)據(jù)子程序*/void write_byte( un sig ned char val)un sig ned char i;un sig ned char temp;EA=0;/*關中斷*/TR0=0;for(i=0;i<8;i+) /*寫一字節(jié)數(shù)據(jù),一次寫一位*/temp=val>>i; /*移位操作,將本次要寫的位移到最低位*/temp=temp&1;w
6、rite_bit(temp); /* 向總線寫該位 */delay;/* 延時 120us 后 */ TR0=1;EA=1; /*開中斷*/*讀一位數(shù)據(jù)子程序*/un sig ned char read_bit()un sig ned char i,value_bit;EA=O;DQ=O; /*拉低DQ,開始讀時序*/_n op_();_n op_();DQ=1; /*釋放總線*/for(i=0;i<2;i+)value_bit=DQ;EA=1;return(value_bit);/*讀一字節(jié)數(shù)據(jù)子程序*/un sig ned char read_byte()un sig ned cha
7、r i,value=0;EA=0;for(i=0;i<8;i+)if(read_bit() /*讀一字節(jié)數(shù)據(jù),一個時序中讀一次,并作移位處理*/value|=OxO1<<i;delay(4); /*延時80us以完成此次都時序,之后再讀下一數(shù)據(jù)*/EA=1;return(value);/*復位子程序*/un sig ned char reset()un sig ned char prese nee;EA=0;DQ=0; /*拉低DQ總線開始復位*/delay(30); /* 保持低電平 480us*/DQ=1; /*釋放總線*/delay(3);presence=DQ; /*
8、獲取應答信號*/delay(28); /*延時以完成整個時序*/EA=1;return(prese nee); /*返回應答信號,有芯片應答返回0,無芯片則返回1*/*獲取溫度子程序*/void get_temper()un sig ned char i,j;doi=reset(); /* 復位 */while(i!=0); /*1為無反饋信號*/i=0xcc; /*發(fā)送設備定位命令*/write_byte(i);i=0x44; /*發(fā)送開始轉換命令*/write_byte(i);delay(180); /* 延時 */doi=reset(); /* 復位 */while(i!=0);i=0x
9、cc; /*設備定位*/write_byte(i);i=0xbe; /*讀出緩沖區(qū)內容*/write_byte(i);j=read_byte();i=read_byte();i=(i<<4) &0x7f;s=(unsigned int)(j&0x0f);s=(s*100)/16;j=j>>4;temper=i|j; /*獲取的溫度放在 temper中*/ /*=In itialize PID Structure=*/void PIDI ni t (struct PID *pp)memset ( pp,0,sizeof(struct PID); /*=PI
10、D計算部分=*/un sig ned int PIDCalc( struct PID *pp, un sig ned int NextPoi nt )unsigned int dError,Error;Error = pp->SetPoi nt - NextPoi nt; / 偏差 pp->SumError += Error; / 積分dError = pp->LastError - pp->PrevError; / 當前微分pp->PrevError = pp->LastError;pp->LastError = Error;return (pp-&
11、gt;Proporti on * Error/ 比例+ pp->I ntegral * pp->SumError / 積分項+ pp->Derivative * dError); / 微分項/*溫度比較處理子程序*/compare_temper()un sig ned char i;if(set_temper>temper)if(set_temper-temper>1)high_time=100;low_time=0;elsefor(i=0;i<10;i+) get_temper();rin = s; / Read In putrout = PIDCalc
12、( &spid,ri n ); / Perform PID In teratio nif (high_time<=100)high_time=(un sig ned char)(rout/800);elsehigh_time=100;low_time= (100-high_time);else if(set_temper<=temper)if(temper-set_temper>0)high_time=0;low_time=100;elsefor(i=0;i<10;i+) get_temper();rin = s; / Read In putrout = PID
13、Calc ( &spid,ri n ); / Perform PID In teratio nif (high_time<100)high_time=(unsigned char)(rout/10000);elsehigh_time=0;low_time= (100-high_time);/ else/ /*TO中斷服務子程序,用于控制電平的翻轉 ,40us*100=4ms周期*/void serve_T0() in terrupt 1 using 1if(+co un t<=(high_time)output=1;else if(cou nt<=100)output
14、=0;elsecoun t=0;TH0=0x2f;TLO=OxeO;/*串行口中斷服務程序,用于上位機通訊*void serve_sio() in terrupt 4 using 2/* EA=0;RI=0;i=SBUF;if(i=2)while(RI=0)RI=0;set_temper=SBUF;SBUF=0x02;while(TI=0)TI=0;else if(i=3)TI=0;SBUF=temper;while(TI=0)TI=0;EA=1; */void disp_1( un sig ned char disp_ nu m16)un sig ned char n, a,m;for(n=
15、0;n<6;n+)/ k=disp_ nu m1 n;for(a=0;a<8;a+)clk=0;m=(disp_ nu m1 n& 1);disp_ nu m1 n=disp_ nu m1 n> >1;if(m=1)data1=1;elsedata1=0;_n op_();clk=1;_n op_();/*顯示子程序功能:將占空比溫度轉化為單個字符,顯示占空比和測得到的溫度*/void display()un sig ned char code number=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6;un
16、 sig ned char disp_ nu m6;un sig ned int k,k1;k=high_time;k=k%1OOO;k仁 k/100;if(k1=0)disp_ num0=0;elsedisp_num0=0x60;k=k%100;disp_num1=numberk/10;disp_num2=numberk%10;k=temper;k=k%100;disp_num3=numberk/10;disp_num4=nu mberk%10+1;disp_ nu m5=nu mbers/10;disp_1(disp_ nu m);/*主程序*/main ()un sig ned char
17、 z;un sig ned char a,b,flag_2=1,co un t1=0;unsigned char phil=2,0xce,0x6e,0x60,0x1c,2;TMOD=Ox21;TH0=0x2f;TL0=0x40;SCON=0x50;PCON=OxOO;TH1=0xfd;TL1=0xfd;PS=1;EA=1;EX仁 0;ET0=1;ES=1;TR0=1;TR1=1;high_time=50; low_time=50;PIDI nit ( & spid ); / I nitialize Structure spid. Proportion = 10; / Set PID C
18、oefficie nts spid .In tegral = 8;spid.Derivative =6;spid.SetPoi nt = 100; / Set PID Setpoi nt while(1)if(plus=0)EA=0;for(a=0;a<5;a+) for(b=0;b<102;b+)if(plus=0)set_temper+;flag=0;else if(subs=0)for(a=0;a<5;a+) for(b=0;a<102;b+)if(subs=0)set_temper-;flag=0;else if(stop=0)for(a=0;a<5;a+
19、) for(b=0;b<102;b+) if(stop=0)flag=0;break;EA=1;get_temper(); b=temper;if(flag_2=1)a=b;if(abs(a-b)>5) temper=a;elsetemper=b;a=temper; flag_2=0;if(+cou nt1>30)display();coun t1=0;compare_temper();TR0=0;z=1;while(1)EA=0;if(stop=0) for(a=0;a<5;a+) for(b=0;b<102;b+) if(stop=0) disp_1(phil
20、);/ break;EA=1;DS18b20 子程序#i nclude <REG52.H>定義端口sbit DQ=P2A1;typedef un sig ned char byte;word;延時typedef un sig ned intvoid delay(word usec on ds)for(;usec on ds>0;usec on ds-);byte ow_reset(void)byte prese nee;DQ=0;delay(29);DQ=1;delay(3);prese nce=DQ;delay(25);return(prese nee);byte read
21、_byte(viod)byte i;復位/DQ低電平480us/DQ高電平/等待/presenee 信號0允許,1禁止/從1-wire總線上讀取一個字節(jié)byte value=0;for (i=8;i>0;i-)value>>=1;DQ=0;DQ=1;delay(1);if(DQ)value|=0x80;delay(6);return(value);向1-wire總線上寫一個字節(jié)void write_byte(char val)/ 一次寫一個字節(jié)byte i;for (i=8;i>0;i-)DQ=0;DQ=va l&O x01; delay(5); DQ=1; v
22、al=val/2;delay(5);讀取溫度char Read_Temperature(void) unionbyte c2; int x;temp;ow_reset(); write_byte(0xcc); write_byte(0xBE); temp.c1=read_byte(); temp.cO=read_byte(); ow_reset(); write_byte(OxCC); write_byte(0x44); return temp.x/2;參考資料:你把這兩個程序組合就可以了PID算法PID算法是本程序中的核心部分。我們采用PID模糊控制技術,通過Pvar、Ivar、Dvar (
23、比例、積分、微分)三方面的結合調整形成模糊控制來解決慣性溫度誤差問題。其原理如下:本系統(tǒng)的溫度控制器的電熱元件之一是發(fā)熱絲。發(fā)熱絲通過電流加熱時,內部溫度都很高。當容器內溫度升高至設定溫度時,溫度控 器會發(fā)岀信號停止加熱。但這時發(fā)熱絲的溫度會高于設定溫度,發(fā)熱絲還將會對被加熱的器件進行加熱,即使溫度控制器發(fā)岀信號停止加熱, 加熱器件的溫度還往往繼續(xù)上升幾度,然后才開始下降。當下降到設定溫度的下限時,溫度控制器又開始發(fā)岀加熱的信號,開始加熱,但發(fā)熱 要把溫度傳遞到被加熱器件需要一定的時候,這就要視發(fā)熱絲與被加熱器件之間的介質情況而定。通常開始重新加熱時,溫度繼續(xù)下降幾度。 以,傳統(tǒng)的定點開關控制
24、溫度會有正負誤差幾度的現(xiàn)象,但這不是溫度控制器本身的問題,而是整個熱系統(tǒng)的結構性問題,使溫度控制器控溫 生一種慣性溫度誤差。增量式PID算法的輸岀量為 Un = Kp(en-en-1)+(T/Ti)en+(Td/T)(en-2*en-1+en-2)式中,en、en-1、en-2分別為第n次、n-1次和n-2次的偏差值,Kp、Ti、Td分別為比例系數(shù)、積分系數(shù)和微分系數(shù),T為采樣周期計算機每隔固定時間 T將現(xiàn)場溫度與用戶設定目標溫度的差值帶入增量式PID算法公式,由公式輸出量決定PWM方波的占空比,后續(xù)熱電路根據(jù)此PWM方波的占空比決定加熱功率?,F(xiàn)場溫度與目標溫度的偏差大則占空比大,加熱電路的加
25、熱功率大,使溫度的實測值與設定值 偏差迅速減少;反之,二者的偏差小則占空比減小,加熱電路加熱功率減少,直至目標值與實測值相等,達到自動控制的目的。PID參數(shù)的選擇是實驗成敗的關鍵,它決定了溫度控制的準確度。數(shù)字PID調節(jié)器參數(shù)的整定可以仿照模擬PID調節(jié)器參數(shù)整定的各法,根據(jù)工藝對控制性能的要求,決定調節(jié)器的參數(shù)。各個參數(shù)對系統(tǒng)性能的影響如下: 比例系數(shù)P對系統(tǒng)性能的影響:比例系數(shù)加大,使系統(tǒng)的動作靈敏,速度加快,穩(wěn)態(tài)誤差減??;P偏大,振蕩次數(shù)加多,調節(jié)時間加P太大時,系統(tǒng)會趨于不穩(wěn)定;P太小,又會使系統(tǒng)的動作緩慢。P可以選負數(shù),這主要是由執(zhí)行機構、傳感器以及控制對象的特性決定的。如P的符號選
26、擇不當對象測量值就會離控制目標的設定值越來越遠,如果岀現(xiàn)這樣的情況P的符號就一定要取反。 積分控制I對系統(tǒng)性能的影響:積分作用使系統(tǒng)的穩(wěn)定性下降,I小(積分作用強)會使系統(tǒng)不穩(wěn)定,但能消除穩(wěn)態(tài)誤差,提高系控制精度。 微分控制D對系統(tǒng)性能的影響:微分作用可以改善動態(tài)特性,D偏大時,超調量較大,調節(jié)時間較短;D偏小時,超調量也較大,調節(jié)時間長;只有D合適,才能使超調量較小,減短調節(jié)時間。溫底控制PID的算法設計及實現(xiàn)PID簡介PID ( Proportional Integral Derivative)控制是控制工程中技術成熟、應用廣泛的一種控制策略,經過長期的工程實踐,已整的控制方法和典型的結構
27、。它不僅適用于數(shù)學模型已知的控制系統(tǒng)中,而且對于大多數(shù)數(shù)學模型難以確定的工業(yè)過程也可應用,在眾 制中取得了滿意的應用效果。PID工作基理:由于來自外界的各種擾動不斷產生,要想達到現(xiàn)場控制對象值保持恒定的目的,控制作用就必須不斷的進行。若現(xiàn)場控制對象值(以下簡稱被控參數(shù))發(fā)生變化,現(xiàn)場檢測元件就會將這種變化采集后經變送器送至PID控制器的輸入端,并與其給定值值)進行比較得到偏差值(以下簡稱e值),調節(jié)器按此偏差并以我們預先設定的整定參數(shù)控制規(guī)律發(fā)出控制信號,去改變調節(jié)器的開度, 度增加或減少,從而使現(xiàn)場控制對象值發(fā)生改變,并趨向于給定值(SP值),以達到控制目的,如圖1所示,其實PID的實質就是
28、對行比例、積分、微分運算,根據(jù)運算結果控制執(zhí)行部件的過程。p:圖1模擬PID控制系統(tǒng)原理圖PID控制器的控制規(guī)律可以描述為:比例(P)控制能迅速反應誤差,從而減小穩(wěn)態(tài)誤差。但是,比例控制不能消除穩(wěn)態(tài)誤差。比例放大系數(shù)的加大,會引起系統(tǒng)的(I )控制的作用是:只要系統(tǒng)有誤差存在,積分控制器就不斷地積累,輸出控制量,以消除誤差。因而,只要有足夠的時間,積分控制誤差,使系統(tǒng)誤差為零,從而消除穩(wěn)態(tài)誤差。積分作用太強會使系統(tǒng)超調加大,甚至使系統(tǒng)出現(xiàn)振蕩。微分(D)控制可以減小超調量,系統(tǒng)的穩(wěn)定性提高,同時加快系統(tǒng)的動態(tài)響應速度,減小調整時間,從而改善系統(tǒng)的動態(tài)性能。根據(jù)不同的被控對象的控制特性,又可PD
29、 PID等不同的控制模型。數(shù)字PID的實現(xiàn)在連續(xù)-時間控制系統(tǒng)(模擬 PID控制系統(tǒng))中,PID控制器應用得非常廣泛。其設計技術成熟,長期以來形成了典型的結構,結構更改靈活,能滿足一般的控制要求。隨著計算機的快速發(fā)展,人們將計算機引入到PID控制領域,也就岀現(xiàn)了數(shù)字式PID控制由于計算機基于采樣控制理論,計算方法也不能沿襲傳統(tǒng)的模擬PID控制算法(如公式 1所示),所以必須將控制模型離散化PID計算公式離散法:以T為采樣周期,k為采樣序號,用求和的形式代替積分,用增量的形式(求差)代替微分,這樣可以將連續(xù)的tkT(k=0J.2.)卜-Te(jT) = T e(j) Mr j=Cde(t)u(k
30、T)-亡(k-汕1 肚 dtTT式1就可以離散為:I九=KFet + y ej + -屯)+也'(3)或者:Ik卩嚴K曲+瓦工勺+ KD(ek - %)+ %亠 (4)這樣就可以讓計算機或者單片機通過采樣的方式實現(xiàn)PID控制,具體的PID控制又分為位置式 PID控制和增量式 PID控制,公制量的全部大小,所以稱之為全量式或者位置式控制;如果計算機只對相鄰的兩次作計算,只考慮在前一次基礎上,計算機輸岀量的大是全部輸出信息的計算,這種控制叫做增量式PID控制算法,其實質就是求卩的大小,而卩k =卩k -卩k-1 ;所以將式4做自叫=Kplck -z T= Kp(l + += Ae1-Bck
31、.1+Ccl,2Ck +上_在血+ Ck-2)- Kp(l + -+ Kp2dT(5)其中- tA=KpU-s- +B = -Kp(l +¥溫度控制PID算法設計本設計利用了上面所介紹的位置式PID算法,將溫度傳感器采樣輸入作為當前輸入,然后與設定值進行相減得偏差ek,然后再運算產生輸岀結果 fOut,然后讓fOut控制定時器的時間進而控制加熱器。為了方便PID運算,首先建立一個 PID的結構體數(shù)據(jù)類型,于保存PID運算所需要的P、I、D系數(shù),以及設定值,歷史誤差的累加和等信息:typedef struct PIDfloat SetPoi nt; /設定目標 Desired Valu
32、efloat Proporti on; /比例系數(shù) Proportional Constfloat In tegral; /積分系數(shù) Integral Constfloat Derivative; /微分系數(shù) Derivative Constint LastError; /上次偏差int SumError; /歷史誤差累計值 PID;PID stPID; /定義一個stPID變量PID運算的算法程序,通過PID運算返回fOut,fOut的值決定是否加熱,加熱時間是多少。PID運算的C實現(xiàn)代碼: float PIDCalc( PID *pp, i nt NextPoi nt ) int dErr
33、or,Error;Error = pp->SetPoint*10 - NextPoint; /偏差,設定值減去當前采樣值pp->SumError += Error; /積分,歷史偏差累加dError = Error-pp->LastError; / pp->PrevError = pp->LastError; / pp->LastError = Error;+ pp->I ntegral * pp->SumError /-pp->Derivative * dError /);當前微分,偏差相減保存積分項微分項在實際運算時,由于水具有很大的熱
34、慣性,而且PID運算中的I (積分項)具有非常明顯的延遲效應所以不能保留,我們必須把相反D (微分項)則有很強的預見性,能夠加快反應速度,抑制超調量,所以積分作用應該適當加強才能達到較佳的控制效果,系統(tǒng)最方案,下面C代碼所示為PD控制的實現(xiàn)過程:float PIDCalc( PID *pp, i nt NextPoi nt )int dError,Error;Error = pp->SetPoint*10 - NextPoint; / dError = Error-pp->LastError; / pp->PrevError = pp->LastError; / pp-
35、>LastError = Error;return (pp->Proportio n * Error /偏差,設定值減去當前采樣值當前微分,偏差相減保存比例項-pp->Derivative * dError /微分項);溫度控制實現(xiàn)通過溫度的PID運算,產生結果fOut,該參數(shù)決定是否加熱,加熱時間是多長。該程序如下:stPID.Proportion = 2; /設置 PID 比例值stPID.Integral = 0; /設置 PID 積分值stPID.Derivative = 5; /設置 PID 微分值fOut = PIDCalc ( & stPID,(i nt
36、)(fT*10) ); /PID計算if(fOut<=0)*P_IOA_Buffer &= 0xff7f; /溫度高于設定值,關閉加熱器PID 般算式及模擬控制規(guī)律如式(1)所示:else*P_IOA_Buffer |= 0x0080; /溫度低于設定值,打開加熱器“ 0”,則開啟加計算結果比較大說明加熱時間由主函數(shù)計算,由TimerB中斷控制。主程序中通過 PIDCalc函數(shù)得到fOut參數(shù),如果該參數(shù)大于B中斷一直處于允許狀態(tài),每進入一次IRQ2_TMB中斷,fOut參數(shù)減1直到fOut = 0 ,停止加熱。如果 PIDCalc差較大,則加熱時間比較長,如果計算結果比較小,說
37、明離目標溫度相差較小,加熱時間相對較短?;赑ID算法和89C52單片機的溫度控制系統(tǒng)作者:張艷艷 安徽電子信息職業(yè)技術學院 來源:現(xiàn)代電子技術 發(fā)布時間:2009-12-22 17:36:09 收 藏評論基于PID算法和89C52單片機的溫度控制系統(tǒng)0引言溫控技術無論是在工業(yè)生產,還是日常生活中都起著非常重要的作用。在冶金、石油、化工、電力和現(xiàn)代農業(yè)等行業(yè),溫度是極為重要而又普遍的熱工參數(shù)之一,在普通家庭里熱水器、電飯煲、電烤箱等依賴于溫控技術的家電設備也是必不可少??梢哉f溫度控制技術無處不在。常規(guī)的溫度控制方法以設定溫度為臨界點,超岀設定允許范圍即進行溫度調控:低于設定值就加熱,反之就停止
38、或降溫。這種方法實現(xiàn)簡單、成本低,但控制效果不理想,控制溫度精度不高、容易引起震蕩,達到穩(wěn)定點的時間也長,因此,只能用在精度要求不高的場合。而采用PID算法進行溫度控制,它具有控制精度高,能夠克服容量滯后的特點, 特別適用于負荷變化大、 容量滯后較大、控制品質要求又很高的控制系統(tǒng)。單片機作為控制系統(tǒng)中必不可少的部分,在各個領域得到了廣泛的應用,用單片機進行實時系統(tǒng)數(shù)據(jù)處理和控制,保證系統(tǒng)工作在最佳狀態(tài),提高系統(tǒng)的控制精度,有利于提高系統(tǒng)的工作效率。本系統(tǒng)采用單片機編程實現(xiàn)PID算法進行溫度控制。1 PID控制的原理和特點在工程實際中,應用最為廣泛的調節(jié)器控制規(guī)律為比例、積分、微分控制,簡稱PI
39、D控制,又稱PID調節(jié)。PID控制器以其結構簡單、穩(wěn)定性好、工作可靠、調整方便而成為工業(yè)控制的主要技術之一。當被控 對象的結構和參數(shù)不能完全掌握,或得不到精確的數(shù)學模型,控制理論的其他技術也難以采用,系統(tǒng)控制器的結構和參數(shù)必須依靠經驗和現(xiàn)場調試來確定時,應用PID控制技術最為方便。PID控制器的參數(shù)整定是控制系統(tǒng)設計的核心內容。它是根據(jù)被控過程的特性確定PID控制器的比例系數(shù)、積分時問和微分時間的大小。PID控制器參數(shù)整定的方法概括起來有兩大類:一是理論計算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學模型,經過理論計算確定控制器參數(shù)。這種方法所得到的計算數(shù)據(jù)未必可以直接 用,還必須通過工程實際進行調整和修改
40、。二是工程整定方法,它主要依賴工程經驗,直接在控制系統(tǒng)的 試驗中進行,且方法簡單、易于掌握,在工程實際中被廣泛采用。uCt) = Kq e(t) + 寺J f(£)dt 十 To (1)N式中:u(t)為控制器的輸出;e(t)為偏差,即設定值與反饋值之差;KC為控制器的放大系數(shù),即比例增益;TI為控制器的積分常數(shù);TD為控制器的微分時間常數(shù)。 PID算法的原理即調節(jié) KC,TI,TD三個參 數(shù)使系統(tǒng)達到穩(wěn)定。由于計算機控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差值計算控制量。因此在計算機控制系統(tǒng)中,必須首先對式(1)進行離散化處理,用數(shù)字形式的差分方程代替連續(xù)系統(tǒng)的微分方程,此時積分
41、項和微分項可用求和及增量式表示:血 A EgE(K)-E(gl) "、一 =亍 0di AzTe(i)dz =二(3)Joj=Gj-0將式(2)和式代入式(1),則可得到離散的 PID表達式:P(K) = KpE(K) + # 左E(j)+I j = 0*E(K) E(K - 1(4)式中: t=T為采樣周期,必須使 T足夠小,才能保證系統(tǒng)有一定的精度 (采樣定理);E(K)為第K次采樣時的偏差值;E(K-1)為第K-1次采樣時的偏差值;P(K)為第K次采樣是調節(jié)器的輸出。2系統(tǒng)的硬件構成本系統(tǒng)由傳感器 A/D采樣輸入、單片機控制、人機交互、控制信號輸岀四部分組成,其中溫度傳感部分由
42、測試采樣電路實現(xiàn), 人機交互由矩陣鍵盤和 LCD液晶屏構成,PID控制算法由89C52單片機實現(xiàn),控制信號輸岀部分則由功率放大和開關控制電路組成。系統(tǒng)框圖如圖1所示。圖1 溫控系統(tǒng)框圖3主程序流程軟件程序是本控制系統(tǒng)的核心,它包括從溫度采樣到信號輸岀的整個流程控制,其示意圖如圖2所示開機圖2 控制系統(tǒng)流程圖程序功能主要由以下的幾部分組成:(1) 初始化:設定各參數(shù)的初始值,設定各中斷及定時器。(2) 接收/發(fā)射:此部分程序主要完成數(shù)據(jù)的控制及顯示,主要通過89C52單片機的全雙工串行口完成和鍵盤部分的雙向通信。(3) PC機通信:此部分完成與微機控制接口RS 232的連接及通信的控制。(4)
43、數(shù)值轉換子程序:由于主程序中用到了很多的數(shù)值轉換及數(shù)值的運算(如十進制轉換成十六進制、雙字節(jié)與單字節(jié)的除法運算等),為了程序調用的方便,特將其編寫成子程序的形式。(5) PID 算法。4實驗測試系統(tǒng)的性能與穩(wěn)定度需要通過具體實驗測試完成?,F(xiàn)用1 kW的電爐將電熱杯中的1 L清水進行加熱。觀測設定值和實測值之間的誤差 (當水溫達到穩(wěn)定時的值),計算絕對誤差和相對誤差,見表1。表1 逞差分析表序號設定泯度/匸實測溫度/忙絕對娛搭相對誤蓋/%135.335. 300240,240. 1-0. 16 24345.045, 30. 30価460.060* 50 50.83574.073,4-0.4:0,
44、606B1.081. 20,20.25設定溫度為50 C,每隔30s記錄實測溫度,如表2所示。表2蠱度穩(wěn)定度關系羸t設定溫度snv)測-老時間/ min實測溫度測量時間/min實測溫度隹0* 535. 54,051, 11.037.04. 550. 61.510. 35” 049.8世0佩55.550. 52. 5轍1G. 050t23. 550.3反550. 1從表2中的數(shù)據(jù)可知,系統(tǒng)運行 5 min時基本達到穩(wěn)定。5結語由實驗結果可以看岀,系統(tǒng)的誤差基本穩(wěn)定在如.3'C,可見系統(tǒng)的精度很好。此外,系統(tǒng)運行5 min時溫度基本達到穩(wěn)定,穩(wěn)定所需時間較短??梢钥磳?,基于PID算法的單片
45、機溫度控制系統(tǒng)具有較高的精確度和穩(wěn)定性,在溫度調節(jié)階段平衡溫度時間較短。因此本系統(tǒng)可以應用于各種對精度要求較高的溫度控回復數(shù):5,點擊數(shù):1528制場合。溫度控制中,用PID算法得到的是一個數(shù)值,這個數(shù)值如何轉換為占空比?【樓主位】xu我在用MEGA16控制電加熱調節(jié)水溫時,采用PID算法,輸出采用占空xianhai比通斷控制。為求階躍響應,我用15%占空比達到穩(wěn)定后,將占空比調至積分:230%,開始測量溫度。得到階躍響應曲線后,為求加熱器的靜態(tài)增益K,派別:采用K= Y/ X公式。我知道厶Y用溫度值的單位,但 X的單位該如等級:何取呢?是用15,還是0.15?來自:另外,我用PID算法得到的
46、是一個數(shù)值,這個數(shù)值如何轉換為占空比?是要先設定一個較大的值嗎?如果是的話,這個數(shù)值是否有一個經驗值,大 概取多少?懇請各位高手幫忙看一下,謝謝!2006-02-17,10:資料 郵件 回復 引用回復編輯刪除51:03【1樓】sa nol哥們,我也做這個,交流下?積分:8qq 940353508派別:等級:-來自:2009-04-23,09: L資料 =郵件 竺 引用回復=編輯 刪除42:23【2樓】huang關于PID有點心得,供LZ參考:stone1、PID運算出來是一個數(shù)據(jù)沒有量綱, 在這里這個數(shù)據(jù)和占空比沒有什積分:47么直接的關系,這個數(shù)據(jù)的大小表示的 PID調節(jié)的強度,數(shù)據(jù)大調節(jié)度
47、就派別:大。等級:-2、占空比的輸出一般通過定時器,我們假設當定時器的值為255時,來自:占空比為100%。第1點計算的數(shù)據(jù)是和你 PID的三個參數(shù)密切相關的,在相同的被控量測量值下,不同的 PID參數(shù)會得出不同的值,這其實就是 PID參數(shù)要調節(jié)的原因。因此要對 PID參數(shù)加以調整,將計算出的數(shù)據(jù)可 以直接賦給定時器控制占空比,但是要對最大和最小值加以限定。3、想象一下,如果你的PID參數(shù)不合適,計算出的數(shù)據(jù)要么大于255,要么小于0,這就變成了開關控制了。其實最關鍵的就是我寫的第一點,只要理解了 PID計算出的數(shù)據(jù)是表示的調節(jié)強度的大小,和占空比和溫度都沒有直接的對應關系的。那PID就沒有什
48、么困難的。2009-04-23,11:資料 郵件 業(yè) 引用回復編輯刪除52:49【3樓】deepi【2樓】huangstonen學習了 !!!積分:402派別:等級:-來自:編輯刪除2009-04-24,14:資料 郵件 回復 引用回復 ffJJ48:14【4樓】lengqi這個樓的時間跨度太大了吧? ?ng1309積分:209派別:等級:-來自:泉州2009-04-24,16:資料廠郵件 回復 引用回復編輯 刪除33:29學習了【5樓】aglen58積分 派別 等級 來自2009-10-11,11:05:24資料 郵 件 回復 引用回單片機高精度溫度控制實例【摘要】本文介紹了以AT89S51單片機為核心的溫度控制器的設計,在該設計中采用高精度 的溫度傳感器AD590對電熱鍋爐的溫度進行實時精確測量,用超低溫漂移高精度運算放大器 OP07將溫度-電壓信號進行放大 再送入12位的AD574A進行AD轉換,從而實現(xiàn)自動檢測,實 時顯示及越限報警??刂撇糠植捎肞ID算法,實時更新PWM控制輸岀參數(shù),控制可控硅的通斷 時間,最終實現(xiàn)對爐溫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合資設備合同范本
- 業(yè)主瓷磚購買合同范本
- 公司廠房翻新施工合同范本
- 咨詢策劃服務合同范例
- 中標平移合同范本
- 合作測試合同范本
- 課題申報書代寫正規(guī)機構
- 內衣委托加工合同范本
- 信息項目合同范本
- 體育產業(yè)發(fā)展趨勢及市場潛力研究
- 《人工智能導論》(第2版)高職全套教學課件
- 39 《出師表》對比閱讀-2024-2025中考語文文言文閱讀專項訓練(含答案)
- 院前急救技術-止血包扎固定搬運課件
- 中國煤炭地質總局公開招聘報名表
- 電子商務數(shù)據(jù)分析基礎(第二版) 課件 模塊1、2 電子商務數(shù)據(jù)分析概述、基礎數(shù)據(jù)采集
- YB-T+4190-2018工程用機編鋼絲網及組合體
- 高大模板安全施工施工安全保證措施
- 地連墻鋼筋籠吊裝安全施工T及T吊裝驗算及設備選定
- 2024-2025年跨境電商行業(yè)女裝市場前景及投資研究報告
- 委托辦理報廢汽車協(xié)議書
- 2024年新疆中考英語試卷真題(含答案)
評論
0/150
提交評論