水溫控制系統(tǒng)_第1頁
水溫控制系統(tǒng)_第2頁
水溫控制系統(tǒng)_第3頁
水溫控制系統(tǒng)_第4頁
水溫控制系統(tǒng)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 設計報告1.設計原理 水溫控制系統(tǒng)以單片機作為控制核心,采用開關控制和控制算法相結合,通過控制單位時間內(nèi)加熱時間所占的比例(即控制波形占空比)來控制水的加熱速度,實現(xiàn)對水的全量程()內(nèi)的升溫、降溫功能的自動控制。根據(jù)設計要求系統(tǒng)可劃分為控制模塊、溫度測量模塊、水溫調(diào)節(jié)模塊、鍵盤輸入模塊、顯示電路模塊等。系統(tǒng)原理圖如圖所示首先寫命令給開始轉換數(shù)據(jù),將轉換后的溫度數(shù)據(jù)送入進行處理,處理后在液晶屏上實時顯示。并將實際測量溫度值與鍵盤設定值進行比較,根據(jù)比較結果進行溫度調(diào)節(jié),當溫差比較大時采用開關量調(diào)節(jié),既全速加熱和制冷,當溫差小時采用算法進行調(diào)節(jié),最終達到溫度的穩(wěn)定控制。其中,加熱采用內(nèi)置(水中)

2、電加熱器實現(xiàn),熱量直接與水傳遞,加熱效果好,控溫方便;降溫采用半導體制冷片實現(xiàn)。其體積小,安裝簡單,易于控制,價格便宜,可短時間內(nèi)反復啟動,但其制冷速率不高,所以設計中配套散熱風扇以達到快速降溫的目的。溫度控制算法實際溫度控制系統(tǒng),常采用開關控制或數(shù)字控制方式。開關控制的特點是可以使系統(tǒng)以最快的素的向平衡點靠近,但在實際應用卻很容易造成系統(tǒng)在平衡點附近震蕩,精度不高;而數(shù)字控制具有穩(wěn)態(tài)誤差小特點,實用性廣泛的特點,但誤差較大時,系統(tǒng)容易出現(xiàn)積分飽和,從而份致系統(tǒng)出現(xiàn)很大的超調(diào)量,甚至出現(xiàn)失控現(xiàn)象。因此,本設計將開關控制,放積分飽和、防參數(shù)突變積分飽和等方法溶入控制算法組成復式數(shù)字控制方法,集各

3、種控制策略的優(yōu)點,既改善了常規(guī)控制的動態(tài)過程又保持了常規(guī)控制的穩(wěn)態(tài)特性。2.1控制算法的確定溫度控制過程為:當水溫溫差大時,采用開關控制方式迅速減小溫差,以縮短調(diào)節(jié)時間;當溫差小于某一值后采用PID控制方式,以使系統(tǒng)快速穩(wěn)定并保持系統(tǒng)無靜態(tài)誤差。在這種控制方法中, PID控制在較小溫差時開始進入,這樣可有效避免數(shù)字積分器的飽和。PID參數(shù)和被控制對象關系密切,要精確得到被控對象模型比較困難,為此,采用離線模糊整定的方法來確定PID參數(shù),即給出一組PID參數(shù)的初值,測得相應的數(shù)據(jù),按使這個量減小的方向調(diào)節(jié)PID參數(shù),用整定后的參數(shù)控制該系統(tǒng),并根據(jù)輸出的調(diào)節(jié)時間、超調(diào)量及穩(wěn)態(tài)誤差,調(diào)節(jié)PID參數(shù)

4、,如此反復,求得一組使系統(tǒng)性能最優(yōu)的PID參數(shù)。復合PID控制系統(tǒng)方框圖如圖所示。2.2PID控制算法根據(jù)設計要求,系統(tǒng)對1L凈水進行加熱或降溫處理,根據(jù)水的對象特性,會出現(xiàn)慣性溫度誤差問題,原因如下:溫度控制器采用發(fā)熱絲對水進行加熱。發(fā)熱絲通電加熱時,內(nèi)部溫度很高。當容器內(nèi)水溫升高至設定溫度時,溫度控制器發(fā)出信號停止加熱。但這時發(fā)熱絲的溫度會高于設定溫度,發(fā)熱絲還將繼續(xù)對對水進行加熱,導致水的溫度還會繼續(xù)上升幾度,然后才開始下降。當水溫下降到設定溫度的下限時,溫度控制器又發(fā)出加熱信號,開始加熱,但發(fā)熱絲要把溫度傳遞到被加熱器件需要一定的時間,導致水溫會繼續(xù)下降幾度。所以,為了對水溫實現(xiàn)精確控

5、制,使溫度測量誤差在±0.5 內(nèi),必須采用PID模糊控制算法,通過Pvar、Ivar、Dvar(比例、積分、微分)三方面的結合形成一個模糊控制來解決慣性溫度誤差問題。利用數(shù)值逼近方法,在采樣時刻t=iT(T為采樣周期,i為正整數(shù))時,PID調(diào)節(jié)規(guī)律可通過下式近似計算。則增量式PID算法的輸出量為:式中,ei、ei-1、ei-2分別為第n次、n-1次和n-2次的偏差值,Kp、Ti、Td分別為比例系數(shù)、積分系數(shù)和微分系數(shù),T為采樣周期。單片機每隔固定時間 T將現(xiàn)場溫度與用戶設定目標溫度的差值帶入增量式PID算法公式,由公式輸出量決定PWM方波的占空比,后續(xù)加熱電路根據(jù)此PWM方波的占空比

6、決定加熱功率?,F(xiàn)場溫度與目標溫度的偏差大則占空比大,加熱電路加熱功率增大,使溫度的實測值與設定值的偏差迅速減少;反之,二者的偏差小則占空比減小,加熱電路加熱功率減少,直至目標值與實測值相等,達到自動控制的目的。 2.3PID參數(shù)的確定PID參數(shù)的選擇是設計成敗的關鍵,它決定了溫度控制的準確度。由于溫度系統(tǒng)是一個具有較大滯后性的系統(tǒng),所以本系統(tǒng)的采樣周期定為10秒,加熱周期定為1秒鐘,根據(jù)一些文獻提供的經(jīng)驗值,初步確定Kp=2,Ti=2,Td=0.5,根據(jù)公式Ki= Kp*T/ TI ;Kd = Kp * TD /T;計算得出Ki=1,Kd=1;然后,由按鍵對系統(tǒng)設定一個溫度值,在線應用工程整定

7、法中的經(jīng)驗法對P,I,D各參數(shù)進行調(diào)整,經(jīng)驗法是一種湊試法,它通過模擬或閉環(huán)運行,觀察調(diào)節(jié)過程的響應曲線,如果曲線不夠理想,則按某種程序將參數(shù)反復湊試,直到調(diào)節(jié)質量滿意為止。湊試程序通常是先比例后積分,最后加入微分。湊試法整定PID參數(shù)的步驟是:1)首先進行P整定。將參數(shù)Kp由小而大慢慢變化,直至得到反應快,超調(diào)小的響應曲線。若無靜差或靜差在允許范圍內(nèi)且響應曲線滿意,整定結束,否則繼續(xù)下步。2)進行PI整定。略小于Kp值,將Ti由大而小緩慢變化,在保持系統(tǒng)動態(tài)性能良好的前提下,消除靜差或是靜差允許范圍內(nèi)。反復改變Kp,Ti值以求得較好效果,若效果滿意,則整定結束,否則繼續(xù)下去。3)進行PID整

8、定。略改變Kp,Ti的值,使Td由小而大緩慢變化,以求得較好的響應曲線和較小的靜差。逐步反復的試湊,直至獲得滿意效果為止。 對于一定的系統(tǒng),合理的參數(shù)組并不唯一,根據(jù)一些文獻的實踐經(jīng)驗,在具體實施PID參數(shù)整定時,以下幾個結論比較實用:1)比例系數(shù)Kp是PID調(diào)節(jié)中最關鍵的一個參數(shù),Kp增大,系統(tǒng)穩(wěn)定性增加,但調(diào)節(jié)靈敏度減弱,一般曲線振蕩頻繁時,要增大Kp,而曲線飄浮繞大彎時,要減小Kp.2)積分時間常數(shù)Ti主要起消除靜差的作用,減小Ti,消除靜差快,但穩(wěn)定性減小,一般曲線偏離恢復慢時,減小Ti,而曲線波動周期長時,再增大Ki。3)微分時間常數(shù)Td是加速過程的有力調(diào)節(jié),在加速過渡過程,應增加T

9、d,Td不宜過小,也不宜太大,Td一般選Ti的四分之一為最佳。根據(jù)以上調(diào)節(jié)的步驟及調(diào)節(jié)的方法及經(jīng)驗,經(jīng)過反復的試驗做后得到最終的P,I,D的參數(shù)為Kp=30,Ki=5,Kd=0.3.硬件電路設計水溫控制系統(tǒng)的硬件電路主要包括:主控電路、溫度采集電路、溫控電路和顯示電路等,下面依次對各部分進行設計。3.1主控電路主控電路采用STC89C52單片機作為系統(tǒng)控制器,結合數(shù)字PID算法完成對溫度測量信號的接收、處理,控制加熱器和制冷片,使水溫控制達到設計要求。主控電路包括STC89C52最小系統(tǒng)和鍵盤電路兩部分,STC89C52最小系統(tǒng)在上一章中已介紹,這里不再贅述。本設計鍵盤采用RF-X1開發(fā)板上的

10、6個獨立按鍵中的4個,各按鍵經(jīng)上拉電阻分別接到單片機的P3.2、P3.3、P3.4、P3.5口上,起到確認、選擇、上調(diào)和下調(diào)的作用,每按上調(diào)或下調(diào)鍵一次,設定溫度值加1或減1。電路圖如圖所示。3.2溫度采集電路本系統(tǒng)采用DS18B20單總線可編程溫度傳感器來實現(xiàn)溫度的采集和轉換,溫度以912位數(shù)字量讀出,可以直接與單片機進行連接,無需外部器件和電源,大大簡化了電路的復雜度。DS18B20應用廣泛,測溫范圍為-55+125oC,溫度數(shù)字量轉換快,性能可以滿足題目的設計要求。DS18B20的測溫電路如圖所示。3.3溫度控制電路溫度控制電路采用加熱器和制冷片對1L水實現(xiàn)加熱和降溫,具體電路如圖12-

11、5所示。當實測溫度高于設定溫度時,單片機P0.2腳輸出低電平,光耦管導通輸出高電平,進入LM393管腳比較整形,濾除高次諧波,輸出高電平,進入Q3和Q4組成的推挽電路,Q3導通Q4截止,輸出低電平,晶閘管導通,驅動制冷片降溫。當實測溫度低于設定溫度時,P0.3腳輸出低電平,驅動加熱器對水溫進行加熱,工作原理與降溫驅動相同。3.4顯示電路顯示電路采用LCD12864液晶模塊顯示系統(tǒng)的設定溫度和實測溫度。LCD12864液晶共有20個引腳,管腳名稱及功能如表12-1所示。本系統(tǒng)選用單片機P1口作為數(shù)據(jù)輸出端與LCD12864的數(shù)據(jù)端(DB0DB7)相連,進行水溫數(shù)據(jù)傳輸;P20接串并行模式方式位R

12、S;P21接并行的讀寫方式位R/W;P22接并行使能端口E;P23接并/串行接口選擇位PSB;P24接復位端口RST。具體電路圖如圖所示。4.軟件設計系統(tǒng)的軟件設計應用C語言,采用模塊化對單片機進行編程實現(xiàn)各項功能。主要包括:PID控制程序、按鍵子程序、溫度采集子程序、溫度比較子程序和液晶顯示程序。4.1主程序設計系統(tǒng)上電初始化后,首先進行按鍵掃描,若有按鍵按下,則讀取按鍵值,更新設定溫度。將實測溫度與設定溫度進行比較,若實測溫度與設定溫度差值大于2ºC,則對水進行全速加熱或降溫;若實測溫度與設定溫度差值小于2ºC,則調(diào)用PID子程序,對水溫進行微調(diào),達到設計要求。系統(tǒng)主程

13、序流程圖如圖所示. 附錄: PID控制程序PID控制就是按設定值與測量值之間偏差的比例、偏差的積累和偏差變化的趨勢進行控制。它根據(jù)采樣時刻的偏差值計算輸出控制量的增量,調(diào)節(jié)控制信號的導通時間來控制加熱電路和冷卻電路的工作。當采樣周期相當短時,可以用求和代替積分,用差商代替微分。PID控制子程序如下:/*PID算法*/unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint ) unsigned int dError,Error; Error = pp->SetPoint - NextPoint; / 偏差pp->Sum

14、Error += Error; / 積分dError = pp->LastError - pp->PrevError; / 當前微分pp->PrevError = pp->LastError; pp->LastError = Error; return (pp->Proportion * Error/比例+ pp->Integral * pp->SumError /積分項+ pp->Derivative * dError); / 微分項/*/按鍵子程序本系統(tǒng)采用四個按鍵,完成溫度的設定。當選擇鍵K1每按下一次,K1num加1,根據(jù)K1num

15、值選擇對溫度值的百位(預留)、十位、個位進行數(shù)值調(diào)節(jié)。每按一次按鍵K2,對應位數(shù)值加1,每按一次按鍵K1,對應位數(shù)值減1,并將設定溫度值寫到液晶顯示器的相應位置。按鍵子程序如下:/*按鍵子程序*/void sheding()if(k1=0)delay1(10);if(k1=0) /按鍵K1按下while(!k1);/按鍵K1抬起write_com(0x0f);write_com(0x94);k1num+;switch(k1num)case 1:write_com(0x0f);write_com(0x94);/液晶顯示位置,十位break;case 2:write_com(0x95);/液晶顯示

16、位置,個位break;case 3:write_com(0x96);/液晶顯示位置,小數(shù)位break;case 4:k1num=0;write_com(0x0c);/清零break;if(k1num!=0)/返回/溫度值加處理:if(k2=0) /按鍵K2按下delay1(10);if(k2=0) while(!k2);switch(k1num)case 1:shi+;if(shi=10)shi=0;a=shi;/十位加1,到10清零write_com(0x94);write_date(tableshi);write_com(0x94);break;case 2:ge+;if(ge=10)ge

17、=0;b=ge;/個位加1,到10清零 write_com(0x95);write_date(tablege);write_com(0x95);break;case 3:xs+;if(xs=10)xs=0;c=xs;/小數(shù)位加1,到10清零write_com(0x96);write_date('.');write_date(tablexs);write_com(0x96);/在液晶對應位置畫點break;/溫度值減處理:if(k3=0) delay1(10);if(k3=0)while(!k3);switch(k1num)case 1:shi-;if(shi=-1)shi=9;

18、a=shi;write_com(0x94);write_date(tableshi);write_com(0x94);break;case 2:ge-;if(ge=-1)ge=9;b=ge; write_com(0x95); write_date(tablege);write_com(0x95);break;case 3:xs-;if(xs=-1)xs=9;c=xs; write_com(0x96);write_date('.');write_date(tablexs);write_com(0x96);break;/*/DS18B20溫度采集子程序系統(tǒng)采用DS18B20對1L水

19、的溫度進行采集。首先根據(jù)DS18B20的工作時序對其進行初始化,并對DS18B20內(nèi)部寄存器讀寫操作進行定義。系統(tǒng)工作時,單片機讀取DS18B20內(nèi)部寄存器的二進制數(shù)值,將其轉化為十進制的真實溫度值。DS18B20溫度采集子程序如下:/* DS18B20溫度采集子程序*/void init_DS18B20()/初始化uchar x=0;DS18B20 = 1; /DQ復位delay(8); /稍做延時DS18B20 = 0; /單片機將DQ拉低delay(80); /精確延時 大于 480usDS18B20 = 1; /拉高總線delay(14);x=DS18B20; /稍做延時后 如果x=0

20、則初始化成功 x=1則初始化失敗delay(20);uchar read_onechar()/讀一個字節(jié)uchar i=0;uchar date = 0;for (i=8;i>0;i-)DS18B20 = 0; date>>=1; /寄存器右移DS18B20 = 1; if(DS18B20)date|=0x80;delay(4);return(date);void write_onechar(uchar date)/寫一個字節(jié)uchar i=0;for (i=8; i>0; i-)DS18B20 = 0;DS18B20 = date&0x01;delay(5);

21、DS18B20 = 1;date>>=1;uint read_temp()/讀取溫度uchar a=0;uchar b=0;uint t=0;float tt=0;init_DS18B20();write_onechar(0xcc); / 跳過讀序號列號的操作write_onechar(0x44); / 啟動溫度轉換init_DS18B20();write_onechar(0xcc); /跳過讀序號列號的操作write_onechar(0xbe); /讀取溫度寄存器a=read_onechar(); /連續(xù)讀兩個字節(jié)數(shù)據(jù) /讀低8位 b=read_onechar(); /讀高8位t

22、=b;t<<=8;t=t|a; /兩字節(jié)合成一個整型變量。tt=t*0.0625; /得到真實十進制溫度值,因為DS18B20可以精確到0.0625度,所以讀回數(shù)據(jù)的最低位代表的是0.0625度/temper12=tt*10;t= tt*10+0.5; /放大10倍,這樣做的目的將小數(shù)點后第一位也轉換為可顯示數(shù)字,同時進行一個四舍五入操作。return(t);void manage_DS18B20()uint num;num=read_temp();shi=num/100;delay(5);ge=num%100/10;delay(5);xs=num%10;delay(5);temp

23、er=shi*10+ge+0.1*xs;/*/溫度比較子程序系統(tǒng)將DS18B20采集到的實際測量溫度值與鍵盤設定值進行比較,根據(jù)比較結果對水溫進行調(diào)節(jié)。若設置溫度大于實際溫度,并且溫差在2度以上,則驅動加熱器對水溫進行全速加熱;當溫差在0.8到2度之間時,則停止加熱,開始降溫;當溫差小于0.8度時,則啟用PID計算,控制溫差逐漸趨近設定值,最終達到穩(wěn)態(tài)。若設置溫度小于實際溫度,系統(tǒng)驅動制冷片開始全速降溫。當實際溫度下降到低于設定溫度時,則馬上開啟PID計算,控制溫差逐漸趨近設定值,最終達到穩(wěn)態(tài)。/*溫度比較處理子程序*/ void compare_temper() unsigned char

24、i; if(set_temper>temper) /是否設置的溫度大于實際溫度 if(set_temper-temper>2) /設置的溫度比實際的溫度是否是大于2度 high_time=100; /如果是,則全速加熱low_time=0; else /如果是在0.8到2度范圍,則開始降溫 if(set_temper-temper>0.8)high_time=0; low_time=100;else /如果溫差小于0.8度,運行PID計算for(i=0;i<10;i+) s=read_temp(); rin = s; / Read Input rout = PIDCal

25、c ( &spid,rin ); / Perform PID Interation if (high_time<=100) high_time=(unsigned char)(rout/1000); elsehigh_time=100; low_time= (100-high_time); else if(set_temper<=temper) /是否設置的溫度小于實際溫度 if(set_temper-temper<0) high_time=0; low_time=100; /全速降溫 else /實際溫度大于設定溫度,馬上開啟PID計算 for(i=0;i<1

26、0;i+) s=read_temp(); rin = s; / Read Input rout = PIDCalc ( &spid,rin ); / Perform PID Interation if (high_time<100) high_time=(unsigned char)(rout/10000); elsehigh_time=0; low_time= (100-high_time); /*/液晶顯示程序液晶顯示器用于顯示水溫的實際溫度和設定溫度。首先對LCD12864進行初始化,并讀取控制器當前狀態(tài),判斷是否準備好(空閑)。然后向液晶模塊寫入指令代碼,進行顯示準備,將

27、要水溫以十六進制代碼的形式送入液晶顯示緩沖區(qū),最后利用讀顯示數(shù)據(jù)指令控制液晶模塊在相應位置顯示水溫數(shù)據(jù)。液晶顯示程序如下:/*LCD12864初始化*/void init_lcd()/lcd_psb=1;write_com(0x34);/擴充指令集delay1(2);write_com(0x30);/基本指令集delay1(2);write_com(0x02);/顯示歸位delay1(2);write_com(0x01);/清屏顯示delay1(2);write_com(0x0c);/顯示狀態(tài)開關delay1(2);write_com(0x06);/顯示光標移動設置delay1(2);/*寫數(shù)據(jù)*/void write_date(uchar date)read_busy();lcd_rs=1;delay(5);lcd_rw=0;delay(5);lcd_date=date;lcd_en=0;delay(5);lcd_en=1;delay(5);lcd_en=0;delay(5);/*寫指令*/void write_com(uchar com)read_busy();lcd_rs=0;delay(5);lcd_rw=0;delay(5);lcd_date=com;lcd_en=0;delay(5);lcd_en=1;delay(5);l

溫馨提示

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

評論

0/150

提交評論