艾 誠,韓峻峰
(1.廣西科技大學,廣西 柳州545006;2.廣西機電職業技術學院,廣西 南寧530007)
溫度的變化影響各種系統的自動運作,例如冶金、機械、食品、化工等工業中,廣泛使用各種加熱爐、散熱處理、反應爐等,要求對工件的溫度進行控制。對于不同的控制系統,其適宜的溫度總是在一個范圍,超過這個范圍,系統或許會停止運行或遭受破壞,因此必須能實時獲取溫度的變化,對于超過適宜范圍的溫度能夠報警。同時也希望在適宜溫度范圍內可以由檢測人員根據實際情況加以改變。溫度控制在工業及日常生活中應用廣泛,分類較多,不同溫度控制系統的控制方法也不盡相同,其中以PID控制法最為常見。
本設計采用STC89C52單片機為處理器,利用溫度傳感器DS18B20采集溫度,結合Keil軟件編程[1],實現用PID算法來控制PWM波形的產生,進而控制加熱電阻以實現溫度控制。該設計利用Proteus仿真為基礎,再結合單片機最小系統調試驗證結果。系統的總體結構框架圖如圖1所示。

圖1 系統總體結構圖
本溫度閉環控制系統由溫度傳感器、控制器、PWM控制模塊、加熱電路、鍵盤和顯示模塊等部分組成。單片機選用宏晶科技推出的新一代高速、低功耗、超強抗干擾的單片機STC89C52RC[2]。溫度經過DS18B20傳感器模塊傳給控制器,控制器根據檢測值與設定值的偏差,計算PID控制值,其結果通過PWM模塊控制加熱電路功率,實現對溫度的控制。系統硬件電路原理圖如圖2所示。

圖2 系統硬件電路原理圖
系統采用美國DALLS半導體公司生產的一種改進型溫度傳感器DS18B20,與傳統的熱敏電阻等溫度元件相比,它無需A/D轉換能直接讀出被測溫度值,而且可根據實際要求,通過簡單的編程實現9~12 bit數字值讀數方式[3]。其測量范圍為-55℃~+125℃,在-10℃~+85℃間精度達到±0.5℃。溫度傳感電路如圖3所示。

圖3 溫度傳感電路
加熱電路采用一個PNP三極管S8550驅動一個15Ω/2 W的功率電阻進行加熱。
本系統的控制對象是溫度傳感器的溫度,也就是控制加熱電阻的加熱或不加熱。而在加熱電阻上是否有電流流過,則取決于8550三極管的通斷與否,因此其控制電路如圖4所示。從單片機P1.5口出來的方波電壓直接加到8550的基極上來控制三極管的通斷,同時可根據設置溫度與適時溫度的比較進行相應的報警。當實時溫度低于設置溫度時,加熱電阻持續加熱直到其溫度達到設置溫度,蜂鳴器就會報警,且該溫度會保持設置溫度不再加熱(其誤差溫度為1℃)。

圖4 加熱電路
運用LCD1602作為顯示模塊,按照并聯總線接法連接,LCD1602數據口接單片機的P0口,液晶顯示模塊如圖5所示。

圖5 LCD1602顯示模塊
LCD1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的兩條線是背光電源線。該模塊用D0~D7作為8 bit雙向數據線,4 bit數據分兩次傳送,可以節省CPU的I/O口資源[4]。
VSS、VDD分別接地和5V電源。VEE為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高。RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。E(或EN)端為使能(Enable)端,下降沿使能。DB0~DB7為雙向數據總線。
系統程序主要包括主程序、初始化子程序、PID計算子程序、溫度比較處理子程序、延時子程序、T0中斷服務子程序和DS18B20驅動程序等。主程序流程圖如圖6所示。

圖6 主程序流程圖
本設計采用的STC89C52單片機雖然不具有4路16位的可編程計數器陣列(SPA)或8位的可調制脈沖輸出 (PWM)模塊,但在本設計中,利用軟件編程,通過PID控制,調整PWM占空比,通過P1.5口輸出PWM信號,去控制外圍加熱電路。PWM的輸出頻率決定于PCA定時器的時鐘源。PCA定時器的時鐘輸入源有4種可供選擇,分別是Fosc/12、Fosc/2、定時器0的溢出頻率以及P3.4/ECT的輸入頻率。由于PWM是8位的,因此PWM的輸出頻率=PCA時鐘輸入頻率/256。本設計采用的是定時器0的溢出頻率作為PCA的時鐘輸入,這樣可以通過設置定時器0的計數值改變PWM的頻率。本設計先進行溫度比較,再采用定時器0中斷來實現PWM輸出,從而實現溫度的實時控制。
PID調節器是一種線性調節器,它將給定值R(t)與實際輸出值C(t)的偏差的比例(P)、積分(I)、微分(D)通過定值線性組合構成控制量,對控制對象進行控制。其模擬PID控制系統原理框圖如圖7所示。

圖7 模擬PID控制系統原理框
PID調節器的微分方程為:

其中,Kp、Kt、Kd分別為比例放大系數、積分常數、微分常數,T為采樣周期。PID計算子程序的主要功能是根據設置的PID參數[5]進行計算。PID計算的子程序如下:

現利用Keil編輯程序結合Proteus所做的原理圖進行仿真處理,仿真結果可以達到設計要求。本設計制作了硬件設計實物,通過PID控制,當加熱電阻靠近溫度傳感器時,測量溫度明顯上升,并達到31℃(設置溫度)。此后加熱變緩,溫度維持在31℃,系統溫度誤差精度可達到±1℃之內,并且用蜂鳴器發出鳴響。當加熱電阻離開溫度傳感器,測量溫度會降低,當實測溫度低于設置溫度,蜂鳴器不響。再次設置溫度,當加熱電阻再次靠近溫度傳感器時,測量溫度又明顯上升到設置溫度。
為了更好地觀察實驗結果,證明仿真結果的可靠性,體現本設計對溫度控制的穩定性和精確性,經過多次設置不同的溫度,實驗記錄數據如表1所示。從記錄數據分析可知,本設計達到了預期的設計目標,控制溫度誤差范圍在±1℃之內。

表1 實驗結果數據
本系統以單片機為控制核心,采用PID算法進行溫度閉環控制,具有控制精度高,能夠克服容量滯后的特點,特別適用于負荷變化大、容量滯后較大、控制品質要求高的控制系統[6-7]。以DS18B20溫度傳感器設計的溫度閉環控制系統線路簡單、硬件少、成本低廉、軟件設計簡單,尤其是其具有完善的單總線通信協議,無需復雜的布線,只需3根連線就能很容易地組成多點測溫系統,因此在工農業生產和科學研究中有著廣闊的應用前景[8]。
[1]胡壽松.自動控制原理[M].北京:科學出版社,2002.
[2]馬淑華,王鳳文,張美金,等.單片機原理與接口技術[M].北京:北京郵電大學出版社,2005.
[3]黃建偉.基于DS18B20無線溫度測量系統[J].煤礦機械,2008,29(7):118-119.
[4]潘新民,王燕芳.微型計算機控制技術實用教程[M].北京:電子工業出版社,2006.
[5]譚浩強.C程序設計[M].北京:清華大學出版社,1991.
[6]呂俊亞.一種基于單片機的溫度控制系統設計與實現[J].計算機仿真,2012,29(7):230-233.
[7]葉丹,齊國生,洪強寧,等.基于單片機的自適應溫度控制系統[J].傳感器技術,2002,21(3):27-30.
[8]趙娜,趙剛,于珍珠,等.基于51單片機溫度測量系統[J].微計算機信息,2007,(12):146-148.