王明濤,周 驊
(貴州大學(xué)大數(shù)據(jù)與信息工程學(xué)院,貴陽 550025)
在工業(yè)生產(chǎn)和日常生活中,對溫控系統(tǒng)的要求主要是保證溫度在一定范圍內(nèi)可調(diào)、穩(wěn)定,對快速性要求不高[1]。但在實(shí)驗(yàn)室和計(jì)量校準(zhǔn)應(yīng)用場合中,對溫控系統(tǒng)的收斂速度和精度都有較高要求。對此已有眾多研究者提出各自方案。例如:李天旭[2]等人采用傳統(tǒng)PID算法控制水浴溫度,控制精度僅為±0.1℃,且響應(yīng)速度不快;梁永忠[3]采用傳統(tǒng)PID作為恒溫控制器的控制算法,只能實(shí)現(xiàn)小于2℃的線性誤差,證明了傳統(tǒng)PID算法很難保證響應(yīng)速度和控制精度;文思奇[4]等人采用遺傳算法整定PID參數(shù),但遺傳算法的“變異”過程具有一定隨機(jī)性,效率不及利用模型信息優(yōu)化PID;李勇[5]采用BP神經(jīng)網(wǎng)絡(luò)對PID參數(shù)進(jìn)行優(yōu)化,但是BP神經(jīng)網(wǎng)絡(luò)依賴初始權(quán)值的設(shè)定,且有可能陷入局部最優(yōu);宋春光[6]采用模糊控制器對PID的參數(shù)分階段優(yōu)化,提升了溫控系統(tǒng)的精度。
恒溫控制系統(tǒng)存在一定時(shí)變性,導(dǎo)致隨機(jī)性較強(qiáng)的溫度跳變[7],另一方面,傳統(tǒng)的恒溫控制系統(tǒng)存在控制精度低、響應(yīng)速度慢等缺點(diǎn)[8]。這都是現(xiàn)有研究中有待解決的問題。
綜合研究簡易溫度模型函數(shù)的建立、PID的改進(jìn)策略、溫度模型函數(shù)與PID結(jié)合算法,在此嘗試設(shè)計(jì)一款適用于便攜式設(shè)備的溫控系統(tǒng)。其控制算法由簡易溫度模型函數(shù)與改進(jìn)PID相結(jié)合而成。新設(shè)計(jì)將比傳統(tǒng)的PID溫度控制算法能以更快的速度逼近設(shè)定溫度,同時(shí)當(dāng)溫度達(dá)到設(shè)定溫度的微調(diào)區(qū)間能立即得到設(shè)定溫度對應(yīng)PID輸出的估算值。利用這一特性,再結(jié)合PID改進(jìn)算法,就能在保證控制精度和極小超調(diào)量的同時(shí),大大提高響應(yīng)速度。系統(tǒng)總體方案設(shè)計(jì)原理圖如圖1所示。
系統(tǒng)由觸控屏幕、PC機(jī)連接端、溫度傳感器、PWM輸出控制端、H橋轉(zhuǎn)換模塊、半導(dǎo)體制冷(熱)片、保溫箱組成。系統(tǒng)工作時(shí),屏幕收到用戶命令后會(huì)將數(shù)據(jù)幀通過USART3發(fā)送到STM32F407主控制器。溫度傳感器精度為0.01℃,實(shí)時(shí)監(jiān)控溫箱內(nèi)數(shù)據(jù),每隔200 ms通過USART6發(fā)送一次溫度數(shù)據(jù)幀到主控制器中,同時(shí)主控制器會(huì)將溫度傳感器返回來的數(shù)據(jù)打包整理實(shí)時(shí)發(fā)送到用戶PC機(jī)上。在溫度控制部分,采用STM32自帶的4路PWM外設(shè)輸出根據(jù)算法計(jì)算的方波。該P(yáng)WM方波直接作用到H橋電壓轉(zhuǎn)換模塊,由H橋?qū)⒉煌伎毡萈WM信號轉(zhuǎn)換成相應(yīng)的電壓信號,作用到兩塊半導(dǎo)體制冷(熱)片,通過改變4路PWM的方向來達(dá)到半導(dǎo)體片制冷和制熱的切換。至此,可形成一個(gè)閉環(huán)系統(tǒng),達(dá)到精確控制溫度的目的。
系統(tǒng)中的精確控制采用增量型PID算法。該算法由比例、積分、微分環(huán)節(jié)構(gòu)成。以s(t)表示設(shè)定值,f(t)表示實(shí)際值,以e(t)表示設(shè)定值與實(shí)際值之間的偏差:e(t)=s(t)-f(t)。以u(t)作為PID運(yùn)算得出的輸出結(jié)果,有如下運(yùn)算關(guān)系:
其中Kp為比例系數(shù),Ti為積分時(shí)間常量,Td為微分時(shí)間常量。在計(jì)算機(jī)上實(shí)現(xiàn)PID算法通常需要用到離散化的思想,將以上PID函數(shù)作離散處理并簡化得到以下關(guān)系式:
其中,Ki為積分系數(shù),Kd為微分系數(shù)。根據(jù)上式便可得到增量PID的運(yùn)算公式如下:
公式運(yùn)算結(jié)果即為PID運(yùn)算一次得到的增(減)量。
改進(jìn)后的PID系統(tǒng)架構(gòu)如圖2所示,該系統(tǒng)使用改進(jìn)增量PID作為主要的控制算法。由于增量PID的輸出為增(減)量,所以實(shí)際控制時(shí)可以根據(jù)情況調(diào)整輸出。
圖2 改進(jìn)的PID系統(tǒng)框圖
系統(tǒng)在設(shè)計(jì)程序時(shí)增加一個(gè)比例、積分、微分選擇器,該選擇器根據(jù)溫度的變化情況和設(shè)定的調(diào)整策略控制比例、積分、微分是否參與運(yùn)算。具體調(diào)整策略為:
當(dāng)溫度到達(dá)系統(tǒng)設(shè)定的微調(diào)區(qū)間時(shí),PID參與運(yùn)算并控制輸出,實(shí)時(shí)檢測箱內(nèi)溫度的變化速度;當(dāng)溫度上升(下降)速度超過閾值時(shí)積分分離,微分項(xiàng)和比例項(xiàng)參與運(yùn)算;當(dāng)溫度上升(下降)速度小于等于0時(shí)比例項(xiàng)、微分項(xiàng)分離,積分項(xiàng)單獨(dú)作用,并且此時(shí)積分項(xiàng)會(huì)根據(jù)實(shí)際溫度調(diào)整大小,該值與設(shè)定溫度與實(shí)際溫度之差成反比,其他情況三個(gè)參數(shù)都參與運(yùn)算。
當(dāng)溫度超調(diào)量超過0.01℃時(shí)比例項(xiàng)不參與運(yùn)算,只有積分項(xiàng)和微分項(xiàng)起作用,這樣更有利于溫度快速回歸到設(shè)定值精度范圍內(nèi)。
系統(tǒng)的控制算法中需要用到高強(qiáng)度制熱、高強(qiáng)度制冷、反向剎車、模型預(yù)估輸出函數(shù)、PID輸出補(bǔ)償、改進(jìn)PID算法精確調(diào)整。其中反向剎車、模型預(yù)估輸出函數(shù)和PID輸出補(bǔ)償需要根據(jù)溫箱模型得到其隨溫度變化的函數(shù)。
反向制冷時(shí)間函數(shù)的建立流程圖如圖3所示。以此方法得到系統(tǒng)不同溫差對應(yīng)的反向時(shí)間數(shù)據(jù)如表1所示。
圖3 反向制冷時(shí)間函數(shù)流程
表1 不同溫差對應(yīng)的反向時(shí)間
在計(jì)算中,溫差x=設(shè)定溫度值/10,利用MATLAB參數(shù)擬合函數(shù)擬合得出反向時(shí)間,即:
預(yù)估輸出函數(shù)可以直接計(jì)算出設(shè)定溫度對應(yīng)的估算輸出值,能大大提高PID調(diào)整的響應(yīng)速度,模型預(yù)估輸出函數(shù)的建立流程可概括為:
首先,設(shè)定H橋的輸出為幾個(gè)特殊值,等待溫度穩(wěn)定;
然后,將得到的幾組對應(yīng)關(guān)系輸入MATLAB擬合函數(shù);
最后,得到擬合的函數(shù)式。
用以上方法得到該系統(tǒng)制熱時(shí)不同溫差對應(yīng)的輸出電壓如表2。
表2 制熱時(shí)不同溫差對應(yīng)輸出電壓
根據(jù)以上數(shù)據(jù)關(guān)系計(jì)算出制熱預(yù)估函數(shù),即:溫差k=(設(shè)定溫度溫度-箱內(nèi)環(huán)境溫度值)/10,得到制熱預(yù)估函數(shù)y=2.08k。
系統(tǒng)制冷時(shí)不同溫差對應(yīng)的輸出電壓如表3。
表3 制冷時(shí)不同溫差對應(yīng)輸出電壓
此處,溫差z=(箱體環(huán)境溫度-設(shè)定溫度值)/10,同理可得制冷預(yù)估函數(shù)y=5.9z。
軟件程序采用KeilμVision5開發(fā)平臺設(shè)計(jì),包括STM32F407外設(shè)初始化、Freertos配置初始化、PWM占空比運(yùn)算、PID階段性參數(shù)調(diào)整、中斷處理等。系統(tǒng)進(jìn)入主函數(shù)后,開始等待用戶輸入設(shè)定溫度值,收到設(shè)定溫度數(shù)據(jù)后,即開始控制溫度。
制熱軟件流程如圖4所示。當(dāng)用戶輸入設(shè)定溫度值,減去當(dāng)前箱體溫度,溫差大于4℃時(shí)運(yùn)行強(qiáng)制熱,即PWM輸出100%占空比進(jìn)行制熱。當(dāng)設(shè)定溫度與箱內(nèi)實(shí)際溫度相差小于3℃時(shí),為防止半導(dǎo)體制冷(熱)片的余熱過高導(dǎo)致超調(diào),需要反向制冷。反向制冷時(shí)間根據(jù)剎車函數(shù)即公式(4)計(jì)算。定時(shí)完畢即根據(jù)制熱預(yù)估函數(shù)進(jìn)行制熱,保持PWM輸出。此時(shí)輸出的電壓值y=2.08x,等待以下三個(gè)微調(diào)條件:箱內(nèi)實(shí)際溫度與設(shè)定值之差的絕對值小于0.2℃;當(dāng)前溫度上升速度小于0.04℃/min;預(yù)估PWM輸出時(shí)間超過6分鐘。只要滿足其中一個(gè)條件,則進(jìn)行以下操作:
圖4 制熱軟件流程圖
步驟一、立即運(yùn)行一次PID算法得到PID輸出值,將這個(gè)值根據(jù)H橋PWM占空比關(guān)系得到對應(yīng)的輸出電壓V1。
步驟二、根據(jù)模型函數(shù)計(jì)算補(bǔ)償值C1=2.08x-V1。
步驟三、在隨后的PID運(yùn)算中都加上補(bǔ)償值C1。PID會(huì)自動(dòng)調(diào)整輸出電壓使溫箱內(nèi)溫度不斷逼近設(shè)定值。當(dāng)實(shí)際溫度與設(shè)定溫度之差的絕對值大于0.05℃且小于0.5℃時(shí),對PID參數(shù)作如下調(diào)整:
當(dāng)溫度上升速度超過0.03℃/min時(shí)PID積分項(xiàng)分離;
當(dāng)溫度上升速度小于等于0℃/min時(shí)PID的比例和微分項(xiàng)分離;
其他情況,PID的比例、積分、微分都參與運(yùn)算。
當(dāng)輸入設(shè)定溫度與實(shí)際溫度之差小于4℃且大于0℃時(shí),直接根據(jù)預(yù)估輸出函數(shù)進(jìn)行制熱;當(dāng)實(shí)際溫度與設(shè)定溫度之差的絕對值大于0.05℃且小于0.5℃時(shí),同樣對PID進(jìn)行調(diào)整。
制冷軟件流程如圖5所示。當(dāng)用戶輸入溫度值低于當(dāng)前溫箱溫度時(shí)需要制冷;當(dāng)輸入設(shè)定溫度與當(dāng)前實(shí)際溫度之差小于-2℃,PWM輸出100%占空比,開始制冷,保持輸出。直到箱內(nèi)溫度與設(shè)定值溫差小于-1℃時(shí),根據(jù)制冷預(yù)估函數(shù)y=5.9x輸出對應(yīng)占空比的PWM方波,開始制冷,保持輸出。此時(shí)等待以下三個(gè)微調(diào)條件:箱內(nèi)實(shí)際溫度與設(shè)定值之差絕對值小于0.7℃;當(dāng)前溫度下降速度小于0.06℃/min、預(yù)估PWM輸出時(shí)間超過8分鐘。只要滿足其中一個(gè)條件則進(jìn)行以下操作:
圖5 制冷軟件流程圖
步驟1:立即運(yùn)行一次PID算法,得到PID輸出值,將這個(gè)值根據(jù)H橋PWM占空比關(guān)系得到對應(yīng)的輸出電壓V2。
步驟2:根據(jù)模型函數(shù)計(jì)算補(bǔ)償值C2=5.9x-V2。步驟3:在隨后的PID運(yùn)算中都加上補(bǔ)償值C2。PID會(huì)自動(dòng)調(diào)整輸出電壓使溫箱內(nèi)溫度不斷逼近設(shè)定值,當(dāng)實(shí)際溫度與設(shè)定溫度之差的絕對值大于0.05℃且小于0.5℃時(shí)對PID參數(shù)進(jìn)行如下調(diào)整:
當(dāng)溫度下降速度超過0.03℃/min時(shí),PID的比例和微分項(xiàng)分離;
當(dāng)溫度下降速度小于等于0℃/min時(shí),PID的比例和微分項(xiàng)分離;
其他情況,PID的比例、積分、微分都參與運(yùn)算。
將制熱和制冷兩種情況分別與傳統(tǒng)單一PID控制算法進(jìn)行比較,控制兩種算法的PID參數(shù)一致,分別從相同的起始溫度控制到相同的終止溫度,將數(shù)據(jù)從串口導(dǎo)出到PC,利用Origin 2018軟件繪制數(shù)據(jù)曲線。
制熱對比曲線如圖6所示。采用傳統(tǒng)增量PID控制算法的溫度曲線如圖中曲線A所示,采用本系統(tǒng)的溫箱模型函數(shù)與自整定PID結(jié)合算法的溫度曲線如圖中曲線B所示。
圖6 制熱曲線對比圖
從圖上可明顯看出,本算法用12分鐘將溫度調(diào)整到35℃,而只采用增量PID控制算法則要42分鐘才能將溫度調(diào)整到35℃,速度提升將近72%。同時(shí),傳統(tǒng)PID控制算法的超調(diào)量高達(dá)1.3℃,而本系統(tǒng)的控制算法響應(yīng)曲線是一個(gè)較平穩(wěn)的上升曲線。
制冷對比曲線如圖7所示。采用單一增量PID控制算法的制冷溫度曲線如圖中曲線A所示,采用本系統(tǒng)的模型函數(shù)與自整定PID結(jié)合算法的溫度曲線如圖中曲線B所示。
圖7 制冷曲線對比圖
從圖中明顯看出,本算法只用23分鐘,即可將溫度從21℃平穩(wěn)調(diào)整到15℃,而若采用單一PID算法,需要76分鐘才能實(shí)現(xiàn)這樣的溫度變化。新算法速度提升達(dá)69.7%,而且它的超調(diào)量保持在0.05℃范圍內(nèi),比普通PID的超調(diào)量0.8℃理想許多。
所設(shè)計(jì)的適用于便攜式設(shè)備的溫度控制系統(tǒng),在嘗試采用簡易模型函數(shù)與改進(jìn)PID相結(jié)合的算法之下,按預(yù)期實(shí)現(xiàn)了溫箱內(nèi)溫度5℃到50℃的連續(xù)可調(diào)。相較于傳統(tǒng)的PID算法,該法的響應(yīng)速度更快、控制精度更高、魯棒性好、超調(diào)量極小,體現(xiàn)出多方面的優(yōu)勢。按該設(shè)計(jì)已經(jīng)制造出實(shí)物并投入實(shí)際使用,獲得了良好的實(shí)用效果。