劉萌雅,張麗艷,徐銘峰,費繼友
(大連交通大學 電氣信息學院,遼寧 大連 116028)
液位監控在工業生產和人們生活中有很多應用.近年來采用的聲、光、射線的監控方法,如雷達液位監控[1]、超聲波液位監控[2]、激光液位監控[3]等許多工作仍處于實驗室的研究階段,即便有適用的系統問世,成本也是比較高的,且維修起來很麻煩.針對現階段這種狀況,本文給出了一種以STC89C52為處理器的系統,該系統的電路組成比較簡單,調試起來也很方便,能較好的實現液位監控.本文非接觸式的測量方式避免了與液體的直接接觸,使得液位測量不會受到酸、堿、水垢等的影響.相比接觸式的測量方式,該系統在使用時長和安裝上也會有明顯的優勢,一經安裝該系統便可長期穩定地運行在無人監控的狀態下.
本系統硬件[4-7]由電源電路、單片機最小系統、超聲波測距模塊、繼電器控制水泵注水/排水電路、顯示電路、報警電路還有蓄水容器組成,其硬件功能框圖如圖1所示.系統工作原理如下:當液位處于低位時,處理器經過分析液位傳感器傳來的信息,驅動蜂鳴器報警,同時也輸出一個低電平信號使2路繼電器的左邊一路吸合,水泵1開始往容器內注入液體;當液位處于高位的時候,處理器經過分析液位傳感器傳來的信息,驅動蜂鳴器報警,同時也輸出一個低電平信號使2路繼電器的右邊一路吸合,水泵2開始抽出容器內的液體;隨著液位的變化,當到達設定液位時,送入處理器液位傳感器的接口為高電平,繼電器釋放,水泵就會停止工作.另外,當超聲波測距模塊檢測出的液位高度正好等于設定值時,系統保持靜態無反應.整個監控過程,液位的高度都會通過LCD1602顯示出來.對于液位的調整,本系統工作電壓較低,再綜合考慮成本及可操作性,選用了齒輪泵來實現.下面給出部分硬件電路的設計介紹.

圖1 硬件功能框圖
當處理器把一個周期大于10 μs的脈沖信號給超聲波測距模塊,模塊的內部就會發射出8個40 kHz的周期性的電平來檢測回波,如果檢測到回波信號就立刻輸出一個回響信號.所以測量的距離S由式(1)計算得出.

式中:S表示測量距離;t表示發射信號與收到的回響信號的時間差;V表示聲速.
繼電器是一種大電流被小電流控制的自動開關元件.設計中使用如圖2所示的方法連接繼電器和電機(水泵內的電機),能夠實現硬件互鎖,防止兩個電機同時工作.具體過程為:給1號電機控制信號時,1號電機啟動;給2號電機控制信號時,2號電機啟動,如出現程序故障導致兩電機都得到啟動信號,兩路繼電器都發生動作,此時兩個電機均沒有被接通,即不會出現同時工作的故障.

圖2 繼電器和電機的連接電路

圖3 蜂鳴器的驅動電路圖
本次設計選用有源蜂鳴器,并采用低電平有效的輸出方式.單片機I/O引腳輸出的電流比較小,為了能夠驅動蜂鳴器,就需增加一個來放大電流的電路.圖3為蜂鳴器的驅動電路.
系統主程序流程圖[8-12]如圖4所示.其工作過程如下:首先完成系統的初始化,接下來控制超聲波模塊重復的發射信號,每次發射周期結束,再判斷信號發出后等待的時間里回波是否到達,也就是說判斷是否有中斷(見下文2.1節的回波檢測部分),體現在主程序流程圖中是每一次的判斷過程.之后是計算距離值并將其顯示是由中斷子程序實現的,即先將超聲波模塊發射程序初始化,然后等待中斷響應(見下文2.2節的中斷服務程序部分),體現在主程序流程圖中是每一次的判斷之后的執行,待有中斷響應之后,經函數計算將原始時間數據轉換成十進制液位數據顯示輸出.

圖4 主程序流程圖
STC89C52單片機通過 P3.3口(連接 HCSR04的觸發控制信號輸入端Tx),發送出一連串的脈沖,以此來控制時間,隨后啟動定時器T0,當檢測到回波時,通過P3.2口(連接HC-SR04的回響信號輸出端Rx)產生外部中斷信號,T0停止計時,記錄下接收到回波所耗的時間.
系統發射出40 kHz的脈沖信號后,T0開始計時,當遇到液面后返回回波信號,經回波檢測電路產生外部中斷信號傳至單片機,即激發外部中斷0,開始響應中斷服務程序,T0停止計數.而中斷服務程序就是響應外部中斷.在中斷服務程序中,進入中斷服務程序的計數值c被讀出來,保存到隨機存儲器中,再由式(2)算出距離distance的值:

首先,系統進行硬件調試.該調試過程相對簡單,主要需要做的是檢查開發板與模塊連線是否連接正常,然后對超聲波測距模塊、LCD1602液晶屏、繼電器、蜂鳴器、水泵等分別進行測試,直接將主控單片機 STC89C52、LCD1602液晶屏、HCSR04超聲波測距模塊、繼電器、蜂鳴器、水泵等連接構成自動液位監控系統,編寫適當程序進行液位監控,測試出系統的絕對誤差.
本次的設計完成了預定的基本性能要求,實現了自動液位監控的功能,具體結果如下:①能實時輸出當前的水位情況;②能根據要求動態的調整水位到指定數值;③在水平面基本靜止的條件下,動態調整水位到規定數值,誤差小于3 cm;④系統應具備電傳功能,實現液位數據向PC的傳輸;⑤功耗較低.
此外,本文給出了本設計的正程—回程實測圖,其理論液位顯示數據與實際液位的數據曲線為階梯狀,如圖5所示.

圖5 正程—回程實測圖
由圖5實驗數據可知,該系統的平均測量誤差小于0.3 cm,液位顯示分辨率為1 cm.由于實際情況下,液面存在一定的波動或震動,尤其是在注水或排水的情況下,液面不穩定程度加劇,如果顯示分辨率太高,會造成顯示數據的頻繁變動,無法順利的讀取數據.因此,在設計時應該選取合適的系統分辨率,經調試本設計將系統分辨率設為1 cm.實驗結果表明了本設計合理可靠性.
本次設計的自動液位監控系統主要目的是使液位始終保持在一定范圍,避免液位過高或過低現象的發生.本設計采用STC89C52單片機為系統控制,應用超聲波測距原理,能實現對范圍在0~14 cm內的液位的有效測量,其絕對誤差小于3 cm,重復性也好,能夠確保水位在允許的范圍內浮動,同時還兼有了高低液位報警功能.可見基于STC89C52單片機設計的超聲波液位監控系統的硬件部分簡單、可靠性高、測量誤差范圍小.
[1]范飛飛.基于雷達液位計的水文信息實時監測系統的研究[D].湖北:湖北工業大學,2013.
[2]盧偉.高精度超聲波液位測量系統的設計與實現[D].河北:河北工業大學,2012.
[3]閆達海,胥光申.面曝光快速成形激光液位檢測系統的研究[J].天津工業大學學報,2013(1):81-85.
[4]普仕凡,張麗艷,李桂林,等.基于89C52單片機的智能溫控儀設計[J].大連交通大學學報,2008,29(3):91-94.
[5]劉振超,張麗艷,普仕凡.基于W78E516控制的觸摸液晶顯示屏AG320240A4STCW-T51的應用[J].現代顯示,2009(1):44-47.
[6]胡汪洋,冀恩祥,費繼友.基于單片機控制電子胸卡的設計[J].儀表技術,2010(5):23-25.
[7]費繼友,周茉.基于ARM+FPGA的嵌入式數控裝置設計[J].制造技術與機床,2010(12):70-73.
[8]郭天祥.51單片機C語言教程—入門、提高、開發、拓展全攻略[M].北京:電子工業出版社,2009.
[9]劉昌華,易逵.8051單片機的C語言應用程序設計與實踐[M].北京:國防工業出版社,2007.
[10]劉坤,宋戈,趙紅波,等.51單片機C語言應用開發技術大全[M].北京:人民郵電出版社,2008.
[11]張忠梅.單片機的C語言應用程序設計[M].北京:北京航空航天大學出版社,2007.
[12]王昌明,孔德仁,何云峰.傳感與測試技術[M].北京:北京航空航天大學出版社,2005.