金冬子,霍修坤
(安徽大學(xué) 電子信息工程學(xué)院,安徽 合肥 230601)
基于STM32的智能淋浴系統(tǒng)設(shè)計與實現(xiàn)
金冬子,霍修坤*
(安徽大學(xué) 電子信息工程學(xué)院,安徽 合肥 230601)
提出一種基于STM32的智能淋浴系統(tǒng)的設(shè)計方案,該方案通過DS18B20實時監(jiān)控水溫,并采用FSMC驅(qū)動TFTLCD進行顯示。同時,個體可以根據(jù)自身的需要,通過按鍵對水溫進行調(diào)節(jié)。另外,該系統(tǒng)采用梯度計費,在屏幕上顯示變化的費用可以督促用戶節(jié)約用水。本系統(tǒng)在低成本的基礎(chǔ)上實現(xiàn)了智能控制和節(jié)約資源的目的。
STM32;溫度;反饋調(diào)節(jié);節(jié)水
我國很多地區(qū)的浴室或澡堂,還存在大量傳統(tǒng)的淋浴設(shè)備,這些設(shè)備不能自動靈活地調(diào)節(jié)水溫,使用起來多有不便;這些設(shè)備也沒有梯度計費功能,不少用戶總是拖延淋浴時間,白白浪費了不少水資源。鑒于此,我們設(shè)計了一個基于STM32的智能淋浴系統(tǒng)。該系統(tǒng)的優(yōu)點是在低成本的情況下實現(xiàn)對水溫較為精確的監(jiān)測和較為靈活的調(diào)節(jié),而且在芯片寫入梯度計費算法,通過LCD屏幕上的提示,可以督促用戶節(jié)約用水。
整體方案如圖1所示。本系統(tǒng)通過傳感器檢測水溫,數(shù)據(jù)由MCU處理傳送到顯示模塊。如果實際溫度偏離設(shè)定的溫度值,MCU通過調(diào)用PID算法控制自帶DAC輸出電壓控制繼電器,從而控制電熱絲的加熱時間,以實現(xiàn)對溫度的調(diào)節(jié)。溫度的設(shè)定值是可以改變的,它由用戶根據(jù)需求通過按鍵來改變。
2.1主控介紹
STM32F407ZGT6是 ST公司推出的基于ARM Cortex-M4構(gòu)架的芯片[1]。該芯片的最高時鐘頻率可高達168 MHz,并且具有3個分辨率可調(diào)(12/10/8/6位)的AD轉(zhuǎn)換器,2個可調(diào)(12/8位)的DA轉(zhuǎn)換器,12個16位定時器和2個32位定時器,1個RTC時鐘,3個高速SPI,3個IIC,6個串口,自帶USB和CAN接口,具有1 M Flash和192 KB SRAM。該芯片具有較高的性價比,使用STM32作為主控芯片完全可以勝任本系統(tǒng)要求。
圖1 整體方案流程
2.2水溫檢測及反饋調(diào)節(jié)模塊
水溫檢測及反饋調(diào)節(jié)模塊基于DS18B20溫度傳感器設(shè)計而成[2],而數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)顯示及調(diào)節(jié)則是以 STM32為動作的起點。DS18B20的感溫范圍為-55~125℃,可以滿足本場景的使用。DS18B20溫度傳感器的選用可簡化采樣/保持電路、運放、數(shù)/模轉(zhuǎn)換電路和長途傳輸?shù)拇?并轉(zhuǎn)換電路,系統(tǒng)工作時間被大大縮減,且硬件成本較低。除此之外,DS18B20支持多點組網(wǎng)測溫[3],多個傳感器的組網(wǎng)可以提高系統(tǒng)測量的精確性和系統(tǒng)的穩(wěn)定性。
圖2 DS18B20溫度采集電路圖
溫度采集電路如圖2所示。DS18B20溫度傳感器將采集的溫度參數(shù)發(fā)送至STM32中,由STM32進行數(shù)據(jù)處理。而水溫控制這一功能則是在系統(tǒng)中設(shè)定一個初始溫度值(一般根據(jù)大多數(shù)客戶所要求的水溫設(shè)定),如果采集溫度參數(shù)超過或低于設(shè)定溫度值,系統(tǒng)自動根據(jù)設(shè)定的溫度調(diào)用PID算法進行調(diào)節(jié)。除了系統(tǒng)自動對水溫調(diào)節(jié)之外,淋浴器上還設(shè)有兩個按鍵,通過STM32對按鍵的輸入捕獲,實現(xiàn)對系統(tǒng)預(yù)先設(shè)定溫度值的改變,以滿足不同個體對水溫的個性化需求。
2.3顯示模塊
顯示部分是本系統(tǒng)人機交互中的重要組成部分。主要用于測量數(shù)據(jù)的實時顯示。本系統(tǒng)利用2.8寸TFTLCD作為顯示模塊。
本系統(tǒng)對TFTLCD(Thin film transistor-liquid crystal display)的控制原理[4]:通過FMSC(靈活的靜態(tài)存儲控制器)來驅(qū)動 TFTLCD,在這里TFTLCD相當于一個有兩個地址的SRAM。其中,一個地址是命令地址,另外一個是數(shù)據(jù)地址。TFTLCD的RS信號決定傳送的是數(shù)據(jù)還是命令,F(xiàn)SMC的A6引腳與TFTLCD的RS引腳相連,實現(xiàn)了命令和數(shù)據(jù)的區(qū)分。連接如圖3所示。
圖3 LCD接口圖
3.1梯度計費算法
梯度計費在本質(zhì)上就是一個分段函數(shù),在不同的時間段內(nèi)以不同的價格進行計費,最后對所有的費用進行求和,顯示在TFTLCD上。當t≤t1時,f(t)=N1*t;當t>t1時f(t)=N2*(t-t1).
注:其中f(t)為某一段時間的費用;t為當前時間;t1為一個設(shè)定的時間點;N1、N2為不同時間范圍內(nèi)的計費參數(shù),其中N1<N2。因此當時間超過t1之后,計費的增加速度會比之前更快,這樣設(shè)計的意圖是通過梯度計費的辦法,達到督促用戶節(jié)約用水的目的。當然,t1、N1和N2都可以根據(jù)實際情況進行修改。
3.2顯示模塊算法
顯示模塊算法如圖4所示。芯片I/O初始化是設(shè)置STM32與TFTLCD相連接的I/O端口狀態(tài)。這里使用到的I/O端口將被復(fù)用為GPIO_AF_FSMC功能(實現(xiàn)FSMC控制TFTLCD顯示的目的)。TFTLCD我們采用的型號為ILI9341,直接調(diào)用廠家提供的初始化代碼即可完成TFTLCD的初始化。
圖4 顯示算法框圖
字符顯示函數(shù)是以畫點函數(shù)為基礎(chǔ),對畫點函數(shù)進行反復(fù)調(diào)用。而畫點函數(shù)的原理是先確定需要顯示的點在TFTLCD上的橫縱坐標,再根據(jù)需要顯示點的顏色設(shè)置顏色值,從而實現(xiàn)對TFTLCD上任意一個點的顯示控制。
3.3水溫檢測及反饋調(diào)節(jié)模塊算法
3.3.1水溫檢測
程序向DS18B20發(fā)送命令使其初始化,然后將STM32通過ADC通道收集到的10次采樣值求算數(shù)平均,得到較為精確的溫度,再將得到的溫度數(shù)據(jù)通過顯示模塊進行顯示。同時在程序中設(shè)定了相應(yīng)的溫度閾值。如果溫度超過或低于閾值,STM32將會通過控制繼電器的通斷,從而控制電熱絲的通斷時間。最終調(diào)節(jié)水溫至預(yù)先設(shè)定的溫度值。
同時,本系統(tǒng)還有兩個按鍵可以改變之前程序中設(shè)定的溫度閾值,以適應(yīng)不同用戶的個性化需求。如果用戶按鍵改變了閾值,系統(tǒng)觸發(fā)中斷進入溫度采集環(huán)節(jié)。特別要注意的是,使用DS18B20要清楚總線的讀寫時序[5]。水溫檢測及反饋調(diào)節(jié)模塊流程圖如圖5所示。
3.3.2反饋調(diào)節(jié)模塊
PID控制算法在具體實現(xiàn)上有模擬和數(shù)字兩種[6,7]。對于數(shù)字PID控制算法又可以分為位置式PID算法和增量式PID算法。本系統(tǒng)采用位置式數(shù)字PID,其控制框圖如圖6所示。其中,控制器為STM32自帶的DAC,通過設(shè)定的溫度值和測得的實際溫度之差來調(diào)節(jié)DAC的輸出值。電熱絲作為控制環(huán)節(jié)中的被控對象,DS18B20測得的實際溫度值作為控制環(huán)節(jié)的反饋信號。通斷時間長度由DAC輸出電壓通過控制繼電器來控制。
由于計算機系統(tǒng)只能識別數(shù)字量,因此需要用數(shù)字系統(tǒng)的差分方程代替模擬系統(tǒng)的微分方程,用求和代替積分。其中式(1)和式(2)分別為模擬系統(tǒng)的微分方程和數(shù)字系統(tǒng)的差分方程。
式中,u(t)是t時刻調(diào)節(jié)器的輸出,即本系統(tǒng)中的DAC輸出;e(t)為偏差值,即DS18B20測得的實際溫度值與設(shè)定溫度值之間的差值。KP為比例系數(shù),TI為積分時間常數(shù),TD為微分時間常數(shù)。
圖5 水溫檢測及反饋調(diào)節(jié)模塊流程圖
圖6 PID控制框圖
本系統(tǒng)中,為了不使調(diào)節(jié)過慢,加上一個初始值U0,得到式(3)。
本系統(tǒng)中數(shù)字PID算法流程如圖7所示。
圖7 數(shù)字PID算法流程圖
實驗檢測表明本系統(tǒng)達到了最初的設(shè)計目的,實現(xiàn)了對溫度的精確調(diào)控和督促用戶節(jié)約用水的目的。我們在25℃的室溫情況下用上述系統(tǒng)對一個裝有2 L自來水的水箱進行模擬實驗。加熱器功率為1 500 W,根據(jù)應(yīng)用場景的要求進行了20~55℃溫度控制實驗,實驗數(shù)據(jù)如表1所示。
可以看出,最大誤差為±0.3℃,達到了預(yù)期效果,滿足應(yīng)用場景的需求。
表1 測試數(shù)據(jù)
本系統(tǒng)基于STM32可以實現(xiàn)對水溫的實時監(jiān)控,同時用戶還可以根據(jù)自己的需求進行溫度的控制,實現(xiàn)了洗浴設(shè)備的智能化。另外,本系統(tǒng)采用了梯度計費,在屏幕上顯示變化了的費用可以督促用戶節(jié)約用水。在低成本的基礎(chǔ)上,實現(xiàn)了智能控制和節(jié)約資源的目的。
[1] STMicroelectronics.RM0090referencemanual-STM32F405,STM32F407xx.STM32F415xxand STM32F417 advanced ARM-based-bit MCUs[EB/ OL][2016-04-05].http://www.st.com.
[2] 張英梅,傅仕杰.STM32的智能溫室控制系統(tǒng)[J].軟件,2010,31(12):14-18.
[3] 孫少偉,戴義保,章高琴.基于DS18B20組網(wǎng)測溫的研究[J].自動化儀表,2006,27(10):42-45.
[4] 湯莉莉,黃偉.基于STM32的FSMC接口驅(qū)動TFT彩屏設(shè)計[J].現(xiàn)代電子技術(shù),2013(20):139-141,144.
[5] 余瑾,姚燕.基于DS18B20測溫的單片機溫度控制系統(tǒng)[J].微計算機信息,2009,25(8):105-106,112.
[6] 賈誠安,葉林,葛俊鋒,等.一種基于STM32和ADS1248的數(shù)字PID溫度控制系統(tǒng)[J].傳感器與微系統(tǒng),2015,34(11):103-105.
[7] 郭智源,韓建,張西鵬,等.基于STM32的PID和PWM溫度控制系統(tǒng)研究[J].科學(xué)技術(shù)與工程,2011,11(16):3805-3807.
Design and implementation of an intelligent shower system based on STM32
JIN Dong-zi,HUO Xiu-kun*
(School of Electronic Information Engineering,Anhui University,Hefei Anhui 230601,China)
The proposed scheme is about a kind of intelligent shower system based on STM32.The water temperature is monitored timely by the sensor DS18B20.By using FSMC to drive the TFTLCD,our scheme achieved the display of temperature,cost and some other information.Besides,a gradient based algorithm to charge the cost was introduced which will urged the user to save water.
STM32;temperature;feedback regulation;water saving
TP23
A
1004-4329(2016)02-080-04
10.14096/j.cnki.cn34-1069/n/1004-4329(2016)02-080-04
2016-02-19
國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目(201510357052)資助。
霍修坤(1970-),男,博士,副教授,研究方向:通信、信號處理。Email:xkhuo@ahu.edu.cn。