【摘要】此水溫控制系統(tǒng)以單片機(jī)AT89S52為核心控制器,溫度由DS18B20數(shù)字溫度傳感器進(jìn)行采集。為了更精確的測(cè)溫,本系統(tǒng)采用三點(diǎn)測(cè)溫,并采用PID算法進(jìn)行水溫控制,使溫度能夠自行調(diào)節(jié)。
【關(guān)鍵詞】AT89S52單片機(jī);DS18B20;可控硅;PID算法控制;LCD1602
1.引言
溫度控制在生產(chǎn)生活中應(yīng)用都十分廣泛,但其控制過(guò)程中存在著很大的時(shí)滯性和極強(qiáng)的干擾性,因此,如何很好地控制溫度是評(píng)價(jià)一個(gè)溫度控制系統(tǒng)優(yōu)劣的關(guān)鍵之處。PID控制是按設(shè)定值和被控量偏差的比例、積分和微分進(jìn)行控制的一種控制方法。PID控制在控制理論中占有舉足輕重的地位,由于其結(jié)構(gòu)簡(jiǎn)單、穩(wěn)定性好、工作可靠、調(diào)整方便,被廣泛應(yīng)用于包括溫度控制的各種控制過(guò)程中。
本課題是設(shè)計(jì)一個(gè)水溫自動(dòng)控制系統(tǒng),設(shè)定溫度是80度,從40度對(duì)500mL的水加熱,在多種環(huán)境下,達(dá)到80度的時(shí)間不超過(guò)5分鐘,溫度最后穩(wěn)定在80度左右的調(diào)整時(shí)間不超過(guò)4分鐘,超調(diào)量不大于5%。
2.總體設(shè)計(jì)方案
本系統(tǒng)主要由單片機(jī)控制模塊、溫度檢測(cè)模塊、可控硅控制電路模塊、加熱電路、矩陣鍵盤(pán)、液晶顯示模塊等部分組成。其整體設(shè)計(jì)框圖如圖1所示:
圖1 系統(tǒng)框圖
圖2 控制電路
本系統(tǒng)主要以單片機(jī)AT89S52為核心,基于自動(dòng)控制原理與PID算法,根據(jù)不斷掃描測(cè)量的溫度值對(duì)電爐進(jìn)行反饋調(diào)節(jié),從而對(duì)溫度實(shí)現(xiàn)精確的調(diào)節(jié)。
溫度傳感器DS18B20將測(cè)得的溫度數(shù)據(jù)傳輸給單片機(jī)AT89S52,單片機(jī)來(lái)調(diào)整PWM波的占空比,通過(guò)驅(qū)動(dòng)電路對(duì)可控硅進(jìn)行控制完成對(duì)電爐的通斷電控制,從而控制其功率,達(dá)到調(diào)節(jié)水溫的目的。
3.各個(gè)模塊電路設(shè)計(jì)
(1)主控部分:由于本控制系統(tǒng)并不復(fù)雜,故選擇Atmel公司的AT89S52單片機(jī)作為CPU。
(2)溫度采集部分:本系統(tǒng)選擇使用數(shù)字溫度傳感器DS18B20檢測(cè)溫度。其溫度測(cè)量精度較高,能夠達(dá)到0.0625度以上精度。為了更精確測(cè)量,采用多點(diǎn)測(cè)溫的方法,本系統(tǒng)中選用三點(diǎn)測(cè)溫。
(3)鍵盤(pán)設(shè)置部分:本系統(tǒng)選擇4*4矩陣鍵盤(pán)作為輸入部分,用來(lái)輸入預(yù)設(shè)溫度、開(kāi)啟與關(guān)閉加熱、調(diào)節(jié)時(shí)間等。
(4)顯示模塊:本系統(tǒng)用LCD1602顯示設(shè)定溫度、當(dāng)前溫度、時(shí)間及加熱部分現(xiàn)在處于加熱還是停止加熱的狀態(tài)。
(5)控制加熱部分:由于本系統(tǒng)要控制電熱爐加熱,功率較大,因此需要借助功率電路。設(shè)計(jì)中我們使用光耦+可控硅,簡(jiǎn)化電路的制作。其控制部分電路圖如圖2所示。
4.系統(tǒng)程序設(shè)計(jì)
(1)主程序流程
圖3 主程序流程圖
(2)PID算法
PID算法原理框圖如圖4所示:
圖4 PID算法原理框圖
PID算法的一般表達(dá)式為:
溫度PID調(diào)節(jié)器有三個(gè)可設(shè)定參數(shù),即比例放大系數(shù)Kp、積分時(shí)間常數(shù)Ki、微分時(shí)間常數(shù)Kd。比例調(diào)節(jié)的作用是使調(diào)節(jié)過(guò)程趨于穩(wěn)定,但會(huì)產(chǎn)生穩(wěn)態(tài)誤差;積分作用可消除被調(diào)量的穩(wěn)態(tài)誤差,但可能會(huì)使系統(tǒng)振蕩甚至使系統(tǒng)不穩(wěn)定;微分作用能有效的減小動(dòng)態(tài)偏差。
P1D算法的離散化表達(dá)式為:
其中,上式中k表示第k次采樣,r(k)為設(shè)定溫度,c(k)為實(shí)際水溫,M(k)為電爐功率控制量,誤差為e(k)=r(k)-c(k)。
PID算法的輸出形式為一PWM波,通過(guò)PID算法調(diào)節(jié)PWM波形的占空比,使電爐在一周期內(nèi)開(kāi)通的時(shí)間可調(diào),這樣就可以調(diào)節(jié)電熱爐的功率進(jìn)而控制溫度的變化,使水溫穩(wěn)定在設(shè)定值,從而使精度提高。
(3)PID參數(shù)的整定
對(duì)一個(gè)控制系統(tǒng)而言,控制質(zhì)量的好壞取決于參數(shù)整定是否合理。PID參數(shù)整定主要有兩類(lèi),理論整定法和工程整定法。理論整定法主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過(guò)理論計(jì)算確定控制器參數(shù)。這種方法所得到的計(jì)算數(shù)據(jù)未必可以直接用,還必須通過(guò)工程實(shí)際進(jìn)行調(diào)整和修改。工程整定法主要依靠控制經(jīng)驗(yàn),直接在系統(tǒng)運(yùn)行時(shí)進(jìn)行調(diào)整。因此本實(shí)驗(yàn)采用經(jīng)驗(yàn)法即試湊法來(lái)確定PID的參數(shù)。
試湊時(shí),對(duì)參數(shù)整定實(shí)行先比例、后積分,再微分的整定步驟。
首先確定比例部分。將比例參數(shù)由小變大,并觀(guān)察相應(yīng)的系統(tǒng)響應(yīng),直至得到反應(yīng)快、超調(diào)小的響應(yīng)曲線(xiàn)。如果系統(tǒng)沒(méi)有靜差或靜差已經(jīng)小到允許范圍內(nèi),并且對(duì)響應(yīng)曲線(xiàn)已經(jīng)滿(mǎn)意,則只需要比例調(diào)節(jié)器即可。
如果在比例調(diào)節(jié)的基礎(chǔ)上系統(tǒng)的靜差不能滿(mǎn)足設(shè)計(jì)要求,則必須加入積分環(huán)節(jié)。在整定時(shí)先將積分時(shí)間設(shè)定到一個(gè)比較大的值,然后將已經(jīng)調(diào)節(jié)好的比例系數(shù)略微縮小,然后減小積分時(shí)間,使得系統(tǒng)在保持良好動(dòng)態(tài)性能的情況下,靜差得到消除。在此過(guò)程中,可根據(jù)系統(tǒng)的響應(yīng)曲線(xiàn)的好壞反復(fù)改變比例系數(shù)和積分時(shí)間,以期得到滿(mǎn)意的控制過(guò)程和整定參數(shù)。
如果在上述調(diào)整過(guò)程中對(duì)系統(tǒng)的動(dòng)態(tài)過(guò)程反復(fù)調(diào)整還不能得到滿(mǎn)意的結(jié)果,則可以加入微分環(huán)節(jié)。首先把微分時(shí)間設(shè)置為0,在上述基礎(chǔ)上逐漸增加微分時(shí)間,同時(shí)相應(yīng)地改變比例系數(shù)和積分時(shí)間,逐步湊試,直到得到滿(mǎn)意的調(diào)節(jié)效果。
(4)PID算法程序
本系統(tǒng)PID控制的思路:
在第一次PID調(diào)節(jié)時(shí)記下PID調(diào)節(jié)器的輸出值uk0(該值為以后PID調(diào)節(jié)器輸出的最大值),并以該值為參考,以后的輸出uk與uk0做比值,假設(shè)uk0表示加熱a,那么輸出uk與uk0比值表示加熱a*uk/uk0時(shí)間,以此類(lèi)推,最后算出每次計(jì)算應(yīng)該加熱的時(shí)間作用于可控硅,控制電爐加熱。由于溫度變化緩慢,則設(shè)置為5s計(jì)算PID一次。
另外本系統(tǒng)的PID采用了開(kāi)關(guān)量計(jì)算——積分分離相結(jié)合的改進(jìn)PID算法,具體思路是:
1)當(dāng)溫差>=15度時(shí),不用PID直接進(jìn)行加熱。
2)當(dāng)溫差在0-15度之間時(shí),采用PID計(jì)算。
①當(dāng)溫差>5度時(shí),采用PD控制加快響應(yīng)速度并減少超調(diào);
②當(dāng)溫差<5度時(shí),采用PID控制保證系統(tǒng)的穩(wěn)態(tài)精度。
PID程序如下:
void PID(void)
{ float ek,ek1,ek2,ek_sum;
uint a; ek=K-temp; //計(jì)算誤差
while(1)
{ if(ON_OFF==1) //溫控開(kāi)關(guān)開(kāi)
{ if(ek>=15)
{outflag=1;OUT=0;Time_on=100; break;} //溫差大于15度,不用PID調(diào)節(jié)
else if(ek<0)
{ek=0;outflag=0; OUT=1;Time_on=0;break;} //溫差小于等于0不調(diào)節(jié)
else
{ if(ek>5)
a=0;
if(ek<5)
a=1;
ek2=ek1;
ek1=ek;
ek_sum+=ek;
uk=kp*ek+ki*ek_sum+kd*(ek1-ek2); //計(jì)算PID輸出uk if(start_flag==0)//PID運(yùn)算標(biāo)志位
{
uk0=uk; //uk初值,用于參考以后uk加熱時(shí)間
start_flag=1;
div=100/uk0;
} //開(kāi)始PID計(jì)算
else if(start_flag==1)
{ //加熱片加熱時(shí)間
Time_on=uk*div;
OUT=0;
outflag=1;
}
break;}
} else{outflag=0;OUT=1;break;} //不加熱
}
}
5.實(shí)驗(yàn)數(shù)據(jù)及結(jié)果分析
經(jīng)過(guò)多次測(cè)量,確定了測(cè)溫過(guò)程中的幾個(gè)指標(biāo):
從起始溫度到設(shè)定溫度經(jīng)歷的時(shí)間:t(min);
使其達(dá)到設(shè)定溫度的調(diào)整時(shí)間:t*(min);
達(dá)到設(shè)定溫度的超調(diào)量:Δ%。
其測(cè)量結(jié)果如表1所示。
通過(guò)上表的數(shù)據(jù)分析,各項(xiàng)指標(biāo)均滿(mǎn)足要求。
6.結(jié)束語(yǔ)
本系統(tǒng)設(shè)計(jì)采用單片機(jī)AT89S52為控制中心,利用DS18B20采集溫度,采用PID算法對(duì)水溫進(jìn)行控制系統(tǒng),具有成本低、控制可靠等優(yōu)點(diǎn)。經(jīng)過(guò)多次測(cè)試,驗(yàn)證了該水溫控制系統(tǒng)達(dá)到了較高的精確度,滿(mǎn)足要求。
參考文獻(xiàn)
[1]黃勤.單片機(jī)原理及應(yīng)用[M].清華大學(xué)出版社.
[2]劉金琨.先進(jìn)PID控制MATLAB仿真(第3版)[M].電子工業(yè)出版社.
[3]明鑫,陳可中,王戎丞,等.基于單片機(jī)的水溫控制系統(tǒng)[J].現(xiàn)代電子技術(shù),2005(6):1-2.
[4]胡焱,周超,沈家慶,等.基于單片機(jī)的水溫控制系統(tǒng)設(shè)計(jì)[J].通信技術(shù),2007(8):31-33.
作者簡(jiǎn)介:
焦晶晶,現(xiàn)就讀于鄭州大學(xué)信息工程學(xué)院電子信息工程學(xué)院。
王飛虎,現(xiàn)就讀于鄭州大學(xué)信息工程學(xué)院電子信息工程學(xué)院。