程雪敏
(蘇州工業(yè)職業(yè)技術(shù)學(xué)院,江蘇蘇州,215104)
本課題設(shè)計(jì)的是一種游泳池的智能恒溫控制系統(tǒng),系統(tǒng)主要分為手動(dòng)調(diào)節(jié)溫度和自動(dòng)調(diào)節(jié)溫度兩個(gè)模塊,主要功能是通過(guò)溫度的設(shè)定實(shí)現(xiàn)智能控制溫度大小,采用STM32F103C8T6 微控制器配合其他器件做成最小系統(tǒng)板,水溫度傳感器負(fù)責(zé)將實(shí)時(shí)溫度信息采集并進(jìn)行儲(chǔ)存,溫濕度傳感器同理負(fù)責(zé)將說(shuō)采集到的溫濕度數(shù)據(jù)進(jìn)行儲(chǔ)存,單片機(jī)通過(guò)單總線協(xié)議讀取傳感器所儲(chǔ)存的數(shù)據(jù)后進(jìn)行計(jì)算,從而得到想要的數(shù)據(jù)。
游泳池用智能恒溫系統(tǒng)控制的設(shè)計(jì)是根據(jù)現(xiàn)在人們喜愛(ài)這項(xiàng)運(yùn)動(dòng)的始點(diǎn)出發(fā),解決了泳池在受到溫度影響而無(wú)法及時(shí)使用的情況下設(shè)計(jì)的。本智能恒溫控制系統(tǒng)在各個(gè)領(lǐng)域應(yīng)用廣泛,市場(chǎng)前景較為廣闊,能夠提高能源利用率。
圖1 為系統(tǒng)的框圖設(shè)計(jì)。本設(shè)計(jì)的核心控制器為一顆STC32F 系列單片機(jī),由一些外圍元器件搭建出此核心控制器的簡(jiǎn)易工作環(huán)境,從而提供整個(gè)系統(tǒng)所需要的算力及邏輯控制,電源方面采用了雙電源設(shè)計(jì),單片機(jī)通過(guò)與溫濕度傳感器、水溫傳感器通信獲取實(shí)時(shí)數(shù)據(jù),用戶操作編碼器按鍵輸入預(yù)設(shè)信息,采集到這三個(gè)外設(shè)的數(shù)據(jù)后即可實(shí)現(xiàn)離線控制水溫,WiFi 模塊有接收到數(shù)據(jù)后會(huì)將數(shù)據(jù)發(fā)送到單片機(jī),單片機(jī)對(duì)信息篩選后寫入指定寄存器后開啟離線控制模式,此時(shí)WiFi 會(huì)將離線的數(shù)據(jù)實(shí)時(shí)上傳到云端。里面控制模式會(huì)將所采集到的信息,以及當(dāng)前離線模式的狀態(tài)發(fā)送到OLED 顯示屏上進(jìn)行顯示,供用戶閱讀。當(dāng)需要開啟加熱器時(shí)單片機(jī)會(huì)給陶瓷加熱片驅(qū)動(dòng)電路PWM 信號(hào),來(lái)控制陶瓷加熱片的功率。
圖1 系統(tǒng)設(shè)計(jì)框圖
硬件電路的設(shè)計(jì)要滿足是高質(zhì)量、安全性、簡(jiǎn)略性等。本系統(tǒng)主要由STM32F103C8T6 主控電路、狀態(tài)指示電路、LDO 降壓電路、溫濕度檢測(cè)電路、加熱驅(qū)動(dòng)電路、WiFi 通信模塊、OLED 顯示電路、DC 降壓電路組成。
圖2 是STM32F103C8T6 的最小工作系統(tǒng),圖中BOOT0 引腳直接拉低,只因此設(shè)計(jì)程序無(wú)特殊要求,程序代碼體積也相對(duì)較小,故只需要將主閃存作為啟動(dòng)區(qū)域,而無(wú)需從系統(tǒng)存儲(chǔ)器或者內(nèi)置的SRAM 中啟動(dòng)系統(tǒng)程序??紤]到本系統(tǒng)需要在高溫高濕的環(huán)境中運(yùn)行,晶振采用了外置8MHz 晶振提高系統(tǒng)工作可靠性。芯片復(fù)位端口有外接按鍵,當(dāng)出現(xiàn)緊急情況可以以最快速度復(fù)位芯片增加安全性。此單片機(jī)部分引腳可以接受5V 電平輸入,當(dāng)外設(shè)電壓受干擾產(chǎn)生波動(dòng)信號(hào)電平也會(huì)跟隨波動(dòng),因?yàn)榭梢匀萑?V 電平所以不易導(dǎo)致芯片損壞。
圖2 STM32F103C8T6 主控電路
如圖3 所示,Q2 MOS 采用新節(jié)能的NCE01P13K,支持100V 電壓13A 的電流,大電流可根據(jù)實(shí)際情況更換不同功率的陶瓷發(fā)熱片,從而適應(yīng)各種泳池大小。MOS 的開關(guān)由8050 三極管控制,當(dāng)三極管基極受電導(dǎo)通后,會(huì)拉低MOS 的柵極電壓從而使PMOS(Q2)導(dǎo)通,12V 電源經(jīng)過(guò)Q2 與P4 接口的陶瓷加熱片接通,加熱片即開始工作。電容C7 為鋁電解電容,抑制通電瞬間產(chǎn)生的壓降,防止壓降過(guò)大,導(dǎo)致系統(tǒng)缺電復(fù)位。
圖3 加熱驅(qū)動(dòng)電路
在電阻R12 上拉至3.3V 電源防止ESP8266 因干擾復(fù)位,LED3 為是否開啟加熱功能指示燈,當(dāng)接收到云端的開啟數(shù)據(jù)LE3 點(diǎn)亮,當(dāng)云端選擇關(guān)閉加熱功能LED3 也會(huì)熄滅。當(dāng)解析完成云端數(shù)據(jù)后會(huì)通過(guò)串口將數(shù)據(jù)發(fā)送給主控。底層會(huì)將實(shí)時(shí)溫濕度數(shù)據(jù)通過(guò)串口發(fā)送給EP8266,解析成功后ESP8266 將數(shù)據(jù)上傳ONENET,在用戶操作界面即可看到實(shí)時(shí)數(shù)據(jù)。數(shù)據(jù)解析功能可以避免干擾數(shù)據(jù)導(dǎo)致上傳數(shù)據(jù)出錯(cuò)。EPS8266 與云端通信采用的JSON 通信格式,便于云端對(duì)數(shù)據(jù)分析處理。如圖4 所示。
圖4 WiFi 通信模塊
圖5 DC 降壓電路采用的芯片是MP1584EN,其輸入電壓范圍較寬(4.5~28V)所以能接受12V 的電源輸入。R15、R16 通過(guò)分壓給到芯片的使能引腳使能信號(hào),D1 防止電感L1 的反向電動(dòng)勢(shì)擊穿芯片內(nèi)部MOS,MP1584EN開關(guān)頻率可達(dá)1.5MHz 電感L1 的反向電動(dòng)勢(shì)會(huì)很大,D1 可以消耗掉反向電動(dòng)勢(shì)保證芯片安全。R9、R10 構(gòu)成輸出電壓采樣用于反饋輸出電壓,讓芯片實(shí)時(shí)調(diào)整輸出電壓保證輸出電壓在設(shè)置的范圍內(nèi)。MP1584EN 對(duì)于防止EMI 也有良好的效果,對(duì)于電流失控及溫度過(guò)高都有良好的保護(hù),并且其工作頻率較高非常適合當(dāng)前電路。
圖5 DC 降壓電路
網(wǎng)頁(yè)端的數(shù)據(jù)處理采用的是ONENET 平臺(tái),底層ESP8266 將數(shù)據(jù)打包上傳至服務(wù)器183.230.40.39 的6002端口,依靠ONENET 平臺(tái)實(shí)現(xiàn)遠(yuǎn)程控制。
如圖6 所示,MQTT 協(xié)議接入,能看到當(dāng)前上傳數(shù)據(jù)的總數(shù)及七日新增,能夠讓用戶直觀判斷當(dāng)前數(shù)據(jù)是否有效,在面板界面可以看到三組數(shù)據(jù),標(biāo)題分別為TEMP、Temp、Humi 分別對(duì)應(yīng)水溫、環(huán)境溫度、環(huán)境濕度,這三組數(shù)據(jù)都可看到最后更新時(shí)間,可以不借助圖形界面就可直觀的觀察當(dāng)前數(shù)據(jù),每一個(gè)標(biāo)題都對(duì)應(yīng)ESP8266 所訂閱的標(biāo)題,標(biāo)題用于區(qū)分不同數(shù)據(jù)。數(shù)據(jù)的獲取是從通過(guò)MQTT協(xié)議上傳到服務(wù)器的JSON 數(shù)據(jù)中解析的,預(yù)先根據(jù)指定的數(shù)據(jù)格式上傳數(shù)據(jù),ONENET 平臺(tái)會(huì)自動(dòng)解析數(shù)據(jù),并將解析過(guò)的數(shù)據(jù)顯示到當(dāng)前頁(yè)面。當(dāng)在ONENET 平臺(tái)創(chuàng)建產(chǎn)品后,會(huì)自動(dòng)生產(chǎn)產(chǎn)品ID 與產(chǎn)品KEY,在上傳數(shù)據(jù)前需要與服務(wù)器握手ID 與KEY 信息,只有這些都正確后才可向服務(wù)器傳輸數(shù)據(jù)。
圖6 MQTT 協(xié)議接入
如圖7 所示,可視化操作界面是由ONENET 的可視化項(xiàng)目編輯工具來(lái)完成的,可視化頁(yè)面數(shù)據(jù)可直接對(duì)接MQTT協(xié)議接入的數(shù)據(jù),可視化界面的數(shù)據(jù)需要自行編寫代碼解析,環(huán)境溫濕度與水溫是由表盤組價(jià)來(lái)進(jìn)行編輯,接入MQTT 數(shù)據(jù)流后即可接管底層上傳對(duì)應(yīng)訂閱主題的數(shù)據(jù),經(jīng)過(guò)JAVA 程序?qū)庸軘?shù)據(jù)進(jìn)行有效信息提取后,再將數(shù)據(jù)發(fā)送至表盤數(shù)據(jù)接口表盤即可自動(dòng)更新數(shù)據(jù),當(dāng)前設(shè)置參數(shù)為5s 更新一次參數(shù)。
圖7 可視化操作頁(yè)面
設(shè)定水溫是由ONENET 的旋鈕接口組件進(jìn)行實(shí)現(xiàn),當(dāng)用戶操作結(jié)束時(shí)此組件會(huì)自動(dòng)往設(shè)定的訂閱主題下下發(fā)一組數(shù)據(jù),此組數(shù)據(jù)包含當(dāng)前所設(shè)置的水溫?cái)?shù)值。對(duì)于按鈕的操作也同理,當(dāng)操作按鈕改變狀態(tài)時(shí),按鈕組件也會(huì)向?qū)?yīng)的訂閱主題下發(fā)開關(guān)數(shù)據(jù)。開關(guān)數(shù)據(jù)可自行定義,當(dāng)前所定義的數(shù)據(jù)為關(guān):0x01,開:0x00。
恒溫系統(tǒng)的工作流程圖如圖8 所示,通過(guò)操作系統(tǒng)RT-Thread 對(duì)所需要進(jìn)行的任務(wù)進(jìn)行合理的安排,由于RTThread 是實(shí)時(shí)線性操作所以任務(wù)的安排具有優(yōu)先級(jí),獲取水溫任務(wù)尤為關(guān)鍵,程序運(yùn)行后會(huì)首先與防水行數(shù)字傳感器D18B20 進(jìn)行通信,獲取到溫度數(shù)據(jù)后再與溫濕度傳感器(DHT11)通信,獲取環(huán)境的溫濕度值后用戶可以根據(jù)環(huán)境溫濕度調(diào)整水溫,程序所獲取的溫濕度都會(huì)上傳的用戶操作界面顯示。
圖8 恒溫系統(tǒng)工作流程圖
根據(jù)當(dāng)前所采集到的水溫信息,并且通過(guò)串口數(shù)據(jù)獲取到的用戶所設(shè)置的水溫信息進(jìn)行比對(duì),水溫控制方面采用了類PID 算法的模糊控制,考慮到水溫不均衡,并沒(méi)有采用PID 算法的精確控制特性,而是在水溫即將到達(dá)預(yù)設(shè)值時(shí)進(jìn)行模糊控制,通過(guò)簡(jiǎn)易算法結(jié)果STM32 操作硬件IO 口對(duì)陶瓷加熱驅(qū)動(dòng)電路進(jìn)行控制,通過(guò)PWM 控制驅(qū)動(dòng)器的工作時(shí)間,從而有效控制陶瓷加熱片的功率,即可實(shí)現(xiàn)快速升溫與恒溫控制,確保水溫不會(huì)有太大的波動(dòng)從而提高用戶體驗(yàn)感。
ESP8266 通電后會(huì)首先自檢各功能,當(dāng)檢查無(wú)誤后會(huì)對(duì)當(dāng)前WiFi 進(jìn)行連接,如果發(fā)現(xiàn)連接不成功會(huì)啟動(dòng)自動(dòng)配網(wǎng)模式,此時(shí)用戶開啟手機(jī)自動(dòng)配網(wǎng)APP 即可讓ESP8266連接到與手機(jī)同一網(wǎng)絡(luò)。當(dāng)網(wǎng)絡(luò)連接成功后會(huì)自動(dòng)與ONENET 服務(wù)器進(jìn)行握手,發(fā)送用戶ID 與用戶Key 后燈帶服務(wù)器驗(yàn)證后握手,驗(yàn)證成功后會(huì)持續(xù)檢測(cè)串口數(shù)據(jù),當(dāng)檢測(cè)到ESP8266 串口數(shù)據(jù)不為零時(shí)延時(shí)100ms 后對(duì)串口數(shù)據(jù)全部讀取,后進(jìn)行解析出有效數(shù)據(jù),將數(shù)據(jù)發(fā)送至對(duì)應(yīng)的訂閱主題下。當(dāng)ONENET 服務(wù)器下發(fā)數(shù)據(jù)后,MQTT 庫(kù)函數(shù)會(huì)調(diào)用接收函數(shù),接收函數(shù)對(duì)ONENET 下發(fā)數(shù)據(jù)進(jìn)行解析后通過(guò)串口發(fā)送給STM32F103 單片機(jī),發(fā)送成功后會(huì)復(fù)位并等待下次數(shù)據(jù)下發(fā)。如圖9 所示。
圖9 ESP8266 程序流程
如圖10 所示,圖形是示波器測(cè)量陶瓷加熱片驅(qū)動(dòng)電路的輸入信號(hào),示波器保持情況下進(jìn)行截圖所獲取的,加熱片驅(qū)動(dòng)電路輸入信號(hào)頻率為65kHz,圖中0.08 占空比為內(nèi)部經(jīng)過(guò)計(jì)算所得出當(dāng)前加熱片需要開啟的比例,此時(shí)水溫已經(jīng)接近預(yù)設(shè)溫度程序會(huì)自動(dòng)降低占空比來(lái)降低加熱片功率來(lái)防止水溫過(guò)沖,導(dǎo)致用戶燙傷或其他不可出現(xiàn)意外。
圖10 加熱器驅(qū)動(dòng)波形
如圖11 所示,圖中代碼為ONENET 圖形化界面的數(shù)據(jù)解析代碼,剛開始調(diào)試時(shí)數(shù)據(jù)總是出錯(cuò),經(jīng)過(guò)反復(fù)檢查后發(fā)現(xiàn)代碼并沒(méi)有起作用,所以O(shè)NENET 界面一直顯示數(shù)據(jù)解析錯(cuò)誤,當(dāng)調(diào)整好配置好代碼正常運(yùn)行,但是顯示數(shù)據(jù)總是60,以為是底層數(shù)據(jù)上傳失敗,后經(jīng)過(guò)MQTTx 軟件進(jìn)行數(shù)據(jù)獲取發(fā)現(xiàn)數(shù)據(jù)格式與數(shù)據(jù)都不曾有錯(cuò),經(jīng)過(guò)返回?cái)?shù)據(jù)對(duì)比發(fā)現(xiàn)當(dāng)前代碼return arr[1];所返回的數(shù)據(jù)位不同,后改成如圖的代碼數(shù)據(jù)即顯示成功。
圖11 云端數(shù)據(jù)過(guò)濾器代碼
本設(shè)計(jì)是一個(gè)基于STM32 微控制器的恒溫控制系統(tǒng),水溫溫度能根據(jù)環(huán)境溫度保持恒溫并且可以調(diào)控溫度,實(shí)現(xiàn)對(duì)溫度的采集與分析。在本設(shè)計(jì)的制作過(guò)程中,完成了軟硬件的設(shè)計(jì)和實(shí)物的制作。
本系統(tǒng)使用嵌入式技術(shù),采用DS18B20 數(shù)字溫度傳感器和DHT11 溫濕度傳感器,實(shí)現(xiàn)了模糊控制下的恒溫控制并且實(shí)時(shí)溫度的顯示。能夠?qū)崿F(xiàn)智能恒溫解決了日常熱水器需要手動(dòng)調(diào)節(jié)溫度的問(wèn)題,有效的減少了能源的消耗。通過(guò)對(duì)本設(shè)計(jì)的研究與實(shí)現(xiàn),我深刻體會(huì)到了單片機(jī)技術(shù)的先進(jìn)性和諸多優(yōu)點(diǎn),在現(xiàn)代和未來(lái)的工業(yè)發(fā)展中單片機(jī)技術(shù)必定會(huì)擁有廣闊的應(yīng)用前景。