溫度控制的PID算法的C語言程序_第1頁
溫度控制的PID算法的C語言程序_第2頁
溫度控制的PID算法的C語言程序_第3頁
溫度控制的PID算法的C語言程序_第4頁
溫度控制的PID算法的C語言程序_第5頁
免費預(yù)覽已結(jié)束,剩余13頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、我的題目是:基于PID算法的溫度控制系統(tǒng)89C51單片機,通過鍵盤輸入預(yù)設(shè)值,與DS18B20測得的實際值做比較,然后驅(qū)動制冷或加熱電路。用keilC語言來實現(xiàn)PID的控制。最佳答案7f0f2f1c2f>比陽0+丸出心下。H*T&=。.12)長(7的c(kT)-c(k-l)Tek-小。出TTd/=Kc£(力+e(z)d/+TDdzE(K)E(K-DEfK)E("1)(1)。山=七E(j)AF=TE(j)J。J-0)-0F(K)=KfE(K)+,£e(Q+II(4)89C89C1L50c3c2006-02-17辛E(K)E(KD)2009-04-232

2、009-04-232009-04-242009-04-242009-10-11超低溫漂移高精度運算放大器0P07將溫度一電壓信號進(jìn)行放大,便于A/D進(jìn)行車換,以提高溫度采集電路的可靠性。模擬電路硬件部分見圖2。圖2?溫度電壓轉(zhuǎn)換電路電控制執(zhí)行電路的設(shè)計?由輸出來控制電爐,電爐可以近似建立為具有滯后性質(zhì)的一階慣性環(huán)節(jié)數(shù)學(xué)模型。其傳遞函數(shù)形式為:?可控硅可以認(rèn)為是線形環(huán)節(jié)實現(xiàn)對水溫的控制。單片機輸出與電爐功率分別屬于弱電與強電部分,需要進(jìn)行隔離處理,這里采用光耦元件TLP521在控制部分進(jìn)彳f光電隔離,此外采用變壓器隔離實現(xiàn)弱強電的電源隔離。?單片機PWM輸出電平為0時,光耦元件導(dǎo)通,從而使三極管

3、形成有效偏置而導(dǎo)通,通過整流橋的電壓經(jīng)過集電極電阻以及射集反向偏壓,有7V左右的電壓加在雙向可控硅控制端,從而使可控硅導(dǎo)通,交流通路形成,電阻爐工作;反之單片機輸出電平為0時,光耦元件不能導(dǎo)通,三極管不能形成有效偏置而截止,可控硅控制端電壓幾乎為零,可控硅截止從而截斷交流通路,電爐停止工作。此外,還有越限報警,當(dāng)溫度低于下限時發(fā)光二極管亮;高上限時蜂鳴器叫。控制執(zhí)行部分的硬件電路如下:圖3?控制執(zhí)行部分電路3鍵盤及顯示的設(shè)計?鍵盤采用軟件查詢和外部中斷相結(jié)合的方法來,低電平有效。圖3中按鍵AN1,AN2,AN3,AN4,AN5的功能定義如表1所示。?按鍵AN3與相連,采用外部中斷方式,并且優(yōu)先

4、級定為最高;按鍵AN5和AN4分別與和相連,采用軟件查詢的方式;AN1則為硬件復(fù)位鍵,與R、C構(gòu)成復(fù)位電路?褰1按鍵功能按鍵鍵名功能AN1復(fù)位鍵使系統(tǒng)復(fù)位AN2運行鍵使系統(tǒng)開始數(shù)據(jù)采集AN3?功能轉(zhuǎn)換鍵按鍵按下(D1亮)時,顯示溫度設(shè)定值;按鍵升起(D1不亮)時,顯示前溫度值A(chǔ)N4加一鍵設(shè)定溫度漸次加一AN5減一鍵設(shè)定溫度漸次減一?顯示采用3位共陽LED靜態(tài)顯示方式,顯示內(nèi)容有溫度值的十位、個位及小數(shù)點后一位,這樣可以只用(RXD)口來輸出顯示數(shù)據(jù),從而節(jié)省了單片機端口資源,在口和(TXD)的控制下通過74LS164來實現(xiàn)3位靜態(tài)顯示。數(shù)字電路硬件部分見圖:圖4?數(shù)字硬件電路示意圖三?系統(tǒng)軟件

5、設(shè)計?系統(tǒng)的軟件由三大模塊組成:主程序模塊、功能實現(xiàn)模塊和運算控制模塊。1主程序模塊?在主程序中首先給定PID算法的參數(shù)值,然后通過循環(huán)顯示當(dāng)前溫度,并且設(shè)定鍵盤外部中斷為最高優(yōu)先級,以便能實時響應(yīng)鍵盤處理;軟件設(shè)定定時器T0為5秒定時,在無鍵盤響應(yīng)時每隔5秒響應(yīng)一次,以用來采集經(jīng)過A/D轉(zhuǎn)換的溫度信號;設(shè)定定時器T1為嵌套在T0之中的定時中斷,初值由PID算法子程序提供。在主程序中必須分配好每一部分子程序的起始地址,形式如下:?ORG?0000H?AJMP?MAIN?ORG?0003H?AJMP?INTO?ORG?000BH?AJMP?TT0?ORG?001BH?AJMP?TT1?主程序流程

6、圖見圖5。2功能實現(xiàn)模塊?以用來執(zhí)行對可控硅及電爐的控制。功能實現(xiàn)模塊主要由A/D轉(zhuǎn)換子程序、中斷處理子程序、鍵盤處理子程序、顯示子程序等部分組成。T0中斷子程序?該中斷是單片機內(nèi)部5s定時中斷,優(yōu)先級設(shè)為最低,但卻是最重要的子程序。在該中斷響應(yīng)中,單片機要完成A/D數(shù)據(jù)采集轉(zhuǎn)換、數(shù)字濾波、判斷是否越限、標(biāo)度轉(zhuǎn)換處理、繼續(xù)顯示當(dāng)前溫度、與設(shè)定值進(jìn)行比較,調(diào)用PID算法子程序并輸出控制信號等功能。T1中斷子程序?T1定時中斷嵌套在T中斷之中,優(yōu)先級高于T中斷,其定時初值由PID算法子程序提供,T1中斷響應(yīng)的時間用于輸出可控硅(電爐)的控制信號。3?運算控制模塊?運算控制模塊涉及標(biāo)度轉(zhuǎn)換、PID算

7、法、以及該算法調(diào)用到的乘法子程序等。標(biāo)度轉(zhuǎn)換子程序?該子程序作用是將溫度信號(00HFFH)轉(zhuǎn)換為對應(yīng)的溫度值,以便送顯示或與設(shè)定值在相同量綱下進(jìn)行比較。所用線形標(biāo)度變換公式為:式中,Ax:實際測量的溫度值;Nx:經(jīng)過A/D轉(zhuǎn)換的溫度量;Am=90;Ao=40;Nm=FEH;No=01H;?單片機運算采用定點數(shù)運算,并且在高溫區(qū)和低溫區(qū)分別用程序作矯正處理,溫度計測量值與LED顯示見圖7。PID算法子程序?系統(tǒng)算法控制采用工業(yè)上常用的位置型PID數(shù)字才$制,并且結(jié)合特定的系統(tǒng)加以算法的改進(jìn),形成了變速積分PID一積分分離PID控制相結(jié)合的自動識別的控制算法。該方法不僅大大減小了超調(diào)量(見圖9)

8、,而且有效地克服了積分飽和的影響,使控制精度大大提高。PID控制算法的流程圖如圖8。圖7?溫度計測量值與報警方式圖圖8?PID控制算法流程圖圖9中,初始水溫為26Co實現(xiàn)思想:Ui(k)為第k次采樣溫度值,Ur為設(shè)定值。e(k)使用PD算法;e(k)<£使用變速積分PID算法。圖9溫度控制曲線圖四?源程序?本設(shè)計方案軟件實現(xiàn)完全使用匯編程序語言。具體源程序略。五?結(jié)果分析論述?本文針對電熱鍋爐溫度控制系統(tǒng)模型,提出了一種基于單片機AT89S51的設(shè)計方案。設(shè)計中運用PID算法更新T1的定時常數(shù),PWM輸出控制可才$硅的通斷,從而實現(xiàn)對溫度的連續(xù)控制。設(shè)計結(jié)果由圖7和圖9可以看出

9、:本設(shè)計的控制器工作穩(wěn)定,控制精度高,改進(jìn)的PID算法超調(diào)量大大降低;軟件采用模塊化結(jié)構(gòu)提高了通用性。本設(shè)計的目的不僅僅是溫度控制本身,主要提供了單片機外圍電路及軟件包括控制算法設(shè)計的思想,應(yīng)該說,這種思想比控制系統(tǒng)本身更為重要求助如果用PID算法控制溫度要怎么做?小弟的畢業(yè)設(shè)計是做個溫度控制系統(tǒng),可PID控制那塊兒我是一點不會啊。眼看時間就要到了,那位大哥,各路高手能不能給段C程序啊。是以18B20為傳感器TOP2#大中小發(fā)表于2009-5-2319:13?參考下我收藏的單片機教授初窺門徑?當(dāng)前離線#include<>#include<>struct_pidintpv

10、;"integerthatcontainstheprocessvalue*/intsp;/*integerthatcontainsthesetpoint*/floatintegral;floatpgain;floatigain;floatdgain;intdeadband;intlast_error;);struct_pidwarm,*pid;intprocess_point,set_point,dead_band;floatp_gain,i_gain,d_gain,integral_val,new_integ;/*pid_initDESCRIPTIONThisfunctionini

11、tializesthepointersinthe_pidstructuretotheprocessvariableandthesetpoint.*pvand*spareintegerpointers.*/voidpid_init(struct_pid*warm,intprocess_point,intset_point)(struct_pid*pid;pid=warm;pid->pv=process_point;pid->sp=set_point;/*pid_tuneDESCRIPTIONSetstheproportionalgain(p_gain),integralgain(i_

12、gain),derivitivegain(d_gain),andthedeadband(dead_band)ofapidcontrolstructure_pid.*/voidpid_tune(struct_pid*pid,floatp_gain,floati_gain,floatd_gain,intdead_band)pid->pgain=p_gain;pid->igain=i_gain;pid->dgain=d_gain;pid->deadband=dead_band;pid->integral=integral_val;pid->last_error=0

13、;/*pid_setintegDESCRIPTIONSetanewvaluefortheintegraltermofthepidequation.Thisisusefulforsettingtheinitialoutputofthepidcontrolleratstartup.*/voidpid_setinteg(struct_pid*pid,floatnew_integ)pid->integral=new_integ;pid->last_error=0;/*pid_bumplessDESCRIPTIONBumplesstransferalgorithim.Whensuddenly

14、changingsetpoints,orwhenrestartingthePIDequationafteranextendedpause,thederivativeoftheequationcancauseabumpinthecontrolleroutput.Thisfunctionwillhelpsmoothoutthatbump.Theprocessvaluein*pvshouldbetheupdatedjustbeforethisfunctionisused.*/voidpid_bumpless(struct_pid*pid)pid->last_error=(pid->sp)

15、-(pid->pv);/*pid_calcDESCRIPTIONPerformsPIDcalculationsforthe_pidstructure*a.Thisfunctionusesthepositionalformofthepidequation,andincorporatesanintegralwinduppreventionalgorithim.Rectangularintegrationisused,sothisfunctionmustberepeatedonaconsistenttimebasisforaccuratecontrol.RETURNVALUEThenewout

16、putvalueforthepidloop.USAGE#include""*/floatpid_calc(struct_pid*pid)(interr;floatpterm,dterm,result,ferror;err=(pid->sp)-(pid->pv);if(abs(err)>pid->deadband)(ferror=(float)err;/*dointegertofloatconversiononlyonce*/pterm=pid->pgain*ferror;if(pterm>100|pterm<-100)pid->

17、;integral=;)else(pid->integral+=pid->igain*ferror;if(pid->integral>(pid->integral=;)elseif(pid->integral<pid->integral)dterm=(float)(err-pid->last_error)*pid->dgain;result=pterm+pid->integral+dterm;)elseresult=pid->integral;pid->last_error=err;return(result);vo

18、idmain(void)floatdisplay_value;intcount=0;pid=&warm;/printf("EnterthevaluesofProcesspoint,Setpoint,Pgain,Igain,Dgainn");/scanf("%d%d%f%f%f",&process_point,&set_point,&p_gain,&i_gain,&d_gain);process_point=30;set_point=40;p_gain=(float);i_gain=(float);d_gain=(float);dead_band=2;integral_val=(float);printf("ThevaluesofProcesspoint,Setpoint,Pgain,Igain,Dgainn");printf("%6d%6d%4f%4f%4fn",process_point,set

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論