曾鳳 施明朝 王艷萍 陳應松 田亞鈴
摘要:以STM32F407ZGT6單片機作為控制核心,設(shè)計以集成DS18B20芯片的防水型水溫探測溫線作為溫度反饋傳感器,采用積分分離的比例(Proportional)、積分(Integral)、微分(Derivative)算法,即PID算法控制脈沖寬度調(diào)制(PWM)占空比進行智能水溫閉環(huán)控制,同時用TFT液晶屏監(jiān)控控制過程。實驗結(jié)果表明該系統(tǒng)能快速、準確地進行水溫控制,系統(tǒng)穩(wěn)定性良好。系統(tǒng)控制精度達到0.1 ℃,溫度波動小于0.5 ℃。
關(guān)鍵詞:STM32單片機;PID;PWM;水溫閉環(huán)控制
中圖分類號:TP273文獻標志碼:A
文章編號:2095-5383(2019)02-0024-05
Abstract:STM32F407ZGT6 micro controller unit was used in this design as the control core, and a waterproof temperature sensitive device integrated with DS18B20 was used as the temperature feedback sensor. The separation integral PID control algorithm was used to adjust duty cycle of PWM for intelligent closed-loop control of water temperature, and the TFT LCD screen was used to monitor process. The experimental results show that the system can control the water temperature quickly and accurately, and it has good system stability. The accuracy of the system is up to 0.1 ℃,and the temperature shift is less than 0.5 ℃.
Keywords: STM32 micro controller unit; PID; PWM; closed-loop control of water temperature
水溫控制受外界環(huán)境影響大,精確模型難建立[1],由于加熱設(shè)備余熱及環(huán)境散熱等因素,加熱和制冷均為非穩(wěn)定過程[2]。趙娜等利用51單片機采用斷續(xù)ON-OFF控制水溫[3],王博實現(xiàn)了仿真條件下的PID算法水溫控制[4],文波等基于51單片機PID控制繼電器進行溫度控制[2]。溫度控制環(huán)節(jié)是純滯后的一階大慣性環(huán)節(jié)[5],在要求控制精度、溫度上升速度及下降速度可控的情況下,51單片機片內(nèi)資源及運行速度有限,不能滿足要求。ON-OFF控制系統(tǒng)振蕩大,穩(wěn)定性差。本系統(tǒng)以STM32單片機為控制核心,采用PID算法及PWM控制,以提高控制精度及穩(wěn)定性。
1 PID-PWM算法
1.1 PID算法
1.2 PWM算法
脈沖寬度調(diào)制(Pulse Width Modulation,PWM)是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種有效的技術(shù),其原理圖如圖1所示[7]。本系統(tǒng)利用STM32的定時器14通道1的PWM輸出模式。設(shè)置定時器的計數(shù)頻率為1 MHz,重裝載置寄存器ARR的值設(shè)置為5 000,因而PWM周期為200 Hz。利用PID算法改變捕獲/比較寄存器CCRx的值,便可以改變PWM占空比。占空比為CCRx的值除以ARR的值。利用PMW輸出的IO邏輯便可以實時調(diào)節(jié)加熱器功率,實時加熱功率為PWM占空比乘以加熱器功率。
2 系統(tǒng)硬件設(shè)計與實現(xiàn)
本設(shè)計由STM32單片機最小系統(tǒng)、按鍵目標溫度設(shè)置模塊、防水型DS18B20溫度檢測模塊、3.5 in(8.89 cm)TFT液晶顯示屏控制模塊、MOSFET控制的防水型加熱器模塊、串口通信模塊構(gòu)成。本系統(tǒng)是集水溫信號采集、處理、顯示、調(diào)節(jié)為一體的智能水溫閉環(huán)控制系統(tǒng),結(jié)構(gòu)框圖如圖2所示。
2.1 控制器選型
2.2 前向通道
本系統(tǒng)的前向通道主要由兩部分組成,由加、減兩個按鍵電路構(gòu)成的目標溫度設(shè)定模塊以及以DS18B20傳感器為核心器件的溫度測量模塊。
2.2.1 目標溫度設(shè)定模塊
目標溫度設(shè)定模塊由兩個獨立按鍵控制,與STM32單片機的接口電路如圖3所示。其中,KEY1連接單片機的PE3口、KEY2連接單片機的PE2口。
目標溫度設(shè)定采用軟件加硬件的方式,在軟件初始化程序中設(shè)定一個基準溫度,兩個硬件按鍵KEY1、KEY2分別作為目標溫度加、減鍵。每按一次“加鍵”,設(shè)定的目標溫度值在基準溫度上加0.1 ℃,并作為當前的基準溫度。每按一次“減鍵”,目標溫度值就減0.1 ℃。目標水溫最高可設(shè)置成100 ℃,最低可設(shè)置成0 ℃。
2.2.2 溫度測量模塊
采用DS18B20作為溫度傳感器。其測溫范圍為-55~125? ℃。在溫度為-10~85 ℃范圍內(nèi)的精度為±0.5? ℃。該傳感器采用單總線接口、僅需要一條口線即可實現(xiàn)微處理器與該芯片的雙向通信,抗干擾性強。其供電電壓范圍為3.0~5.5 V。測量結(jié)果以9~12位數(shù)字方式串行傳送。本系統(tǒng)配置為12位精度模式,最大轉(zhuǎn)換時間為750 ms。同時考慮到水溫控制的防水要求,采用了Raisym公司的不銹鋼防水型封裝的DS18B20溫線,如圖4(a)所示??刂齐娐啡鐖D4(b)所示,傳感器的數(shù)據(jù)線端口2連接單片機的PG9口。
2.3 后項通道
本系統(tǒng)的后項通道由供電電源、加熱器控制電路及加熱器組成。加熱器供電電源選用大疆悟1 V 2.0 TB47可充電電池,可供電壓為22.2~26 V。控制電路主要由2SD601A型號的NPN三極管與SUM110P0607L型號的MOSFET管組成,其中三極管的基級與單片機的F9端口相連,端口復用為TIM14_CH1 PWM模式。加熱器為防水U型24 V 500 W電阻絲。由于加熱器供電電源為24? V,單片機工作在3.3 V,所以采用PWM信號輸出控制NPN三極管的通斷,利用三極管集電極電壓控制大功率MOS管通斷作為加熱器的驅(qū)動控制,進而控制加熱功率。加熱器實物如圖5(a)所示,控制電路如圖5(b)所示。
2.4 人機交互通道
本系統(tǒng)的人機交互通道包括TFT液晶顯示模塊及利用STM32串口通信發(fā)送數(shù)據(jù)串口至PC端利用調(diào)試助手軟件顯示。本設(shè)計中采用兩種顯示,即用TFT液晶屏顯示設(shè)定溫度和當前實際溫度,或使用串口打印方式監(jiān)測數(shù)據(jù)。用串口通信發(fā)送信息到上位機(PC),顯示目標水溫、當前溫度、溫度的偏差,PID的比例項、積分項、差分項輸出,PWM輸出。TFT顯示實物如圖6所示。使用串口打印方式監(jiān)測數(shù)據(jù)如圖7所示。
3 系統(tǒng)軟件設(shè)計與實現(xiàn)
控制程序在Keil μVision5集成開發(fā)環(huán)境中編寫,用C語言編程。軟件程序包括系統(tǒng)初始化,按鍵信息采集處理,水溫采集、處理、顯示,控制信號調(diào)整輸出,其流程圖如圖8所示。
程序功能主要由以下幾部分組成:
1)系統(tǒng)初始化:TFT初始化、按鍵初始化、溫度傳感器初始化、PID參數(shù)初始化、目標溫度初始化、PWM 輸出初始化,即將定時器14通道1配置為定時器PWM模式。
2)目標溫度按鍵信息采集:定時采集兩個按鍵接口PE2、PE3口的電平信號,當有對應鍵按下時,修改目標溫度。
3)溫度數(shù)據(jù)采集:定時采集溫度傳感器接口PG9的溫度信號,獲得實時水溫。
4)大功率MOS管控制:根據(jù)設(shè)定的目標溫度及溫度傳感器采集到的當前溫度,利用PID控制算法,控制PWM信號的占空比,通過PF9口輸出PWM波控制加熱器電路。
5)數(shù)據(jù)顯示:編程將目標溫度及實時溫度顯示在TFT上。利用printf()函數(shù)將溫度調(diào)節(jié)信息顯示在PC端串口助手軟件中。
4 系統(tǒng)調(diào)試與結(jié)構(gòu)分析
本系統(tǒng)在電路制作過程中采用模塊化硬件焊接調(diào)試方法,以提高制作效率。
實驗對500 mL溫度低于設(shè)定溫度的自來水進行實驗。設(shè)定目標溫度分別為30、50、70、80 ℃。設(shè)置系統(tǒng)PID比例系數(shù)KP為700、積分系數(shù)KI為300、微分系數(shù)KD為300。系統(tǒng)水溫控制的實驗統(tǒng)計結(jié)果如圖9所示。實驗結(jié)果表明溫度控制平滑,滿足控制要求。
實驗結(jié)果表明:目標溫度為30、50、70、80 ℃的超調(diào)量σ%分別為6.70%、2.00%、0.43%、0.00%,溫度越高超調(diào)量越低。分析其原因有:1)當溫度達到或超過目標溫度時,雖然加熱器控制電路輸出為0,但是由于加熱器的余熱,會使水溫繼續(xù)上升,產(chǎn)生超調(diào);2)由于環(huán)境的影響,加熱過程中也伴隨著熱傳遞。水與環(huán)境溫度差越高、散熱越快。加熱棒余熱加熱與熱傳遞會相互抵消一部分,因而設(shè)定目標溫度越高超調(diào)會慢慢降低。
5 結(jié)束語
本設(shè)計可以實現(xiàn)目標水溫的設(shè)定、水溫的實時監(jiān)測、水溫的自動化控制。現(xiàn)采用自然冷卻的方式,冷卻速度較慢,今后可增加降溫控制電路,如半導體制冷。本控制方案適用于對溫度控制穩(wěn)定性高、要求超調(diào)量小的場景中,如家用熱水器控制、養(yǎng)殖魚池水溫控制等。
參考文獻:
[1]王冠龍,崔靚,朱學軍.基于數(shù)字PID算法的溫度控制系統(tǒng)設(shè)計[J].傳感器與微系統(tǒng),2019,38(1):86-88,96.
[2]文波,孟令軍,張曉春,等.基于增量式PID算法的水溫自動控制器設(shè)計[J].儀表技術(shù)與傳感器,2015(12):113-116.
[3]趙娜,方圓.基于51單片機的智能水溫控制系統(tǒng)的設(shè)計[J].電腦迷,2018,112(11):150.
[4]王博,曾方,程一哲.基于PID算法的水溫控制系統(tǒng)[J].電腦知識與技術(shù),2018,14(27):242-243.
[5]劉向東,高軍,楊樂民.一種新的一階系統(tǒng)自調(diào)整模糊控制器[J].哈爾濱理工大學學報,2003,8(5):75-79.
[6]姜學軍,劉新郭,李曉靜.計算機控制技術(shù)[M].2版.北京:清華大學出版社,2009.
[7]張洋,劉軍,嚴漢宇,等.精通STM32F4(庫函數(shù)版)[M].北京:北京航空航天大學出版社,2015.
[8]ST Microelectronics Corporation.STM32F407xx/STM32F407xx Datasheet [EB/OL].(2016-09-01)[2018-1230].https://www.st.com/resource/en/datasheet/stm32f407zg.pdf.