闞永彪



摘要:為實現特定環境下的水溫調試功能,此研發系統使用PID算法的單片機調試功能。此系統采用STC89C52單片機作為系統的控制核心,并采用軟件編程,將PID算法與電力電子技術相結合以此控制PWM波的產生,繼而控制有加熱功能的電子器件來進行溫度的控制,并需要以對各項參數的計算調整來寫出單片機各項程序,用來提升溫度的增長速率等各項其他能力。
關鍵詞:PID算法 單片機 PWM波 溫度控制
一、水溫調試系統設計必要性
溫度控制,在很多場合下是確保生產過程及其他過程的順利進行的基礎,可以更好地提高生產效率,節約資源能源。對于溫度信息的嚴格掌握和把控是很多生產制造環節的重要步驟之一。一個合格的溫度檢測系統應該具有從計算、測量以及調整等步驟再到通過控制電子器件的加熱功率以實現水溫控制為結束的全過程。
由于現在國內外的市場上銷售的溫度控制系統基本是運用模電加數字化電路組成,會有可控制性能差,電路復雜,外界環境影響較大,工作產生噪音等缺點。為了改善這些缺點,通過更加智能且便捷的方式來實現水溫調試的功能,我們用AT89C51單片機作為系統核心,將PID算法加入單片機運行中而構建出溫度控制的專屬系統,從而實現水溫調試。
二、設計要求及主要內容
(一)基本要求
人工設定在一千瓦的電熱爐在加熱一升水時有可控范圍,在外界環境的溫度變化時可以自主地進行調整為最初設定范圍,保證系統初始溫度趨于初值。
(二)主要性能指標
1.設定溫度的范圍在20~70℃。
2.若外界環境溫度變化,則內部的溫度變化精度要小于等于0.1℃。
3.用十進制數碼管顯示水的溫度。
(三)拓展功能
1.運用合適的控制方法,在設定的溫度發生突變時,盡量以較少的時間恢復或者調整到溫度變化的初值。
2.溫度控制的靜態誤差小于等于0.2℃。
三、系統設計原理
(一)水溫控制系統總體框圖。
該框圖是水溫控制系統的主要運轉模式,其主要分為溫度采樣轉換器、溫控電路、顯示電路以及STC89C52控制系統等四部分組成。
(二)總體方案設計
將單片機STC89C52作為系統的核心。單片機處理器可以在處理調整溫度的同時保證溫度穩定,而且STC89C52編程簡單,控制穩定且靈活,能夠讓系統實現簡單的溫度的控制及顯示,也可以利用軟件編程達到其他控制系統的優點。在溫度采樣部分我們采用數字溫度傳感器DS18B20。DS18B20在是通過一總線結構去采集或者控制溫度,有經濟實用,精度較高,采集速度快等適用于本系統的優點。DS18B20測量范圍為-55℃~+125℃,在-10℃~+85℃范圍內。它自身內部有ROM,溫度傳感器和其他寄存器,可直接進行溫度的采樣和數字轉換,可以不用外接電路。控制電路部分我們使用STC89C52單片機。此單片機內部擁有內部存儲器和不同功能的各類寄存器額,且其I/O較多,便于控制電路的搭建。在加熱和功率電路方面可采用可控硅控制加熱器。可控硅加熱的導通關斷可以實現控制加熱的原理,可以使用在單片機控制下的PWM波的產生來控制可控硅晶閘管的導通關斷,這樣做還可以提高加熱效率,使溫度控制更加準確。
四、硬件電路設計
(一)溫度采樣轉換電路
我們所設計的溫度采集和轉換電路由DS18B20芯片為核心,DS18B20的溫度采集范圍在-55℃~+125℃,并且在-10℃~+85℃范圍中,無需備用電源。該芯片采用單總線通信技術,通信功能穩定不移,且電路不會復雜,所以方便于實現電路搭建。
DS18B20可以在采集并讀取的同時,還可以直接與單片機進行通信,高效地直接輸出數字量,設計的重點放在單片機控制核心即可。
(二)溫度控制電路
采用雙向可控硅和光電耦合器的組合來搭建溫控電路,如圖MOC3041功率電路所示。并利用脈寬調制電路所輸出的濾波控制電熱爐和電源之間的接通斷開比。在光電耦合器MOC3041的內部有發光晶閘管,檢測電路和一個雙向可控硅。如果單片機輸出高電平脈沖,那么光電耦合器MOC3041內部的發光二極管就會導通發出光亮信號,然后同步作用于過0檢測電路,在過零檢測后,內部可控硅檢測信號之后立即導通,這個線路導通可以觸發雙向可控硅晶閘管的導通,在負載中此時就會有電流存在。而如果單片機輸出低電平脈沖時,據上述一系列步驟光電耦合器內部不會導通,不產生光亮信號然后截止雙向可控硅的導通,此時的負載中將不會存在電流。光電耦合器作為接受單片機信號的第一接受器同時要向雙向可控硅發出運作信號,是一個關鍵的中間過渡裝置,通過過零觸發的雙向可控的晶閘管在此系統中是組成光電耦合的輸出級,同時負責關斷和導通電路的運行,從而控制加熱溫度的時間段。
(三)單片機控制部分
單片機控制部分采用單片機STC89C52作為系統核心,這一部分也是整個系統的核心部分。該系統由于其不需要外部電路設計的拓展所以將會大大縮減硬件電路的設計。
(四)按鍵及顯示部分
采用LCD1602液晶顯示器作為顯示部分,此器件的顯示部分快速簡單且易于編程控制,方便操控,并且其相對其他顯示模塊更適用于溫度顯示。
五、軟件設計
因為需要電路的硬件設計盡量簡單化,所以該系統的編程將會作為主要的工程部分攻克。
程序流程圖如圖2所示。
PID算法控制PWM輸出
void timer0() interrupt 1
{
uchar flag;
TH0=0xd8 ;
TL0=0xf0 ;
TR1=1 ;
24=1 ; //啟動輸出
CJ++;
if(stemp>Wtemperature)
{
ei=stemp-Wtemperature;
E=E+ei;
ex=ej-ei;
ej=ei;
if(ei<6)
{Ui=U0-Kp*(ei+Ti*E-Td*ex);}
else
Ui=U0-Kp*ei;
flag=Ui/100;
switch(flag)
{
case 9:{TH1=0xdc;TL1=0xd8;}break;
case 8:{TH1=0xe2;TL1=0xb4;}break;
case 7:{TH1=0xe8;TL1=0x90;}break;
case 6:{TH1=0xec;TL1=0x78;}break;
case 5:{TH1=0xf0;TL1=0x60;}break;
case 4:{TH1=0xf2;TL1=0x54;}break;
case 3:{TH1=0xf4;TL1=0x48;}break;
case 2:{TH1=0xf8;TL1=0x30;}break;
case 1:{TH1=0xfc;TL1=0x18;}break;
case 0:{TH1=0xfd;TL1=0xa8;}break;
default:{TH1=0xff;TL1=0xfa;}break;
}
}
else {TH1=0xff;TL1=0xfa;}
}
程序使用T0和T1的互相嵌套來實現對PWM波的控制,T1是用來控制PWM波的占空比,T0被設定為控制PWM波的頻率。
18317.jpg
單片機軟件會實現PID控制PWM波的功能。我們使用T0和T1的相互嵌套設定定時器,其中將在程序中設定T0為10ms高電平,將T1作為低電平嵌套輸出PWM波,控制PWM波的輸出。
六、總結
設計過程的難題及解決,由于直接接入了220V電壓,導致當電路通電時單片機的溫度突然升高,為了解決散熱問題,在電路板上加入了散熱板。
由于溫度傳感器DS18B20的特性是無法直接在水中采集溫度,為了解決水中測溫問題,將溫度傳感器包裹在導熱性能相對來說不錯且不會燒壞溫度傳感器的情況下,再進入水中進行測量。
參考文獻
[1]黃惟公,鄧成中,王燕.單片機原理與應用技術[M].西安:西安電子科技大學出版社
[2]魏雅.基于單片機的多功能火災報警器的設計與研究[J]無線互聯科技2017年6期
[3]賈利娜.基于STM32的無線溫度采集系統設計[J]電腦知識與技術2016年11期