溫度控制的PID算法的C語言程序_第1頁
溫度控制的PID算法的C語言程序_第2頁
溫度控制的PID算法的C語言程序_第3頁
溫度控制的PID算法的C語言程序_第4頁
溫度控制的PID算法的C語言程序_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、溫度控制的PID算法的C語言程序Document number : WTWYT-WYWY-BTGTT-YTTYU-2018GT基于PID算法的溫度控制系統(tǒng)89C51單片機(jī),通過鍵盤輸入預(yù)設(shè)值,與DS18B20測得的實(shí)際值做比較,然 后驅(qū)動制冷或加熱電路。用keilC語言來實(shí)現(xiàn)PID的控制。(匕=0丄2,)WgfiWrtom= Kpe(t)+±J;e(t)dt+TD+% 讐,kTT(k7T=gT上 TKp© 十工勺 + 卡G -di)+Po 叫=Kpk +Ki工勺 +KD(:k -札)+ %丄 I 3=01j=0二人-4=Kp乞-ek4 十十 ¥(% 一 2ek-i

2、 十 ek-2)lT T I-SWCO T(1+ + 卡心一 Kp(l + -2)%.i+Kp 卡豈2嚴(yán):+gA齊(飛+申B7Q +半C=KP|(1)e(Z)+ yrJe(f)dZ + TDde(Z)ndzde(r) A ECK)-E(K-l) E(K) E(Q 1) dz AZ(2)eCtdt =工£?(,)/ = TE(j)0m; = n(3)P(K) = KpE(K)+# 刀E(j+丄 1 j = 0¥】E(K)E(K 1(4)超低溫漂移高精度運(yùn)算放大器0P07將溫度一電壓信號進(jìn)行放大.便于A / D進(jìn)行轉(zhuǎn)換.以提高溫度采集 電路的可靠性c模擬電路喚件部分見圖20圖2

3、溫度電壓轉(zhuǎn)換電路電控制執(zhí)行電路的設(shè)計(jì)由輸出來控制電爐.電爐可以近似建立為具有滯后性質(zhì)的一階慣性環(huán)節(jié)數(shù)學(xué)模型。其傳遞函數(shù)形式為:可控硅可以認(rèn)為是線形環(huán)節(jié)實(shí)現(xiàn)對水溫的控制。單片機(jī)輸出與電爐功率分別圏于弱電與強(qiáng)電部分.需要進(jìn) 行隔離處理這里采用光耦元件TLP521在控制部分進(jìn)行光電隔離此外采用變壓器隔離實(shí)現(xiàn)弱強(qiáng)電的電源 隔離。單片機(jī)PWM輸出電平為0時.光耦元件導(dǎo)通.從而使三極管形成有效偏普而導(dǎo)通.通過整流橋的電壓經(jīng)過 集電極電陰以及射集反向偏壓.有7V左右的電壓加在雙向可控硅控制端.從而使可控硅導(dǎo)通.交流通路形 成電阻爐工作:反之單片機(jī)輸出電平為0時.光耦元件不能導(dǎo)通.三極管不能形成有效偽養(yǎng)而截止

4、可控硅控 制端電壓幾乎為冬.可控硅戳止從而戳斷交流通路.電爐停止工作。此外,還有越限報警當(dāng)溫度低于下限時 發(fā)光二極管亮:高上限時蜂鳴器叫o控制執(zhí)行部分的硬件電路如下:圖3控制執(zhí)行部分電路3鍵盤及顯示的設(shè)計(jì)鍵盤采用軟件查詢和外部中斷相結(jié)合的方法來.低電平有效。圖3中按鍵ANl.AN2.AN3.AN4.AN5的功 能定義如表1所示。按鍵AN3與相連.采用外部中斷方式.并且優(yōu)先級定為戰(zhàn)高:按鍵AN5和AN4分別與和相連.采用軟件查詢 的方式:AN1則為硬件復(fù)位鍵與R、C構(gòu)成復(fù)位電路。表I按鍵功能按鍵鍵名功能AN1復(fù)位鍵使系統(tǒng)復(fù)位AN2運(yùn)行鍵使系統(tǒng)開始數(shù)據(jù)采集AN3功能轉(zhuǎn)換鍵按鍵按下(D1亮)時.顯示

5、溫度 設(shè)定值:按鍵升起(DI不亮)時, 顯示前溫度值A(chǔ)N4加一鍵設(shè)定溫度漸次加一AN5減一鍵設(shè)定溫度漸次減一顯示采用3位共陽LED靜態(tài)顯示方式顯示內(nèi)容有溫度值的十位、個位及小數(shù)點(diǎn)后一位這樣可以只用(RXD)口來輸出顯示數(shù)據(jù)從而節(jié)省了單片機(jī)端口資源在口和(TXD)的控制下通過74LS164來實(shí)現(xiàn)3位靜態(tài)顯示。數(shù)字電路硬件部分見圖:圖4數(shù)字歿件電路示意圖 三系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件由三大模塊組成:主程序模塊、功能實(shí)現(xiàn)模塊和運(yùn)算控制模塊C1主程序模塊在主程序中首先給定PID算法的參數(shù)值.然后通過循環(huán)顯示當(dāng)前溫度.并且設(shè)定鍵盤外部中斷為最高優(yōu)先 級以便能實(shí)時響應(yīng)鍵盤處理:軟件設(shè)定定時器TO為5秒定時在無

6、鍵盤響應(yīng)時每隔5秒響應(yīng)一次.以用來 采集經(jīng)過A / D轉(zhuǎn)換的溫度信號:設(shè)定定時器T1為嵌套在TO之中的定時中斷初值由PID算法子程序提 供。在主程序中必須分配好每一部分子程序的起始地址.形式如下:ORGOOOOHAJMPMAINORG0003HAJMPINTOORGOOOBIIAJMPTTOORG001BHAJMPTT1主程序流程圖見圖5。2功能實(shí)現(xiàn)模塊以用來執(zhí)行對可控硅及電爐的控制。功能實(shí)現(xiàn)模塊主要由A/D轉(zhuǎn)換子程序、中斷處理子程序、鍵盤處 理子程序、顯示子程序等部分組成。中斷子程序該中斷罡單片機(jī)內(nèi)部5s定時中斷.優(yōu)先級設(shè)為最低.但卻是最重要的子程序。在該中斷響應(yīng)中.單片機(jī)要完 成A/D數(shù)據(jù)

7、采集轉(zhuǎn)換、數(shù)字濾波、判斷是否越限' 標(biāo)度轉(zhuǎn)換處理、繼續(xù)顯示當(dāng)前溫度' 與設(shè)定值進(jìn)行 比較.調(diào)用PID算法子程序并輸出控制信號等功能。中斷子程序T1定時中斷嵌套在T中斷之中.優(yōu)先級高于T中斷其定時初值由PID算法子程序提供.T1中斷響應(yīng)的時 間用于輸出可控硅(電爐)的控制信號。3運(yùn)算控制模塊運(yùn)算控制模塊涉及標(biāo)度轉(zhuǎn)換、PID算法、以及該算法調(diào)用到的乘法子程序等。標(biāo)度轉(zhuǎn)換子程序該子程序作用是將溫度信號(OOIKFFH)轉(zhuǎn)換為對應(yīng)的溫度值.以便送顯示或與設(shè)定值在相同量綱下進(jìn)行比 較。所用線形標(biāo)度變換公式為:式中.Ax :實(shí)際測星的溫度值:Nx :經(jīng)過A/D轉(zhuǎn)換的溫度量;Am=90:Ao

8、=40;Nm=FEH;No=01 H:單片機(jī)運(yùn)算采用定點(diǎn)數(shù)運(yùn)算.并且在高溫區(qū)和低溫區(qū)分別用程序作嬌正處理溫度計(jì)測量值與LED顯示見 圖7。算法子程序系統(tǒng)算法控制采用工業(yè)上常用的位置型PID數(shù)字控制.并且結(jié)合特定的系統(tǒng)加以算法的改進(jìn).形成了變速 積分PID-積分分離PID控制相結(jié)合的自動識別的控制算法。該方法不僅大大減小了超調(diào)量(見圖9).而 且有效地克服了積分飽和的影響.使控制精度大大提高。PID控制算法的流程圖如圖8。圖7溫度計(jì)測量值與報警方式圖 圖8PID控制算法流程圖圖9中初始水溫為26C實(shí)現(xiàn)思想:Ui(k)為第k次采樣溫度值.Ur為設(shè)定值ce(k)>£使用PD算法:e(

9、k) < £使用變速積分PID算法。圖9溫度控制曲線圖四源程序本設(shè)計(jì)方案軟件實(shí)現(xiàn)完全使用匯編程序語言。具體源程序略C五結(jié)果分析論述本文針對電熱鍋爐溫度控制系統(tǒng)模型提出了一種基于單片機(jī)AT89S51的設(shè)計(jì)方案.設(shè)計(jì)中運(yùn)用PID算 法更新TI的定時常數(shù),PWM輸出控制可控硅的通斷從而實(shí)現(xiàn)對溫度的連續(xù)控制。設(shè)計(jì)結(jié)果由圖7和圖 9可以看出:本設(shè)計(jì)的控制器工作穩(wěn)定控制精度高改進(jìn)的PID算法超調(diào)量大大降低:軟件采用模塊化結(jié) 構(gòu)提高了通用性。本設(shè)計(jì)的目的不僅僅是溫度控制本身主要提供了單片機(jī)外圍電路及軟件包括控制算 法設(shè)計(jì)的思想.應(yīng)該說.這種思想比控制系統(tǒng)本身更為重要求助如果用PID算法控制溫

10、度要怎么做小弟的畢業(yè)設(shè)計(jì)是做個溫度控制系統(tǒng),可PID控制那塊兒我是一點(diǎn)不會啊。眼看時間就要到7,那位大哥,各路高手能不能給段C程序啊。是以18B20為傳感器TOP2#大中小發(fā)表于2009-5-2319:13參考下我收藏的# includeO# includeOstruct_pid單片機(jī)教授初窺門徑intpv;/*integerth&tcontainstheprocessvalue*/intsp;/*integerthatcontainsthesetpoint*/floatintegral;當(dāng)前離線floatpgain;floatigain;floatdgain;intdeadband;

11、intlast_error;;struct_pidwarm, *pid;intprocess_point, set_point, dead_band;floatp_gaint i_gain, d_gain, integral_val, new_integ;pid_initDESCRIPTIONThisfunctioninitializesthepointersinthe_pidstructuretotheprocessvariableandthesetpoint *pvand*spareintegerpointers*/voidpid_init(struct_pidintprocessj>

12、;oint,intset_point)struct_pid*pid;pidwarm;pid->pv=process_point;pid->sp=set_point;pid_tuneDESCRIPTIONSetstheproportionalgain(p_gain), integralgain (i_gain),derivitivegain(d_gain), andthedeadband(dead-band)ofapidcontrolstructure_pid.*/voidpid_tune (structpid*pid, floatpgain, floati_gain, floatd

13、_gain, intdead_band)pid->pgain二p_ga in; pid->igain=i_gain; pid->dgain二d_ga in; pid->deadbandz:dead_band;pid->integral=integral_val;p i d-> las errorO;pid_setintegDESCRIPTIONSetanewaluefortheintegraltermofthepidequation.Thisisusefulforsettingtheinitialoutputofthepidcontrolleratstart

14、up.*/voidpid_setinteg(struct_pid*pid, floatnew_integ)pid->integral=new_integ;p i d->last_error=0;pid_bumplesssetpoints, orwhenrestartingthePIDequationafteranextendedpause, thederivativeoftheequationcancause*pvshouldbetheupdatedjustbeforethisfunctionisused.*/voidpid_bumpless(struct_pid*pid)pid-

15、>last_error=(pid->sp)-(pid->pv);pid_calcDESCRIPTIONPerformsPIDcalculationsforthe_pidstructure*, sothisfunctionmustberepeatedonaconsistenttimebasisforaccuratecontro1RETURXrALUEThenewoutputvalueforthepidloop.USAGE# include"*/floatpid_calc(struct_pid*pid)interr;floatpterm, dterm, result,

16、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->integral=;elsepid->integral+=pid->igain*ferror;if(pid->integral>pid->integral=;elseif(pid->

17、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);voidmain(void)floatdisplay_value;intcount=0;pid=&warm;printf ('"EnterthevaluesofProcesspoint, Setpoint

18、, Pgain, Igain, Dgain);/scanf&process_point, &setpoint, &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 (/zThevaluesofProcesspoint, Setpoint, Pgain, Igain, Dgain'n");printf (z/%6d%6d%4f%4f%4f n/z, pro

溫馨提示

  • 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

提交評論