貴州大學電氣工程學院 黨長青 陳湘萍
水位控制一直以來都是工業生產的一項重要的控制指標,其控制方法目前使用的也較多,但是隨著計算機技術的快速發展與應用,使得水位控制有了更加精確的控制定位,本文運用ARM技術實現了一個水位控制器的設計,該控制器以微控制器為核心,利用超射波檢測傳感電路實現了水位的高精度控制。
本水位控制系統硬件電路主要由電源電路、檢測超聲波檢測電路及接口電路構成,其具體設計如下:
本系統采用的STM32F103VET6,STM32的工作電壓(VDD)為2.0~3.6V。通過內置的電壓調節器提供所需的1.8V電源。當主電源VDD掉電后,通過VBAT腳為實時時鐘(RTC)和備份寄存器提供電源。具體電路圖如圖2.1所示。

圖2.1 系統的供電電路圖

圖2.2 超聲波檢測電路
其測距原理為:通過超聲波發射裝置發出超聲波,根據接收器接到超聲波時的時間差就可以知道距離了。這與雷達測距原理相似。超聲波發射器向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時(超聲波在空氣中的傳播速度為340m/s,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離(s),即:s=340t/2)。圖2.2所示為超聲波檢測電路。
其超聲波時序圖如圖2.3所示。
由圖2.3可看出只需要提供一個10uS以上脈沖觸發信號,該模塊內部將發出8個40kHz周期電平并檢測回波。一旦檢測到有回波信號則輸出回響信號回響信號的脈沖寬度與所測的距離成正比。由此通過發射信號到收到的回響信號時間間隔可以計算得到距離。公式uS/58=厘米或者uS/148=英寸;或是:距離=高電平時間*聲速(340M/S)/2;建議測量周期為60ms以上,以防止發射信號對回響信號的影響。

圖2.3 超聲波時序圖
在本系統中需要用到串口通信,控制發送數據到PC上顯示,以實現單片機與PC機的通信。在串口通信中使用到的芯片是MAX3232CSE,MAX3232CSE是一種低功耗擁有兩個接收器和兩個發射器的串口接口芯片。它兼容了RS-232的特性。供電范圍是3V-5.5V。在MAX3232CSE內部,有兩個充電泵。該芯片的外圍電路非常簡單,外部只需要接上4個0.1uF的充電電容就可以使用了。通信速率在120kbps能夠保證數據不出錯。并且能夠保持RS232的輸出電平。MAX3232CSE具有低至1uA的關閉模式,在便攜式設備中,降低了電源的消耗,延長了電池的壽命。在低能耗的關閉模式中,接收器任然處于激活模式,允許調制解調器接收數據,該接口電路圖如圖2.4所示。

圖2.4 串口通信電路圖
以上為本水位控制系統的硬件設計。該硬件設計是實現本系統精確水位控制的基礎。
本系統的程序設計是基于常用的嵌入式系統軟件開發平臺Keil uVision4,用于實現數字控制器的設計,本系統對水位的控制主要采用數字PID控制器。以下是該數字控制器的設計實現。
在本設計中對于控制器的實現主要采用增量式PID算法,這是因為增量式PID算法只需保持當前時刻以前三個時刻的誤差即可。它與位置式PID相比,有下列優點:
(1)位置式PID算法每次輸出與整個過去狀態有關,計算式中要用到過去誤差的累加值,因此,容易產生較大的累積計算誤差。而增量式PID只需計算增量,計算誤差或精度不足時對控制量的計算影響較小。
(2)控制從手動切換到自動時,位置式PID算法必須先將計算機的輸出值置為原始閥門開時,才能保證無沖擊切換。若采用增量算法,與原始值無關,易于實現手動到自動的無沖擊切換。
PID算法代碼如下:

如圖3.1所示,系統總體流程是:設定水位值,STM32F103VET6初始化,初始化后繼而運行同時使電機轉動,通過超聲波不斷反饋回來的數據判斷是否到達了設定的水位值,如果到達了,則使電機以這樣的速度穩定運行下去,如果沒有達到設定的水位值,則將超聲波檢測到的數值與給定值做比較,得出誤差值,然后將誤差值通過DAC0832芯片轉換成0~5V電壓信號,反饋給執行機構(電機),再通過電機控制水泵的水流速度,來達到水位控制的要求。

圖3.1 下位機軟件控制流程圖

圖3.2 上位機軟件程序流程圖
該模塊主要是完成接收下位機傳送上來的數據,并將數據以正確的形式顯示在控制界面當中。該模塊包括界面的設計以及具體的響應函數的設計。上位機的串口通信用的不是VC自帶的MSCOMM控件,.這里使用一個動態庫,分別是Pcomm.h,Pcomm.lib,Pcomm.dll。輸入參數為串口的接收數據,輸出參數為編輯框的顯示數據。程序的流程圖如圖3.2所示。
根據要求,水位給定的范圍是0~150mm。分別取兩組數據進行測量,每組取6個數值。
第一組:0mm~65mm之間取值,所取的值分別為10mm、20mm、30mm、40mm、50mm、60mm。

第二組:65mm到150mm之間取值,所取的值分別為70mm、80mm、90mm、100mm、110mm、120mm。

將以上數據進行比較可得,設定水位值每次變化10mm,大約所需要的調節時間為12S到15S,基本符合題目的要求,系統的各個檢測單元的測試數據精度很高、顯示值與設定值非常接近,這與硬件的選擇及其參數的匹配選擇是不可分割的。當設定水位值和當前水位值有誤差時,會自動通過超聲波檢測到的數值與給定值做比較,得出誤差值,然后將誤差值通過DAC0832芯片轉換成0~5V電壓信號,反饋給執行機構(電機),再通過電機控制水泵的水流速度,來達到水位控制的要求。
本文設計了一個基于ARM的水位控制控制系統,通過能采用ARM7內核芯片和串口通信電路及超聲波檢測技術實現了水位的精確控制,從測試結果可以看出該系統具有良好的穩定性,而且該系統還具有功耗低穩定性好等特點,具有較高的實用價值。
[1]周立功.ARM嵌入式系統基礎教程(第二版)[M].北京:北京航空航天大學出版社,2005.
[2]周立功.ARM嵌入式系統基礎教程(二)[M].北京:北京航空航天大學出版社,2005.
[3]周立功.ARM嵌入式系統基礎教程(三)[M].北京:北京航空航天大學出版社,2005.
[4]周立功等,EasyArm2131教材.
[5]譚浩強著.C程序設計(第三版)[M].北京:清華大學出版社,2007.
[6]周旭.現代傳感器技術[M].北京:國防工業出版社,2007.
[7]田澤.嵌入式系統開發與應用教程[M].北京:北京航空航天大學出版社,2005.
[8]吳春祥.嵌入式水文自動測投系統的研究與設計[D].武漢理工大學,2008.