彭 杰,李星月,郎佳紅,鄭詩程
(安徽工業(yè)大學(xué) 電力電子與運(yùn)動控制重點(diǎn)實(shí)驗(yàn)室,安徽 馬鞍山 243002)
隨著社會的快速發(fā)展,生產(chǎn)生活中對于能源的需求越來越大,用戶對于生活質(zhì)量的要求也越來越高。目前,市面上的太陽能熱水器盈千累萬,但大多容易出現(xiàn)數(shù)據(jù)采集有誤、監(jiān)控有效范圍過短、上水量控制不合理等問題。本文為解決此類問題設(shè)計(jì)了一種基于STM32的太陽能熱水器控制系統(tǒng)。以STM32為主控制芯片,結(jié)合其他硬件電路和設(shè)計(jì)完成對太陽能熱水器的本地監(jiān)控和遠(yuǎn)程監(jiān)控,其中本地監(jiān)控模塊采用MCGS為系統(tǒng)的人機(jī)交互界面,能夠向用戶傳達(dá)信息。遠(yuǎn)程監(jiān)控采用GPRS模塊與用戶的手機(jī)或電腦連接,使用戶在各個(gè)地方都能對系統(tǒng)進(jìn)行監(jiān)控。整個(gè)系統(tǒng)優(yōu)化了傳感器的選取,同時(shí)與物聯(lián)網(wǎng)技術(shù)結(jié)合,有針對性地解決了傳統(tǒng)控制系統(tǒng)中的不足,使用戶能夠隨時(shí)隨地查看熱水器的狀態(tài)并進(jìn)行操控,滿足了用戶需求,節(jié)省了更多能源,提升了用戶體驗(yàn)。
系統(tǒng)是由主控制器、傳感器、電輔熱裝置、上水控制裝置、GPRS通信模塊、云服務(wù)平臺、本地監(jiān)控和遠(yuǎn)程監(jiān)控端組成。其中,電輔熱裝置和上水控制裝置由繼電器和執(zhí)行器組成,執(zhí)行器分別為加熱棒和電磁水閥。本地監(jiān)控端通過MCGS觸摸屏來實(shí)現(xiàn)監(jiān)控,遠(yuǎn)程監(jiān)控端則是使用PC機(jī)實(shí)現(xiàn)監(jiān)控。
通過單總線技術(shù)實(shí)現(xiàn)STM32與外部傳感器的通信,并把從溫度傳感器和液位傳感器得到的水溫和水位轉(zhuǎn)換成可傳輸?shù)碾娦盘?,再將電信號傳輸給核心主控制模塊,主控制模塊對接收的數(shù)據(jù)進(jìn)行加工、處理和顯示。通過RS 485通信電路將數(shù)據(jù)傳輸給MCGS觸摸屏。MCGS觸摸屏?xí)@示出采集到的實(shí)時(shí)水溫和水位,用戶可以直接在觸摸屏上進(jìn)行簡單的操作。在執(zhí)行器模塊設(shè)計(jì)中,當(dāng)水位采集值低于設(shè)定值時(shí),主控制器會做出相應(yīng)動作,使得繼電器和電磁水閥通電開始工作,直至達(dá)到用戶設(shè)定的理想水位;當(dāng)水位采集值高于設(shè)定值時(shí),主控制器會做出相應(yīng)動作,使得繼電器和電磁水閥斷電停止工作,即已實(shí)現(xiàn)用戶的需求時(shí)就不再進(jìn)行上水。同理,由于控制電路和繼電器的選擇相同,則加熱棒的工作情況也與上述相同。溫度傳感器和液位傳感器在斷電后會自動保存數(shù)據(jù),這一功能使得用戶設(shè)置的參數(shù)會保留在單片機(jī)的存儲空間中,這種“記憶功能”方便了用戶再次通電使用。系統(tǒng)中加入了GPRS通信模塊,主控制器通過GPRS通信模塊將數(shù)據(jù)傳輸至云服務(wù)平臺,云服務(wù)平臺與電腦監(jiān)控端相連接,方便用戶對系統(tǒng)進(jìn)行控制。監(jiān)控系統(tǒng)還具備定時(shí)功能,用戶可以根據(jù)需求設(shè)置加熱和上水的時(shí)間。本文設(shè)計(jì)的智能控制系統(tǒng)結(jié)構(gòu)如圖1所示。本系統(tǒng)彌補(bǔ)了傳統(tǒng)控制系統(tǒng)數(shù)據(jù)測量不精確、智能化水平不高等不足,不僅可以給用戶的生活帶來極大的便利,而且也使用戶的生活環(huán)境更加愜意和安全。
圖1 太陽能熱水器系統(tǒng)結(jié)構(gòu)
主控制器作為控制和模塊協(xié)調(diào)的中樞,其選擇必須面面俱到。對現(xiàn)有系統(tǒng)的發(fā)展需求進(jìn)行分析,設(shè)計(jì)了兩個(gè)USART接口分別實(shí)現(xiàn)本地和遠(yuǎn)程監(jiān)控,1個(gè)A/D口實(shí)現(xiàn)水位檢測,以及1個(gè)單總線和多個(gè)I/O口實(shí)現(xiàn)更多功能。此外,還需要對用戶的使用數(shù)據(jù)進(jìn)行記錄和處理。綜合上述要求,選定STM32F103ZET6作為本系統(tǒng)的主控制器。
本系統(tǒng)需要對水溫進(jìn)行精確測量,其水溫范圍約為0~100 ℃。因此,選定DS18B20作為本系統(tǒng)的溫度測量模塊。DS18B20是一種單總線接口的數(shù)字化溫度傳感器,遵循單總線通信協(xié)議。通過STM32單片機(jī)的通用GPIO引腳來實(shí)現(xiàn)與溫度傳感器的通信,并把從溫度傳感器得到的數(shù)據(jù)傳輸?shù)斤@示屏上。
DS18B20內(nèi)部結(jié)構(gòu)框圖如圖2所示,圖中ROM的64位序列號是DS18B20的地址序列碼,因此一條總線上可以同時(shí)掛接多個(gè)DS18B20,不會出現(xiàn)混亂現(xiàn)象。此外,用戶可以根據(jù)需求自定義非易失性溫度報(bào)警上限值TH和下限值TL,斷電后此數(shù)據(jù)依舊被保存。當(dāng)DS18B20完成測溫后,所測數(shù)值會自動與用戶設(shè)定的TH和TL的觸發(fā)值相比較,如果測溫結(jié)果不在設(shè)定值范圍內(nèi),DS18B20內(nèi)部的告警標(biāo)志就會被置位,表示溫度值超出了設(shè)定范圍。
圖2 DS18B20內(nèi)部結(jié)構(gòu)框圖
本系統(tǒng)的壓力傳感器選用的是KY系列壓力傳感器,在STM32單片機(jī)的控制下,模擬量通過A/D轉(zhuǎn)換,可以保證采集到的數(shù)據(jù)有較高的精度。
壓力傳感器的應(yīng)用電路如圖3所示,它采用的是硅壓阻式差壓壓力芯體,P-out端口的輸出電壓與檢測口處的壓強(qiáng)呈正比例線性關(guān)系。根據(jù)帕斯卡定律,液體內(nèi)部壓強(qiáng)與液體深度有關(guān)。因此將檢測口放于水箱底部,通過測量P-out端口的輸出電壓,即可計(jì)算出水箱水位。使用前須將檢測口放置在太陽能熱水器蓄水箱底端,導(dǎo)氣管高于水箱頂部,這樣當(dāng)液面高于檢測口時(shí),測量點(diǎn)處的壓強(qiáng)即為液體壓強(qiáng)。使用時(shí)VCC端口接5 V的電壓,GND端口接5 V所對應(yīng)的GND,P-out端口接控制器的A/D引腳,通過對該引腳的電壓進(jìn)行采樣轉(zhuǎn)換即可得出水箱的水位。
圖3 壓力傳感器電路
本系統(tǒng)的執(zhí)行器模塊設(shè)計(jì)包括電輔熱模塊和上水控制模塊。電輔熱模塊包含繼電器和電加熱棒,上水控制模塊包含繼電器和電磁水閥。繼電器是具有隔離功能的“自動開關(guān)”元件,是實(shí)現(xiàn)外部設(shè)備控制的主要手段,因此繼電器的有效控制是執(zhí)行器模塊安全穩(wěn)定運(yùn)行的保證。本系統(tǒng)通過分析電加熱棒和電磁水閥的功率,最終選用了HRS4H-S-DC12 V型繼電器。主控制器通過繼電器驅(qū)動電路實(shí)現(xiàn)對繼電器的控制,從而達(dá)到加熱、上水和停止執(zhí)行的目的。
繼電器驅(qū)動電路如圖4所示,結(jié)合電路圖介紹執(zhí)行加熱動作的工作過程。圖中的SIGNAL-IN1連接主控制器的PB3口,執(zhí)行器為電加熱棒。當(dāng)需要打開加熱開關(guān)時(shí),控制器使該I/O口輸出高電平信號,此時(shí)MC1413輸入引腳4腳為高電平,輸出引腳13腳為低電平,繼電器K2通電吸合,使得繼電器輸出側(cè)2A和2B導(dǎo)通,輸出回路中的加熱棒通電工作,系統(tǒng)開始對水箱中的水進(jìn)行加熱,同時(shí)指示燈LED6發(fā)光。當(dāng)加熱到指定值時(shí),控制器使PB3口輸出低電平,MC1413的13腳輸出為高電平,繼電器斷電釋放,電加熱棒斷電停止工作,加熱動作結(jié)束。
圖4 繼電器驅(qū)動電路
上水與加熱的控制電路原理與繼電器驅(qū)動電路原理相同,兩個(gè)繼電器都選擇了MC1413進(jìn)行控制,僅僅是執(zhí)行器的不同,由電加熱棒換成了電磁水閥。本方案選用的電磁水閥是AC 220 V常閉銅電磁水閥。當(dāng)接入220 V交流電時(shí)開關(guān)開啟,斷電時(shí)開關(guān)閉合,分別執(zhí)行相應(yīng)動作。為防止加熱棒在水中腐蝕過快,選擇的加熱棒是經(jīng)久耐用的AC 220 V整體防水加熱管,其正常工作時(shí)的功率為1 000 W。所選的HRS4H-S-DC 12 V型繼電器輸出側(cè)最高可承受2 500 W功率,即所選加熱棒正常工作時(shí)的功率在繼電器可承受的功率范圍內(nèi)。
本系統(tǒng)設(shè)計(jì)兩個(gè)通信模塊,實(shí)現(xiàn)本地監(jiān)控和遠(yuǎn)程監(jiān)控。選用RS 485實(shí)現(xiàn)本地監(jiān)控,主控制器通過RS 485與本地客戶端完成數(shù)據(jù)交互,RS 485的連接方式如圖5所示。遠(yuǎn)程監(jiān)控是讓控制器與SIM800C模塊相連接,將SIM800C作為傳 輸中介來實(shí)現(xiàn)與遠(yuǎn)程監(jiān)控客戶端的數(shù)據(jù)交互。
圖5 RS 485連接
RS 485串口通信電路如圖6所示。從圖6可以看出:STM32單片機(jī)采用SP3485作為收發(fā)器,A、B接口用于連接485總線;通過STM32F1的PD7控制SP3485的收發(fā),當(dāng)PD7=0時(shí)為接收模式,當(dāng)PD7=1時(shí)為發(fā)送模式。兩個(gè)偏置電阻用來保證總線空閑時(shí),A、B之間的電壓差都大于200 mV,從而避免因總線空閑引起的A和B壓差不定、邏輯錯(cuò)亂以及出現(xiàn)亂碼的現(xiàn)象。USART2 TX和USART2 RX分別與主控制器的PA2、PA3相連??刂破鬏敵龅腡TL電平通過SP3485芯片轉(zhuǎn)成了485電平,485電平信號通過RS 485串口線可被MCGS或其他設(shè)備接收。同樣地,由MCGS或其他設(shè)備發(fā)出的485電平也可通過該芯片轉(zhuǎn)換為控制器可識別的TTL電平,從而實(shí)現(xiàn)主控制器與其他監(jiān)控設(shè)備的數(shù)據(jù)交換。
圖6 RS 485串口通信電路
SIM800C通信模塊采用高性能工業(yè)級GPRS開發(fā)板,可以在低功耗的情況下實(shí)現(xiàn)與遠(yuǎn)程監(jiān)控客戶端的數(shù)據(jù)交互,其電路原理如圖7所示。
圖7 SIM800C模塊原理
使用時(shí)需要插入一張SIM卡,明確遠(yuǎn)程客戶端的IP地址后,主控制器通過串口發(fā)送AT指令,此時(shí)模塊向遠(yuǎn)程客戶端的IP地址發(fā)送數(shù)據(jù),遠(yuǎn)程客戶端的TCP服務(wù)器在接收到數(shù)據(jù)后將其轉(zhuǎn)化為可視數(shù)據(jù)顯現(xiàn)給用戶。同時(shí),遠(yuǎn)程客戶端也可以向SIM卡反饋指令,SIM800C接收到指令后將其轉(zhuǎn)送到主控制器,主控制器解析控制指令并做出響應(yīng)。此外,系統(tǒng)能夠根據(jù)需求隨時(shí)開啟或暫停SIM800C通信模塊。
在主循環(huán)程序中,首先完成主控制器與客戶端的自動配網(wǎng),實(shí)現(xiàn)信息交互。然后,對傳感器模塊的子程序進(jìn)行調(diào)用,讀取檢測實(shí)時(shí)數(shù)據(jù)。根據(jù)采集到的數(shù)據(jù)判斷系統(tǒng)工作狀態(tài)有無異常,若有異常,則跳轉(zhuǎn)至異常狀態(tài)處理子程序;若無異常,則判斷是否接收到控制指令。本地監(jiān)控端和遠(yuǎn)程監(jiān)控端均可對系統(tǒng)發(fā)出控制指令,若接收到控制指令,則響應(yīng)相應(yīng)指令;若沒有接收到控制指令,則繼續(xù)執(zhí)行執(zhí)行器子程序,讓系統(tǒng)處于正常的工作狀態(tài)。聯(lián)網(wǎng)后,不斷調(diào)用數(shù)據(jù)顯示子程序,并讓主程序一直處于循環(huán)狀態(tài),將有效數(shù)據(jù)可視化地通過本地監(jiān)控端和遠(yuǎn)程監(jiān)控端呈現(xiàn)給用戶,其流程如圖8所示。
圖8 主程序流程
執(zhí)行器子程序包括控制上水和加熱動作的操作過程。由于兩者的執(zhí)行過程大致相同,下面僅以加熱動作為例,介紹執(zhí)行器子程序的運(yùn)行流程,其流程如圖9所示。
圖9 加熱流程
將檢測到的實(shí)時(shí)溫度值與設(shè)定溫度值進(jìn)行比較,當(dāng)實(shí)時(shí)溫度值高于或等于設(shè)定溫度值時(shí),主控制器通過驅(qū)動電路控制繼電器斷電,加熱棒電源被斷開,加熱停止;當(dāng)實(shí)時(shí)溫度值低于設(shè)定溫度值時(shí),判斷系統(tǒng)是否處于可以進(jìn)行加熱的狀態(tài),即判斷當(dāng)前水箱中的水位是否達(dá)到可加熱水位下限值,防止出現(xiàn)干燒的情況。若水位過低,則控制器向客戶端發(fā)出低水位告警指令;若水位符合加熱要求,主控制器通過驅(qū)動電路控制繼電器吸合,加熱棒電源被開啟,開始加熱,直至實(shí)時(shí)溫度值達(dá)到設(shè)定溫度值時(shí),加熱棒電源被斷開,停止加熱。
異常情況通常表現(xiàn)為水位過低和水溫過高造成干燒、炸管等現(xiàn)象,異常狀態(tài)檢測與處理流程如圖10所示。
圖10 異常狀態(tài)檢測和處理流程
系統(tǒng)根據(jù)實(shí)時(shí)水位和水溫與設(shè)定值進(jìn)行比較,當(dāng)水位低于10%時(shí),客戶端將會收到低水位警告。此時(shí),若水溫低于90 ℃,系統(tǒng)執(zhí)行上水動作;若水溫高于90 ℃,大概率會發(fā)生炸管的情況,系統(tǒng)發(fā)出警示并不執(zhí)行上水動作。當(dāng)水位低于20%時(shí),同樣可能會發(fā)生干燒的情況,系統(tǒng)發(fā)出警示并設(shè)置系統(tǒng)不可加熱。當(dāng)水位高于20%時(shí),符合加熱時(shí)的水位要求,即可設(shè)置系統(tǒng)執(zhí)行加熱動作。當(dāng)判斷系統(tǒng)處于異常狀態(tài)時(shí),客戶端會收到警示,同時(shí)系統(tǒng)會做出保護(hù)動作。
本文設(shè)計(jì)了以MCGS組態(tài)軟件為基礎(chǔ)的太陽能熱水器本地監(jiān)控系統(tǒng),系統(tǒng)對數(shù)據(jù)做出采集、分析和顯示。對異常數(shù)據(jù)進(jìn)行報(bào)警提醒,實(shí)現(xiàn)設(shè)備精準(zhǔn)化維護(hù)。由于嵌入式版可視化程度較高、功能較多,因此將其作為觸摸屏組態(tài)軟件搭建的基礎(chǔ)環(huán)境。完成組態(tài)后,主控制器與MCGS通過Modbus協(xié)議實(shí)現(xiàn)串行通信。利用腳本開發(fā)MCGS設(shè)備通信驅(qū)動,驅(qū)動開發(fā)結(jié)束后,可以與系統(tǒng)實(shí)行通信,執(zhí)行太陽能熱水器的信息采集。數(shù)據(jù)傳輸通過TCP/IP協(xié)議實(shí)現(xiàn),將屏幕與主控制器的通信接口互聯(lián),經(jīng)過以太網(wǎng)將數(shù)據(jù)上傳至主機(jī),實(shí)現(xiàn)實(shí)時(shí)監(jiān)控。
完成硬件連接后,MCGS向主控制器發(fā)送查詢指令,主控制器接收到指令后,按照傳輸協(xié)議傳輸數(shù)據(jù),MCGS接收到數(shù)據(jù)后會將其寫入實(shí)時(shí)數(shù)據(jù)庫定義的變量中。這些變量與用戶窗口上的控件關(guān)聯(lián),當(dāng)變量值改變,用戶窗口上的數(shù)據(jù)會隨之改變。若MCGS需要對變量做出更改,MCGS將向主控制器發(fā)送寫指令,控制器接收到指令后,將對變量值進(jìn)行更改,同時(shí)會按照傳輸協(xié)議回應(yīng)一串?dāng)?shù)據(jù),MCGS讀取到數(shù)據(jù)后表示修改完成,也可以控制執(zhí)行上水、加熱等操作。
所設(shè)計(jì)的硬件平臺在接入12 V直流電源后,系統(tǒng)正常工作。將MCGS與控制板通過RS 485串口線連接,實(shí)現(xiàn)了MCGS與主控制器的持續(xù)通信,并將采集的數(shù)據(jù)發(fā)送給MCGS,在觸摸屏上顯示。在用戶窗口中設(shè)置小窗口,用戶可根據(jù)需要對參數(shù)和工作狀態(tài)進(jìn)行修改。
MCGS觸摸屏與LCD顯示屏的測試對比如圖11所示。當(dāng)設(shè)定好水位后,點(diǎn)擊上水按鈕,其開關(guān)狀態(tài)會立即發(fā)生變化,對應(yīng)的繼電器指示燈會被點(diǎn)亮。LCD顯示屏中S1、S2分別表示上水開關(guān)和加熱開關(guān),S1置1,S2仍置0。Temp表示當(dāng)前水溫,Depth表示當(dāng)前水位,其值在不斷更新變化。Mode表示當(dāng)前系統(tǒng)工作模式,顯示為Auto即自動模式。T1表示上水時(shí)間,A1表示設(shè)定水位;T2表示加熱時(shí)間,A2表示設(shè)定溫度。MCGS觸摸屏中水管不斷有液體填充,實(shí)時(shí)水位也在不斷檢測和更新。此外,可以看出MCGS觸摸屏中顯示的數(shù)據(jù)與LCD顯示屏中的數(shù)據(jù)完全一致。經(jīng)過測試表明,MCGS完全實(shí)現(xiàn)了本地監(jiān)控的功能。
圖11 MCGS觸摸屏與LCD顯示屏測試對比
遠(yuǎn)程客戶端是在Qt5.8開發(fā)環(huán)境下所編寫的TCP服務(wù)器界面。主控制器借由SIM800C模塊與遠(yuǎn)程監(jiān)控客戶端實(shí)現(xiàn),由于SIM800C發(fā)送或接收的數(shù)據(jù)經(jīng)由GPRS傳輸,因此用戶只要能夠連接到網(wǎng)絡(luò),即可對太陽能熱水器的參數(shù)和狀態(tài)進(jìn)行查看和更改。SIM800C與該界面通過GPRS進(jìn)行數(shù)據(jù)傳輸,通信協(xié)議為TCP/IP協(xié)議。
打開上位機(jī)監(jiān)控界面后,主控制器會自動與監(jiān)控系統(tǒng)連接,之后就可以進(jìn)行數(shù)據(jù)交互。主控制器將收集的數(shù)據(jù)通過SIM800C發(fā)送至遠(yuǎn)程監(jiān)控界面,監(jiān)控系統(tǒng)接收到數(shù)據(jù)后將其顯示給用戶,當(dāng)用戶在界面上進(jìn)行操作時(shí),界面也會有相應(yīng)變化。當(dāng)用戶在界面上點(diǎn)擊加熱按鈕時(shí),會向控制器發(fā)送指令,主控制器通過SIM800C接收到指令后控制加熱繼電器吸合,加熱指示燈亮的同時(shí)LCD屏中的系統(tǒng)狀態(tài)參數(shù)也會隨之更改。由圖12所示的測試結(jié)果可知,設(shè)計(jì)的遠(yuǎn)程監(jiān)控系統(tǒng)能夠?qū)崿F(xiàn)對太陽能熱水器的監(jiān)測和控制。
圖12 上位機(jī)監(jiān)控界面與LCD顯示屏測試對比
本文將太陽能熱水器控制系統(tǒng)與物聯(lián)網(wǎng)技術(shù)深度融合,為監(jiān)控操作受位置影響較大等問題提供了新的解決途徑。其中主控制器的選取是設(shè)計(jì)新型智能控制系統(tǒng)的關(guān)鍵,本地監(jiān)控和遠(yuǎn)程監(jiān)控是系統(tǒng)設(shè)計(jì)的核心環(huán)節(jié)。另外,由于已有的太陽能熱水器中存在傳感器測量不精確、智能化程度不高等問題,因此本文還在系統(tǒng)中設(shè)計(jì)了手動、自動、智能三種模式進(jìn)一步實(shí)現(xiàn)智能化,優(yōu)化了太陽能熱水器控制系統(tǒng)。