李 海,羅 佳
(電子科技大學成都學院 微電子技術系,成都 611731)
溫室大棚種植蔬菜已成為不可或缺的種植方式,特別是在嚴寒的冬季,溫度太低不利于大部分蔬菜的種植和生長,在溫室大棚如果不控制好溫度,有可能會造成蔬菜大棚收入全無?,F今很多溫室大棚都引入了恒溫控制系統,但大部分恒溫控制系統不靈敏,當沒達到目標溫度時加熱器就滿額全功率工作,一旦設備當前溫度達到目標溫度就不再進行控制,因加熱設備具有一定的慣性,最終導致溫度超標,難以精確控制溫度、誤差大且非線性。因此,筆者針對上述問題設計出了一種基于改進PID算法的高精度、高響應速度的溫度控制系統,可以應用于溫室大棚種植蔬菜。
本系統以STM32為核心處理器,當系統啟動時自動從24C02中查找上一次的參數和數據。若無數據或欲修改數據,用戶可通過按鍵設置想要達到的溫度值。然后處理器開始每200ms通過DS18B20采集一次溫度數據,并將解算后的當前溫度值傳入改進PID算法中[1,2],最終計算得到一個輸出值,由這個值來調整PWM波的脈寬,進而控制繼電器工作,由繼電器的導通與關斷實現對PTC加熱器的控制。為了更好地監測程序運行效果,使用OLED將當前溫度值,設定溫度值以及PID算法輸出值進行顯示。
系統可分為六大部分:電源部分,測溫部分,PTC加熱部分,存儲部分,按鍵與顯示部分,系統總體框圖如圖1所示。

圖1 系統總體框架圖
主控芯片是基于ARM-CortexM3內核的STM32F103ZET6,其最低工作電壓2V,最高工作電壓3.6V,且為低功耗器件,該芯片具有高效運算性能。在溫控系統中結合外圍硬件電路實現了溫度的實時采集、目標溫度的設定、加熱和人機交互功能,是整個系統的大腦[3~5]。
顯示設備為一塊0.96英寸的OLED。其最低工作電壓3.0V,最高工作電壓5.5V。本次實驗選擇OLED為黑底藍字。整個屏幕分為8頁,每頁128Byte,即分辨率為128×64。共四根引腳:VCC、SCL、SDL、GND。顯示模塊與主控芯片之間通信采用IIC通信協議,STM32控制OLED顯示圖片、漢字、英文字符等。OLED具有可調設備地址,由硬件電路焊接電阻調節,其地址值為:0×78、0×7A。本實驗使用地址0×78。因其無需背光源,為OLED自發光,故而顯示成像優異。
測溫芯片為DS18B20,共有三根引腳:VDD、DQ、GND。芯片內部含有64位ROM存儲序列號,根據序列號可以唯一確定此設備。本次實驗的溫度測量范圍低于100℃,而DS18B20工作溫度范圍為-55℃至+125℃,符合設計要求。其轉換溫度時間受轉換精度影響。DS18B20的采集分辨率越高,轉換時間越長。本實驗采用10位精度(±0.25℃),并在187毫秒內將溫度轉換完成。
芯片最低工作電壓3.0V,最高工作電壓5.5V。此外,若電源線不夠,它可以通過數據線DQ供電。本設計為簡化實驗操作,使用查詢方式采集溫度數據,故采用外置電源,電路如圖2所示。

圖2 溫度傳感器電路原理圖
因系統工作過程中的PID參數以及用戶歷史操作數據需要保存,故在系統中引入了存儲器件AT24C02,該芯片為EEPROM,具有掉電不丟失功能。芯片具有8根引腳:A0、A1、A2、SDL、SCL、WP、GND、VCC。存儲芯片與主控芯片之間的通信方式是采用I2C通信協議[6]。設備地址由3位地址引腳A0、A1、A2調整,本實驗中24C02地址為0XA0。對芯片操作時,必須指定操作的芯片地址。WP為寫保護位,用來保護芯片是正常讀寫。當該引腳置低時,允許數據正常讀寫。
因此在電路中A0、A1、A2引腳由硬件拉低,表示地址號0XA0。WP引腳由硬件接地,表示允許電路讀寫。SCL與SDA引腳接上拉電阻,表示空閑狀態為高電平,電路設計如圖3所示。

圖3 存儲模塊電路原理圖
本系統采用了PTC加熱板來進行溫度控制模塊。PTC加熱板為陶瓷加熱型材料,具有升溫快,功耗低,操作安全的特點。其工作電壓為12V,因為其工作時電阻自身發生變化,故能實現較低功耗以達到恒溫發熱的目的,最高升溫至110℃,最高功率10W。在系統中使用繼電器控制PTC加熱板的導通與關斷,通過PID算法程序輸出結果來決定繼電器工作或者關閉,進而控制溫度達到目標值。
傳統的PID控制算法通過P(比例)、I(積分)、D(微分)三個參數的調整來進行控制溫度,非常依賴精確的數學模型[7~9],其數學模型為:

根據POUT、IOUT、和DOUT的計算結果綜合在一起輸出,即:OUT=POUT+IOUT+DOUT,這種算法稱為PID位置式控制。將式(1)~式(3)分別代入PID的各項輸出,可得:

由可知,u(t)即為算法輸出,這種位置式PID算法廣泛應用于傳統的溫度控制系統。但是其缺點是PID參數不是隨著系統溫度的變化而進行實時修正的,為此其傳統的溫度控制系統非線性、時滯性和時變性差,由于外界溫度復雜多變,所以本文提出一種改進性算法,進而提供系統的自適應性。這種改進PID算法是將外界溫度的變化通過溫度傳感器實時傳給主控芯片,主控芯片做出處理,將實時溫度T帶入整個傳統的PID算法中[10],其具體過程如圖4所示。

圖4 改進PID算法控制器結構
改進后的PID數學模型為:

從上面數據模型可以看出將實時溫度T引入到整個PID算法中,適時修正PID參數,從而使得整個溫度控制系統更加精確。
當主控板上電后,則初始化系統SysTick,并由此時鐘可得精確延時函數,以供后續模塊操作。隨后初始化LED、OLED、按鍵、DS18B20與AT24C02。寫入OLED功能命令,使OLED正常顯示為系統提供交互界面。
因DS18B20轉換時間為187ms,故初始化定時器Timer2為2ms中斷,在定時器中斷函數中累加時間計數。時間到達與否,由其他子程序模塊檢測。因PID算法執行周期與PWM周期分別為500ms、200ms,故增加定時器Timer3為1ms中斷,在定時器中斷函數里分別累加計數值,當計時到達執行周期則相應子模塊執行一次PID算法。OLED顯示用戶上一次操作的情況并允許用戶通過按鍵更改參數。隨后讀取DS18B20溫度值并進行PID算法計算,實現控制PTC加熱器。整體軟件系統框圖如圖5所示。

圖5 程序整體框圖
因理論值具有相當大的誤差,仍然需要根據程序調整參數,故本設計直接根據實驗結果實現參數的確立,理論的計算僅供調整參數時參考[11,12]。在仿真時設定溫度為45℃作為系統的恒定溫度,系統開啟后最終穩定在該目標溫度。選取多組KP、Ki和Kd值實驗,并根據所得結果畫出折線圖如圖6~圖8所示。

圖6 Kp仿真圖

圖7 Ki仿真圖

圖8 Kd仿真圖
從仿真圖可以看出在設定溫度為45℃時,KP=45、Ki=775000和Kd=886時系統為最優。系統上電開始,等待用戶輸入參數值,隨后PID算法工作,并且LED燈閃爍提示系統運行正常。當DS18B20第一次達到溫度值時,溫度會持續上升,隨后溫度下降并在設定值SV左右波動,實驗結果如圖9所示。

圖9 仿真實驗結果
將改進PID算法控制系統進行建模,進行仿真,記錄數據,從結果上可以看出溫控系統響應快、控制靈敏、能承受較大干擾且實際誤差為0.05℃,最終將模型上板也得到了該結果驗證。
為了提高溫度控制在各個領域的精確度和響應速度,筆者設計出了基于改進PID算法的溫度控制系統,通過仿真和具體電路驗證表明該系統比傳統的PID控制系統誤差更小,響應時間更快,提升了溫度控制效果,達到了恒溫精準、自動控制的目的。