李 海,羅 佳
(電子科技大學(xué)成都學(xué)院 微電子技術(shù)系,成都 611731)
溫室大棚種植蔬菜已成為不可或缺的種植方式,特別是在嚴(yán)寒的冬季,溫度太低不利于大部分蔬菜的種植和生長(zhǎng),在溫室大棚如果不控制好溫度,有可能會(huì)造成蔬菜大棚收入全無。現(xiàn)今很多溫室大棚都引入了恒溫控制系統(tǒng),但大部分恒溫控制系統(tǒng)不靈敏,當(dāng)沒達(dá)到目標(biāo)溫度時(shí)加熱器就滿額全功率工作,一旦設(shè)備當(dāng)前溫度達(dá)到目標(biāo)溫度就不再進(jìn)行控制,因加熱設(shè)備具有一定的慣性,最終導(dǎo)致溫度超標(biāo),難以精確控制溫度、誤差大且非線性。因此,筆者針對(duì)上述問題設(shè)計(jì)出了一種基于改進(jìn)PID算法的高精度、高響應(yīng)速度的溫度控制系統(tǒng),可以應(yīng)用于溫室大棚種植蔬菜。
本系統(tǒng)以STM32為核心處理器,當(dāng)系統(tǒng)啟動(dòng)時(shí)自動(dòng)從24C02中查找上一次的參數(shù)和數(shù)據(jù)。若無數(shù)據(jù)或欲修改數(shù)據(jù),用戶可通過按鍵設(shè)置想要達(dá)到的溫度值。然后處理器開始每200ms通過DS18B20采集一次溫度數(shù)據(jù),并將解算后的當(dāng)前溫度值傳入改進(jìn)PID算法中[1,2],最終計(jì)算得到一個(gè)輸出值,由這個(gè)值來調(diào)整PWM波的脈寬,進(jìn)而控制繼電器工作,由繼電器的導(dǎo)通與關(guān)斷實(shí)現(xiàn)對(duì)PTC加熱器的控制。為了更好地監(jiān)測(cè)程序運(yùn)行效果,使用OLED將當(dāng)前溫度值,設(shè)定溫度值以及PID算法輸出值進(jìn)行顯示。
系統(tǒng)可分為六大部分:電源部分,測(cè)溫部分,PTC加熱部分,存儲(chǔ)部分,按鍵與顯示部分,系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框架圖
主控芯片是基于ARM-CortexM3內(nèi)核的STM32F103ZET6,其最低工作電壓2V,最高工作電壓3.6V,且為低功耗器件,該芯片具有高效運(yùn)算性能。在溫控系統(tǒng)中結(jié)合外圍硬件電路實(shí)現(xiàn)了溫度的實(shí)時(shí)采集、目標(biāo)溫度的設(shè)定、加熱和人機(jī)交互功能,是整個(gè)系統(tǒng)的大腦[3~5]。
顯示設(shè)備為一塊0.96英寸的OLED。其最低工作電壓3.0V,最高工作電壓5.5V。本次實(shí)驗(yàn)選擇OLED為黑底藍(lán)字。整個(gè)屏幕分為8頁,每頁128Byte,即分辨率為128×64。共四根引腳:VCC、SCL、SDL、GND。顯示模塊與主控芯片之間通信采用IIC通信協(xié)議,STM32控制OLED顯示圖片、漢字、英文字符等。OLED具有可調(diào)設(shè)備地址,由硬件電路焊接電阻調(diào)節(jié),其地址值為:0×78、0×7A。本實(shí)驗(yàn)使用地址0×78。因其無需背光源,為OLED自發(fā)光,故而顯示成像優(yōu)異。
測(cè)溫芯片為DS18B20,共有三根引腳:VDD、DQ、GND。芯片內(nèi)部含有64位ROM存儲(chǔ)序列號(hào),根據(jù)序列號(hào)可以唯一確定此設(shè)備。本次實(shí)驗(yàn)的溫度測(cè)量范圍低于100℃,而DS18B20工作溫度范圍為-55℃至+125℃,符合設(shè)計(jì)要求。其轉(zhuǎn)換溫度時(shí)間受轉(zhuǎn)換精度影響。DS18B20的采集分辨率越高,轉(zhuǎn)換時(shí)間越長(zhǎng)。本實(shí)驗(yàn)采用10位精度(±0.25℃),并在187毫秒內(nèi)將溫度轉(zhuǎn)換完成。
芯片最低工作電壓3.0V,最高工作電壓5.5V。此外,若電源線不夠,它可以通過數(shù)據(jù)線DQ供電。本設(shè)計(jì)為簡(jiǎn)化實(shí)驗(yàn)操作,使用查詢方式采集溫度數(shù)據(jù),故采用外置電源,電路如圖2所示。
圖2 溫度傳感器電路原理圖
因系統(tǒng)工作過程中的PID參數(shù)以及用戶歷史操作數(shù)據(jù)需要保存,故在系統(tǒng)中引入了存儲(chǔ)器件AT24C02,該芯片為EEPROM,具有掉電不丟失功能。芯片具有8根引腳:A0、A1、A2、SDL、SCL、WP、GND、VCC。存儲(chǔ)芯片與主控芯片之間的通信方式是采用I2C通信協(xié)議[6]。設(shè)備地址由3位地址引腳A0、A1、A2調(diào)整,本實(shí)驗(yàn)中24C02地址為0XA0。對(duì)芯片操作時(shí),必須指定操作的芯片地址。WP為寫保護(hù)位,用來保護(hù)芯片是正常讀寫。當(dāng)該引腳置低時(shí),允許數(shù)據(jù)正常讀寫。
因此在電路中A0、A1、A2引腳由硬件拉低,表示地址號(hào)0XA0。WP引腳由硬件接地,表示允許電路讀寫。SCL與SDA引腳接上拉電阻,表示空閑狀態(tài)為高電平,電路設(shè)計(jì)如圖3所示。
圖3 存儲(chǔ)模塊電路原理圖
本系統(tǒng)采用了PTC加熱板來進(jìn)行溫度控制模塊。PTC加熱板為陶瓷加熱型材料,具有升溫快,功耗低,操作安全的特點(diǎn)。其工作電壓為12V,因?yàn)槠涔ぷ鲿r(shí)電阻自身發(fā)生變化,故能實(shí)現(xiàn)較低功耗以達(dá)到恒溫發(fā)熱的目的,最高升溫至110℃,最高功率10W。在系統(tǒng)中使用繼電器控制PTC加熱板的導(dǎo)通與關(guān)斷,通過PID算法程序輸出結(jié)果來決定繼電器工作或者關(guān)閉,進(jìn)而控制溫度達(dá)到目標(biāo)值。
傳統(tǒng)的PID控制算法通過P(比例)、I(積分)、D(微分)三個(gè)參數(shù)的調(diào)整來進(jìn)行控制溫度,非常依賴精確的數(shù)學(xué)模型[7~9],其數(shù)學(xué)模型為:
根據(jù)POUT、IOUT、和DOUT的計(jì)算結(jié)果綜合在一起輸出,即:OUT=POUT+IOUT+DOUT,這種算法稱為PID位置式控制。將式(1)~式(3)分別代入PID的各項(xiàng)輸出,可得:
由可知,u(t)即為算法輸出,這種位置式PID算法廣泛應(yīng)用于傳統(tǒng)的溫度控制系統(tǒng)。但是其缺點(diǎn)是PID參數(shù)不是隨著系統(tǒng)溫度的變化而進(jìn)行實(shí)時(shí)修正的,為此其傳統(tǒng)的溫度控制系統(tǒng)非線性、時(shí)滯性和時(shí)變性差,由于外界溫度復(fù)雜多變,所以本文提出一種改進(jìn)性算法,進(jìn)而提供系統(tǒng)的自適應(yīng)性。這種改進(jìn)PID算法是將外界溫度的變化通過溫度傳感器實(shí)時(shí)傳給主控芯片,主控芯片做出處理,將實(shí)時(shí)溫度T帶入整個(gè)傳統(tǒng)的PID算法中[10],其具體過程如圖4所示。
圖4 改進(jìn)PID算法控制器結(jié)構(gòu)
改進(jìn)后的PID數(shù)學(xué)模型為:
從上面數(shù)據(jù)模型可以看出將實(shí)時(shí)溫度T引入到整個(gè)PID算法中,適時(shí)修正PID參數(shù),從而使得整個(gè)溫度控制系統(tǒng)更加精確。
當(dāng)主控板上電后,則初始化系統(tǒng)SysTick,并由此時(shí)鐘可得精確延時(shí)函數(shù),以供后續(xù)模塊操作。隨后初始化LED、OLED、按鍵、DS18B20與AT24C02。寫入OLED功能命令,使OLED正常顯示為系統(tǒng)提供交互界面。
因DS18B20轉(zhuǎn)換時(shí)間為187ms,故初始化定時(shí)器Timer2為2ms中斷,在定時(shí)器中斷函數(shù)中累加時(shí)間計(jì)數(shù)。時(shí)間到達(dá)與否,由其他子程序模塊檢測(cè)。因PID算法執(zhí)行周期與PWM周期分別為500ms、200ms,故增加定時(shí)器Timer3為1ms中斷,在定時(shí)器中斷函數(shù)里分別累加計(jì)數(shù)值,當(dāng)計(jì)時(shí)到達(dá)執(zhí)行周期則相應(yīng)子模塊執(zhí)行一次PID算法。OLED顯示用戶上一次操作的情況并允許用戶通過按鍵更改參數(shù)。隨后讀取DS18B20溫度值并進(jìn)行PID算法計(jì)算,實(shí)現(xiàn)控制PTC加熱器。整體軟件系統(tǒng)框圖如圖5所示。
圖5 程序整體框圖
因理論值具有相當(dāng)大的誤差,仍然需要根據(jù)程序調(diào)整參數(shù),故本設(shè)計(jì)直接根據(jù)實(shí)驗(yàn)結(jié)果實(shí)現(xiàn)參數(shù)的確立,理論的計(jì)算僅供調(diào)整參數(shù)時(shí)參考[11,12]。在仿真時(shí)設(shè)定溫度為45℃作為系統(tǒng)的恒定溫度,系統(tǒng)開啟后最終穩(wěn)定在該目標(biāo)溫度。選取多組KP、Ki和Kd值實(shí)驗(yàn),并根據(jù)所得結(jié)果畫出折線圖如圖6~圖8所示。
圖6 Kp仿真圖
圖7 Ki仿真圖
圖8 Kd仿真圖
從仿真圖可以看出在設(shè)定溫度為45℃時(shí),KP=45、Ki=775000和Kd=886時(shí)系統(tǒng)為最優(yōu)。系統(tǒng)上電開始,等待用戶輸入?yún)?shù)值,隨后PID算法工作,并且LED燈閃爍提示系統(tǒng)運(yùn)行正常。當(dāng)DS18B20第一次達(dá)到溫度值時(shí),溫度會(huì)持續(xù)上升,隨后溫度下降并在設(shè)定值SV左右波動(dòng),實(shí)驗(yàn)結(jié)果如圖9所示。
圖9 仿真實(shí)驗(yàn)結(jié)果
將改進(jìn)PID算法控制系統(tǒng)進(jìn)行建模,進(jìn)行仿真,記錄數(shù)據(jù),從結(jié)果上可以看出溫控系統(tǒng)響應(yīng)快、控制靈敏、能承受較大干擾且實(shí)際誤差為0.05℃,最終將模型上板也得到了該結(jié)果驗(yàn)證。
為了提高溫度控制在各個(gè)領(lǐng)域的精確度和響應(yīng)速度,筆者設(shè)計(jì)出了基于改進(jìn)PID算法的溫度控制系統(tǒng),通過仿真和具體電路驗(yàn)證表明該系統(tǒng)比傳統(tǒng)的PID控制系統(tǒng)誤差更小,響應(yīng)時(shí)間更快,提升了溫度控制效果,達(dá)到了恒溫精準(zhǔn)、自動(dòng)控制的目的。