李文雯,時之媛,陳宇燦,王廣文,趙 亮
(大連理工大學 電子信息與電氣工程學部,遼寧 大連 116024)
智慧城市是利用工程、科技、節能減排等方式改善城市治理水平的方式,包括道路交通、電網、管網、橋梁等,將城市中普遍存在的資源與信息技術相結合,實現資源數字化,改善資源利用率,提高服務性能[1-3]。在城市智慧化發展進程中,我國城市排水管網系統的發展較為緩慢,隨著全球變暖導致的強降雨天氣增多,普遍存在由于暴雨導致的窨井內澇問題,對道路正常通行及人民生命安全產生不利影響[4]。因此,對窨井中的液位進行監測成為改善排水管網、減少城市內澇的重要手段之一。
液位監測多采用聲波、電容等傳感設備進行測量。李澤[5]等人設計了一種超聲波液位測量系統,通過對聲波信號進行連續采集,實現液位的自動在線監測;趙明[6]等人提出了一種使用電容式傳感器測量液位的方案,將液位數據通過CAN總線發送至上位機;Konstantinos Loizou[7]等人通過研究現有液位測量技術提出了新型電容式液位測量系統,由于電容的固有非線性影響,測量性能與超聲波性能相當。以上研究均是使用傳感設備對液位進行定時采集,缺少針對短時間內液位突增的處理,導致系統數據反映不及時。Silviu C.Fole[8],Shu T[9],Vana Jelicic[10]等人提出的通過調整測量間隔,改變采集與傳輸速率并減少系統功耗的思路,與本文提出的液位采集與傳輸系統有相似之處。本文以STM32微控制器為核心,利用雷達液位計測量液位,加入2個浮球開關作為液位突增預警信號,從而動態改變采集時間。系統通過設計MOS關斷電路在低液位時關閉耗能電路,滿足低功耗需求。
(1)雷達液位計通過天線系統向液面方向發射短促的雷達脈沖,脈沖波遇到液面反射回來后被天線系統重新接收,將雷達脈沖從發射到接收所需的運行時間、輸入的窨井高度通過STM32微控制器處理、計算后得到液位高度[11],液位計測量示意如圖1所示。

圖1 液位測量示意圖
設雷達與液面間的距離為D,脈沖波的傳播速度為光速c,雷達脈沖從發射到接收所需時間為t,得出雷達到液面的距離D為:

若已知窨井的高度為L,則窨井液位的高度H為:

(2)浮球開關是一種結構簡單、使用方便的液位控制器件,無需提供電源,無復雜電路連接。當浮球開關被測介質浮動浮子時,浮子帶動主體移動,同時浮子另一端的磁體將控制桿上的磁體開關動作,產生開關信號。
系統選用2個浮球開關分別放置于窨井井壁1/2位置、2/3位置,作為液位突增信號開關,用于判斷液位所處位置是否需要啟動預警,進而改變系統的工作模式,更改采集時間,提高系統的靈活性及數據采集的實時性。
系統結構如圖2所示。系統主要由STM32單片機、MOS關斷電路、RS 485收發電路、中斷觸發電路等組成。雷達液位計采集液位值,輸出4~20 mA信號,送入模擬量轉RS 485采集模塊進行信號轉換后,通過RS 485收發電路與STM32單片機串口通信。使用浮球開關1、浮球開關2作為液位突增預警開關,動態改變數據采集時間,提高數據的實時性。系統中設計了MOS關斷電路,當系統處于正常工作模式時,STM32單片機能夠通過MOS關斷電路關閉其他耗能電路及設備。GPRS DTU模塊將STM32單片機處理后的液位數據、電池電壓、故障碼數據發送到上位機顯示。

圖2 系統結構
系統選用的控制器型號為STM32F103C8T6微處理器。STM32F103C8T6是基于ARM 的32位Cortex-M3內核的單片機,工作頻率最高達72 MHz,內置64 KB程序存儲器,3個通用16位定時器,具有豐富的I/O接口以及串行通信接口,工作電壓范圍為2.0~3.6 V,具有功耗低、速度快、性價比高等優點,可滿足系統低功耗應用的要求。STM32單片機最小系統電路包括時鐘源電路、復位電路、供電濾波電路。
MOS關斷電路的主要作用是控制電路的啟停,如在正常工作模式下,即液位低于窨井1/2以下,此時系統的采集傳輸頻率較小,STM32單片機可輸出控制信號通過MOS關斷電路使系統中的耗能模塊(如模擬量轉RS 485采集模塊、GPRS DTU模塊等),降低系統能耗。MOS關斷電路如圖3所示,其控制信號由STM32單片機的PA7引腳(MOS-GPIO2)輸出。

圖3 MOS關斷電路
當MOS-GPIO2輸出高電平時,AOD4184 MOS管和AOD4185 MOS管均為導通狀態,IN+引腳的12 V電壓通過V-out引腳輸出,模擬量轉RS 485采集模塊和GPRS DTU開啟;當MOS-GPIO2輸出低電平時,AOD4184 MOS管與AOD4185 MOS管均截止,V-out引腳無輸出,模擬量轉RS 485采集模塊和GPRS DTU的供電被切斷,停止工作。
為了應對暴雨、排水突增等導致液位上漲過快的情況,使數據采集更靈活、數據反饋更及時,系統設置了3種工作模式,分為正常工作模式、黃色預警模式、紅色預警模式,這3種工作模式的系統喚醒時間即采集時間分別為6 h、5 min、1 min。由液位值與外部浮球是否動作決定系統是否進行模式切換,通過高優先級中斷進行處理。
主程序流程如圖4所示。系統上電后,進行初始化,SysTick系統嘀嗒時鐘、RTC實時時鐘、GPIO端口配置、串口初始化、MOS控制信號端口輸出高電平,使RS 485收發電路、GPRS DTU模塊、模擬量轉RS 485采集模塊開啟,默認采集周期為6 h,即默認開機為正常工作模式,采集時間未到則系統等待上位機發送查詢報文,系統處于待機模式,待到達采集時刻后喚醒。6 h內若無中斷產生,則系統開啟正常采集模式,上位機通過串口3發送查詢報文,系統進行液位計電流、電壓信號的采集,通過模擬量轉RS 485采集模塊轉換信號后送入STM32單片機處理并存儲,若電流小于4 mA,說明液位計出現故障,產生報文,對應位輸出故障碼00 01;反之,液位計工作正常,此時產生的報文為00 00。由于中斷信號是由外部浮球開關是否動作產生,無中斷產生說明液位未達到外部浮球開關所在預警位置,系統在2個浮球預警對應位輸出報文00 00。此時,系統產生響應報文中的寄存器數據,包括電流值、電壓值、浮球2指示、浮球1指示、液位計指示,通過串口2連接GPRS DTU模塊發送至上位機。一個采集周期的數據采集發送完成后,STM32單片機對應MOS控制端口復位,輸出低電平,MOS關斷電路控制相應RS 485收發電路、GPRS DTU模塊、模擬量轉RS 485采集模塊停止工作,減少能耗。系統進入停機模式,等待下一個采集周期喚醒或外部浮球開關中斷喚醒。

圖4 主程序流程
系統默認為正常采集模式,即每6小時采集、發送數據一次,此時液位應處于窨井1/2以下。當液位繼續上漲超過1/2黃色預警位置或2/3紅色預警位置時,浮球開關動作,產生開關信號,上升沿觸發,使系統進入中斷。系統中斷程序如圖5所示。系統進入中斷響應后,清除此中斷的標志位,執行系統復位操作,重新初始化各配置,并保存系統參數。判斷中斷來源,若中斷由外部中斷線EXTI_Line6產生,則為PA6引腳所連的浮球開關動作,說明液位超過1/2位置,進入黃色預警模式,對應位輸出浮球信號報文,設置RTC鬧鐘喚醒時間(采集時間為5 min),保存參數,轉入初始化后的主程序,以間隔5 min進行周期性采集;若由外部中斷線EXTI_Line7產生,則為PA7引腳所連的浮球開關動作,說明液位超過2/3位置,進入紅色預警模式,對應位輸出浮球信號報文,設置RTC鬧鐘喚醒時間(采集時間為1 min),保存參數,轉入初始化后的主程序,以間隔1 min進行周期性采集。

圖5 中斷程序流程
系統的測試分為2類,即有液位計接入和無液位計接入,其中每類測試包含5組隨機實驗,每組實驗包含1個完整的喚醒周期,即系統初始化、數據采集階段、數據傳輸階段和休眠階段,通過分析系統在每個階段的工作時間和電流消耗,進而分析系統的整體功耗。
(1)有液位計接入
將液位計接入系統,測得系統在正常工作模式下電流消耗情況如圖6所示。

圖6 有液位計接入時的電流消耗波形
系統初始化,執行STM32處理器的初始化以及GPRS模塊聯網功能,如圖6位置1所示,聯網脈沖導致電流尖峰出現,此階段平均時間為26 s,電流平均值為64.1 mA。
數據采集階段,執行液位計數據采集功能,包括液位值、浮球信號和電池電壓值,如圖6位置2所示,此階段平均時間為27 s,電流平均值為44.4 mA。
數據傳輸階段,執行GPRS模塊數據傳輸以及參數配置更新操作,如圖6位置3所示。GPRS模塊向云端發送數據時產生電流值尖峰,峰值平均值為106.3 mA,平均時間為2 s,之后電流下降,系統進入等待云端指令狀態,進行參數配置更新,此狀態只在正常工作模式下出現。正常工作模式下傳輸階段平均時間為38 s,電流平均值為49.8 mA。
休眠階段,系統進入休眠狀態后,通過MOS電路關斷耗能模塊,系統進入低功耗狀態,如圖6位置4所示,電流平均值為 180.0 μA。
每組實驗中各工作階段的平均時間、電流峰值和電流平均值數據見表1、表2所列。

表1 不同階段平均工作時間 s

表2 不同階段電流值
(2)無液位計接入
斷開液位計與系統的連接,測得系統在正常工作模式下電流消耗情況如圖7所示。從圖中可看出,系統數據采集階段時間變長,平均采集時間為90 s,約為有液位計接入時的3倍,這是因為系統采用的液位計初始化時間約為30 s,若系統在連續3個周期都未收到液位計的響應,則系統輸出故障碼。此測試驗證了系統能夠正確處理液位計發生故障并上報的情況。

圖7 無液位計接入時的電流消耗波形
記一次喚醒周期內每個工作階段的平均時間分別為t1,t2,t3,t4,電流平均值分別為I1,I2,I3,I4。
正常工作模式下,系統喚醒間隔為6 h,其中系統初始化階段t1為26 s,I1為64.1 mA;數據采集階段t2為27 s,I2為44.4 mA;數據傳輸階段t3為38 s,I3為49.8 mA;其余時間為休眠狀態,t4為6 h,I4為180.0 μA。
正常工作模式下喚醒一次消耗的電能qn:

黃色預警模式下,系統喚醒間隔為5 min,前2個階段與正常工作模式一致,數據傳輸階段t3為2 s,I3為106.3 mA,此模式下休眠階段t4為[5×60-(t1+t2+t3)] s,接近4 min,I4為180.0 μA。計算得到黃色預警工作模式下喚醒一次消耗的電能qy:

紅色預警模式下,系統喚醒間隔為1 min,前3個階段與黃色預警模式一致,此模式下系統休眠時間接近0。計算得到紅色預警模式下喚醒一次消耗的電能qr:

假設一年中累計正常工作模式下的工作時間為350天,黃色預警模式下為10天,紅色預警模式下為5天,則系統在一年內消耗的電能Q為:

代入數據計算:

本文以窨井液位為研究對象,設計了一種基于STM32的低功耗窨井液位采集與傳輸系統,通過使用雷達液位計采集液位值,并通過GPRS模塊將液位值、電池電壓、故障碼上傳到接收端或云端,使用MOS電路控制其他耗能電路的啟停,同時為了能夠靈活應對液位突增情況,選擇使用浮球開關作為預警信號,改變采樣周期,使系統能夠在正常工作模式、黃色預警、紅色預警模式下切換。通過兩類隨機實驗,證明了系統能夠穩定運行,并對電流的消耗情況進行分析,得到不同工作階段消耗的電能,估算出在假設情況下,一年的耗能為12.01 A·h,滿足系統低功耗的要求。后續準備在系統中加入趨勢預測算法,使系統能夠提前預測液位的增長趨勢,提高系統的實用性。