

摘 要:系統以C8051F020單片機為控制芯片,通過對超聲波換能器接收到的波形數據進行采集處理、分析計算得出水底深度的水深數據采集系統。該系統結構精密,控制方便,并可通過串口實時發送當前水深數據。
關鍵詞:C8051;單片機;水深測量;數據采集
1 引言
在發明回聲測深儀器以前,人們都是采用繩索鉛錘的方法測量水深,在測量船航行過程中,每隔一定時間間隔,測量人員用系有鉛錘的繩索放到水底,通過量測繩索上的標識刻度來讀取當前水深值,這種測量方法既復雜又無法測量水底地貌的連續性,也很難發現水中的航行障礙物。本文以超聲波測距原理為研究對象,以C8051F020單片機為控制核心,以串口收發為傳輸接口,設計了一個基于超聲波測距的水深測量系統。
2 系統組成及原理
系統工作原理:系統通電后,先由C8051F020單片機發送脈沖信號使得超聲波換能器里面的壓電陶瓷做機械震蕩,產生超聲波信號,超聲波信號在水中傳輸,經過水底反射回換能器,換能器把接收到的超聲波信號再轉化成電信號,即波形信號。由于超聲波在傳輸的過程中會不斷衰減,而且水中也有一些干擾信號,故波形信號發送給單片機處理時需先濾波并做放大處理,單片機通過A/D采樣采集處理后的波形信號,采集到的數據再通過軟件算法處理,把計算得到的水深數據顯示在128*64的液晶屏上,同時將水深數據采用一定的協議格式通過串口發送給外部接收儀器。
超聲波測深原理:是利用超聲波穿透介質并在不同介質表面會產生反射的現象,利用超聲波換能器發射超聲波,測出發射波和反射波之間的時間差來進行測量的。聲波在水中的傳播速度為V,換能器發出超聲波,聲波經探頭發射到水底,并由水底反射回到換能器被接收,測得聲波信號往返行程所經歷的時間為t,則:Z=Vt/2;同時根據換能器上固定桿的刻度可獲知水面與探頭之間的距離,即吃水深度,兩者之和即為最終水深值。
3 系統硬件設計
基于C8051F020單片機的水深數據采集系統主要包括單片機控制電路、超聲波換能器發送和接收電路、按鍵控制和顯示電路、開機電源電路和RS232串口收發電路。系統硬件連接示意圖如圖1所示。
單片機控制電路采用了C8051F020單片機為核心處理器。該單片機是集成的混合信號系統級MCU芯片,片內含有4352字節的RAM、64K的Flash存儲器和VDD監視器,所有的模擬和數字外設均可由用戶固件配置為使能和禁止。Flash存儲器還具有在系統重新編程能力,可用于非易失性數據存儲,并允許現場更新8051固件,是一款靈活性高,使用方便,高速率、高效能的單片機。單片機通過I/O口連接各外設,并通過軟件程序編寫對其控制操作。水深波形數據通過單片機的12位ADC采集,采集時間和波形數據幅值數據,軟件通過對采集到的數據進行算法處理,計算出最終的水深數據。
超聲波換能器發送和接收電路采用的換能器是一款8度波束角,頻率為208KHZ,集超聲波發射和接收于一體的高頻換能器,換能器外形是直徑為10CM,高7CM的圓柱體,體積小巧,攜帶方便。接收電路采用AD8032芯片對波形進行濾波處理,再使用AD603芯片進行增益放大處理,處理后的波形數據接入單片機的ADC接口。
開機電源電路是外接+12V供電,先通過LM7805轉+5V給接收電路和液晶顯示電路供電,LM7805價格低廉,性能穩定,是一款常用的電壓轉換芯片。+5V通過LT1763-3.3芯片轉化成+3.3V,給單片機和X9313芯片供電。
按鍵控制和顯示電路采用128*64的LCD液晶顯示,用X9313芯片控制顯示對比度,用7鍵的按鍵控制,按鍵分開機鍵、ESC鍵、ENTER鍵、UP鍵、DOWN鍵、LEFT鍵和RIGHT鍵,通過這7個鍵連接到單片機的I/O口,單片機通過I/O口電平來識別按鍵操作,再通過軟件程序對顯示頁面跳轉和參數的修改進行操作,最后通過液晶顯示出來。
RS232串口收發電路采用SP3223芯片把單片機的UART串行接口的TTL電平轉換成RS232,可以直接接PC機串口,通過串口工具進行收發數據操作。
4 系統軟件設計
單片機通過編寫的按鍵接收程序模塊來識別I/O口按鍵操作,編寫的液晶顯示程序模塊來控制液晶顯示內容,ADC采樣程序模塊采集波形數據的時間(單片機內部自定義時序)和幅值存儲在在一個二維數組中,波形判斷識別程序模塊對這個二維數組中的數據進行軟件濾波和水深計算操作來得到最后的水深值,再分別通過液晶顯示程序模塊在液晶上顯示當前水深值和串口收發程序模塊發送到外設接收機。軟件主程序流程框圖如圖2所示。
開關控制程序模塊里面包含單片機接收到開機鍵信號時,做出的開、關機程序判斷。目前設計短時間按開機鍵是開機接通電源,長按為關機操作,關閉電源。
按鍵操作和液晶顯示程序模塊包含了按鍵防抖動、頁面切換、LCD初始化、清屏函數以及顯示字符、數字和圖片函數單片機的ADC0子系統包含一個9通道的可編程模擬多路選擇器(AMUX0),一個可編程增益放大(PGA0)和一個100ksps、12位分辨率的逐次逼近寄存器型ADC。本次設計ADC0為定時器3溢出中斷采集,單端輸入的方式,對于ADC0LJST=0;時:
ADC0轉換代碼=VIN*(Gain/VREF)*212
波形數據判斷識別程序模塊比較復雜,包含了初始化水深函數,自動測深函數、波形數據處理函數和測量參數設定等。軟件先初始化各調試參數和測量相關的變量,再使用不同的參數組測量水深,參數由最小開始增加,一直增加到測到正常水深為止,然后固定選擇當前參數測量,當水深值達到當前檔位的臨界值時,變換令一組參數測試,由于水底連續性的特點,本設計中增加了時間門的概念,測得一定數量的穩定水深后,軟件根據前面穩定水深值的數據組設置下一個水深值的變換范圍,這種設計增加了水底跟蹤的穩定性。
串口收發采用可變8位UART可變波特率,使用單片機的定時器1,方式1模式提供標準的異步、全雙工通信,每個數據字節共使用10位:一個起始位、8個數據位(LSB在先)和一個停止位。數據從TX0引腳發送,在RX0引腳接收。接收時,8個數據位存入SBUF0,停止位進入RB80。此模式下的波特率是定時器溢出時間的函數,如下方程所示:
波特率=(2SMOD0/32)*(SYSCLK*12(T1M-1)/(256-TH1))
TM1為定時器1時鐘選擇位,TH1為定時器1的8位中裝載寄存器。
5 結束語
本文以C8051F020單片機為核心,利用7鍵操作模塊、LCD顯示模塊和換能器,設計了一個簡單實用的河道水深測量系統,經珠江水域實地實驗驗證,測得的水深數據完全符合系統設計要求,假水深也比較少,電路電磁抗干擾能力也不錯,測得的水深數據也能實時的通過串口通訊發送到外接PC機存儲。本系統設計簡單,集成度高,穩定性也不錯,調試方便,可實時更新升級固件程序,具有一定的實用價值
參考文獻
[1]單片機的C語言應用程序設計.
[2]超聲波測距原理.
[3]電子線路.