文/謝鵬輝 岳全勝 余世賢 王鏈琿 王洋
超聲波測距作為一種典型的非接觸測量方法,其系統(tǒng)核心部分通常包括測距方法和單片機(jī)。當(dāng)前超聲波測距方法主要有三種:相位檢測法、聲波幅值檢測法和渡越時間法。相位檢測法測量精度最高,但測量范圍具有一定局限性且電路復(fù)雜;聲波幅值檢測法操作最簡單、成本相對較低,但易受到反射介質(zhì)的影響;渡越時間法總體來看是相對居中的,不太復(fù)雜,且測量距離、精度也較高。
目前常見的單片機(jī)有51系列、STC系列和MSP430系列等。51系列應(yīng)用廣泛、功能完備,但抗干擾能力不強(qiáng);而STC系列抗干擾能力較強(qiáng)、功耗較低,但故障率較高、集成資源較少。與上述相比,MSP430系列具有功能強(qiáng)大、功耗低、集成度高、抗干擾能力強(qiáng)等特點(diǎn)。
綜上所述,本文將基于MSP430單片機(jī)采用渡越時間法進(jìn)行超聲波測距系統(tǒng)的設(shè)計(jì)。
渡越時間法測距的基本思想是利用超聲波在介質(zhì)中傳播時間和速度來確定距離。本文以MSP430單片機(jī)作為處理器,聯(lián)同超聲波接發(fā)、溫度測量及電子顯示等單元一起構(gòu)成了超聲波測距系統(tǒng)。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1:超聲波測距結(jié)構(gòu)圖
圖2:超聲波時序圖
本文超聲波測距系統(tǒng)的硬件設(shè)計(jì)主要包括單片機(jī)選擇與超聲波測距模塊、電源電路和復(fù)位電路等設(shè)計(jì)。
MSP430系列單片機(jī)是美國德州儀器1996年開始推向市場的一種16位超低功耗、具有精簡指令集的混合信號處理器,其主要特點(diǎn):
(1)低電源電壓范圍,1.8~3.6V;
(2)超低功耗,擁有5種低功耗模式;(3)靈活的時鐘使用模式;
(4)高速的運(yùn)算能力,16位RISC架構(gòu),125ns指令周期;
(5)豐富的功能模塊。
本文測距系統(tǒng)采用XKC-ME007Y50HV2型超聲波測距模塊。該超聲波測距模塊有三個輸出口,分別是UART串行輸出、RS485輸出和PWM輸出。本文系統(tǒng)選擇PWM輸出方式,通過對應(yīng)的指令或觸發(fā)方式來啟動模塊工作,完成測距后,模塊以對應(yīng)的形式輸出距離值或者溫度值。本文測距系統(tǒng)PWM接口對應(yīng)有VCC、Trigger、Echo、GND四個管腳,其分別對應(yīng)于:VCC,電源輸入(模塊默認(rèn)為5V供電);Trigger,觸發(fā)引腳,高電平觸發(fā),高電平寬度不能小于50 毫秒;Echo,PWM輸出引腳;GND,電源接地端。
圖3:超聲波測距主程序
當(dāng)觸發(fā)管腳(Trigger)接受到一個高電平觸發(fā)脈沖后,模塊內(nèi)部自動發(fā)出8個50kHz的超聲波,并檢測回波信號的時間長短,然后管腳(Echo)輸出對應(yīng)的PWM脈寬電平。本文系統(tǒng)采用MCU判斷高電平的時間計(jì)算得到距離值。如果沒有檢測到物體,管腳(Echo)將輸出約60ms的固定脈寬,其對應(yīng)的超聲波時序圖如圖2所示。
從圖2可以看出,XKC-ME007Y50H V2超聲波傳感器模塊的測距主要包含以下3個過程:
(1)采用I/0觸發(fā)測距,給至少50ms的高電平信號;
(2)模塊自動發(fā)送8個50KHz的方波,自動檢測是否有信號返回;
(3)一旦有信號返回,則可以檢測到通過I/0輸出的高電平,而高電平持續(xù)的時間就是超聲波從發(fā)射到返回的總時間。
本文測距系統(tǒng)采用+5V電源,該電源是由220V交流電源經(jīng)過 8V變壓器降壓后,經(jīng)過橋式整流電路和電容濾波,再通過三端穩(wěn)壓器 LM7805 輸出 +5V 電壓。
本文測距系統(tǒng)采用手動按鈕復(fù)位,在RST 端和正電源 VCC之間接一個按鈕。當(dāng)按下按鈕時,VCC的+5V 電平直接加到 RST 端,使得單片機(jī)復(fù)位。
本文系統(tǒng)軟件設(shè)計(jì)選用IAR軟件,采用C語言進(jìn)行程序編寫。系統(tǒng)軟件包括主程序、溫度采集子程序、數(shù)碼顯示子程序、發(fā)射子程序、計(jì)算子程序、定時器中斷子程序和外部中斷子程序。其中,主程序是整個系統(tǒng)控制的核心,完成設(shè)備的初始化和其余各子程序的調(diào)用;發(fā)射子程序進(jìn)行產(chǎn)生和發(fā)射超聲波信號;溫度采集子程序完成對環(huán)境溫度信息的采集;計(jì)算子程序負(fù)責(zé)對測量的數(shù)據(jù)進(jìn)行運(yùn)算和處理并發(fā)送到數(shù)碼顯示子程序顯示測量結(jié)果。
當(dāng)系統(tǒng)完成初始化后調(diào)用發(fā)射子程序發(fā)送超聲波時,啟動計(jì)數(shù)器開始計(jì)數(shù);當(dāng)接收到回波信號時,響應(yīng)外部中斷INTO,轉(zhuǎn)向中斷服務(wù)程序。中斷服務(wù)程序讀取計(jì)數(shù)結(jié)果,由主程序調(diào)用子程序進(jìn)行數(shù)據(jù)運(yùn)算和數(shù)據(jù)處理,最后將結(jié)果送顯示屏顯示。具體的主程序流程圖如圖3所示。
在超聲波測距系統(tǒng)的設(shè)計(jì)方案中,超聲波換能器發(fā)射探頭和接收探頭距離相對較近。在發(fā)射探頭發(fā)射超聲波后,有部分超聲波未經(jīng)過障礙物反射便繞射到接收探頭上。這部分信號是無用的,當(dāng)出現(xiàn)此種情況時將會自動引發(fā)系統(tǒng)誤差處理系統(tǒng)工作。本文采用延時技術(shù)來解決這個問題,并設(shè)定延時時間為0.8ms,即在發(fā)射極發(fā)射超聲波0.8ms內(nèi),通過軟件關(guān)閉所有中斷,接收電路對在此期間接收到的任何信號不予理睬;而在0.8ms后立即啟動T0,自此接收到的信號被視為有效。并在接收到回波信號的同時,TO停。此時 TO所記錄的CPU發(fā)送脈沖信號的前沿到回波脈沖信號之間的時間才是需要的,因此系統(tǒng)存在測量盲區(qū)。
本文基于MSP430單片機(jī)設(shè)計(jì)了一種簡易超聲波測距系統(tǒng)。整個系統(tǒng)同傳統(tǒng)的測距設(shè)備相比,其結(jié)構(gòu)簡單、體積較小、價格便宜,且能耗低、適合長時間工作。在本文作者現(xiàn)階段的研究工作中,將此測距系統(tǒng)用于高速公路應(yīng)急車道占用檢測系統(tǒng),主要用于判定車輛是否占用了應(yīng)急車道,從而記錄下車輛信息供高速公路監(jiān)管部門參考,使監(jiān)管部門能夠更有效更大范圍的對應(yīng)急車道的使用實(shí)施嚴(yán)格監(jiān)管。
參考文獻(xiàn)
[1]張紅蓮.基于單片機(jī)的超聲波測距系統(tǒng)的設(shè)計(jì)[J].可編程控制器與工廠自動化,2008(09):89-91.
[2]苑潔.基于STM32單片機(jī)的高精度超聲波測距系統(tǒng)的設(shè)計(jì)[D].華北電力大學(xué)(北京)華北電力大學(xué),2012.
[3]徐江維,李菲.基于單片機(jī)的的超聲波測距儀[J].電子世界,2017(09):108-108.
[4]趙欣哲,楊培培,劉文凱.超聲波小車自動測距變速系統(tǒng)[J].大學(xué)物理實(shí)驗(yàn),2014,v.27;No.107(04):73-76.
[5]張波,王朋亮.基于STC89C51單片機(jī)超聲波測距系統(tǒng)的設(shè)計(jì)[J].機(jī)床與液壓,2010,38(18):56-58.