

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