張皎 姚亦桐 楊小平 張博奧
摘 要:文章論述了一種利用外設(shè)HC-SR04超聲波組件設(shè)計(jì)的基于MSP430G2553的超聲波倒車?yán)走_(dá)監(jiān)測系統(tǒng)。系統(tǒng)能實(shí)時(shí)檢測汽車尾部與障礙物的距離,并在MSP430G2553拓展板上用LCD動(dòng)態(tài)顯示實(shí)時(shí)距離,實(shí)現(xiàn)了對(duì)當(dāng)前測量距離的顯示,對(duì)倒車安全有著不可替代的作用。經(jīng)實(shí)驗(yàn)驗(yàn)證,該系統(tǒng)最大測量距離為3.5 m,并且具有成本低廉、非接觸性好、反應(yīng)速度快、可靠性強(qiáng)、適應(yīng)性好、操作方便的特點(diǎn)。
關(guān)鍵詞:MSP430;HC-SR04;LCD;超聲波測距
0?引言
據(jù)初步調(diào)查統(tǒng)計(jì),75%的汽車交通事故是由汽車倒車“后視”不良造成的[1]。因此,許多非職業(yè)汽車駕駛員很希望能有一種汽車倒車報(bào)警器,在倒車時(shí)不斷測量汽車尾部與其后面障礙物的距離,并隨時(shí)顯示其距離,在不同的距離范圍內(nèi)發(fā)出不同的報(bào)警信號(hào),以提高汽車倒車時(shí)的安全性。增強(qiáng)汽車的后視能力,尤其是增強(qiáng)大型、重型車輛的后視能力,對(duì)于提高行車安全,減輕司機(jī)的勞動(dòng)強(qiáng)度和心理壓力,是十分重要的。
超聲波測距的基本原理是利用超聲波在空氣中的傳播速度來測量障礙物的實(shí)際距離。具體方法如下:先發(fā)射超聲波,當(dāng)聲波發(fā)射后遇到障礙物并反射超聲波。根據(jù)發(fā)射和接收的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)際距離。由于超聲波擁有易于定向發(fā)射、方向性好、強(qiáng)度易控制、與被測量物體不需要直接接觸等優(yōu)點(diǎn),所以超聲波測距儀廣泛應(yīng)用于倒車?yán)走_(dá)、建筑工地、工業(yè)現(xiàn)場等的距離測量[2]。本案例設(shè)計(jì)出了一款基于MSP430G2553(簡稱“G2”)單片機(jī)的超聲波倒車?yán)走_(dá),主要由3部分組成:傳感器(探頭),主控制器,顯示模塊。其中:傳感器采用HC-SR04型號(hào),采用單片機(jī)MSP430 G2553 作為主控制器。單片機(jī)主要負(fù)責(zé)發(fā)射觸發(fā)脈沖,用于計(jì)算開始時(shí)間及脈寬;對(duì)反射回來的超聲波進(jìn)行響應(yīng)、測量發(fā)射至返回的時(shí)間差;控制超聲波傳感器(HC-SR04)產(chǎn)生超聲波信號(hào),并通過輸出引腳輸入到驅(qū)動(dòng)器端口,經(jīng)驅(qū)動(dòng)器驅(qū)動(dòng)后生成超聲波。一旦探頭接收到反射波,則單片機(jī)的輸出引腳的電平將從“1”變?yōu)椤?”,這種電平變化可以作為單片機(jī)對(duì)接收探頭的接收情況進(jìn)行實(shí)時(shí)監(jiān)控,同時(shí)顯示模塊采用MSP430 G2553擴(kuò)展板上LCD,實(shí)現(xiàn)數(shù)字實(shí)時(shí)顯示。
1 原理簡述
1.1? 超聲波簡介
超聲波是一種頻率高于20 000 Hz的聲波,它的方向性好,穿透能力強(qiáng),易于獲得較集中的聲能,在水中傳播距離遠(yuǎn),可用于測距、測速、清洗、焊接、碎石、殺菌消毒等。在醫(yī)學(xué)、軍事、工業(yè)、農(nóng)業(yè)上有很多的應(yīng)用。超聲波因其頻率下限大于人的聽覺上限而得名??茖W(xué)家們將每秒鐘振動(dòng)的次數(shù)稱為聲音的頻率,它的單位是赫茲(Hz)。人類耳朵能聽到的聲波頻率為20~20 000 Hz。因此,把頻率高于20 000 Hz的聲波稱為“超聲波”[3]。
1.2? 超聲波測距原理
超聲波測距是利用反射原理來測量實(shí)際距離的,當(dāng)測量一端接超聲波傳感器,另一端為反射超聲波的物體時(shí),首先,超聲波傳感器對(duì)準(zhǔn)反射物發(fā)射超聲波,并依次開始計(jì)時(shí)。接下來,超聲波被障礙物(被測物)反射回來。最后,超聲波傳感器接收到反射脈沖后立即停止計(jì)時(shí)??梢砸罁?jù)超聲波在空氣中的傳播速度和往返時(shí)間計(jì)算出要測量的實(shí)際距離。測量距離D為:[3]
式中:v表示超聲波的傳播速度[3];1/2t表示超聲波發(fā)射到接收所需時(shí)間的一半,也就是單程傳播時(shí)間[3]。
1.3? HC-SR04模塊工作原理
由HC-SR04的超聲波時(shí)序可以看出:單片機(jī)只需要提供一個(gè)持續(xù)時(shí)間達(dá)10 us以上的脈沖信號(hào)作為觸發(fā)信號(hào)(見圖1)。MSP430單片機(jī)內(nèi)部將發(fā)出8個(gè)周期為40 kHz的高電平用以檢測反射波。一旦檢測有反射信號(hào),則單片機(jī)輸出響應(yīng)信號(hào)用以應(yīng)答。由原理可知,響應(yīng)信號(hào)的脈寬與所測的實(shí)際距離成正比。依據(jù)公式,通過計(jì)算發(fā)射信號(hào)到響應(yīng)信號(hào)的時(shí)間間隔就可以計(jì)算得到距離。其公式為:us/58=厘米或者us/148=英寸;或是:距離=高電平時(shí)間×聲速(340 m/s)/2;這里建議測量周期為60 ms以上,以防止發(fā)射信號(hào)和響應(yīng)信號(hào)的混淆,影響測量結(jié)果[3]。
2 系統(tǒng)總體設(shè)計(jì)框架
本系統(tǒng)按硬件設(shè)計(jì)共分為3大功能模塊(見圖2)。其中,測距模塊和警報(bào)模塊體現(xiàn)了我們程序的主要功能,串行級(jí)聯(lián)。三大模塊的主要功能如下。
(1)初始化模塊:蜂鳴器初始化、關(guān)閉看門狗、LCD顯示初始化、配置時(shí)鐘、I/O接口等參數(shù)。
(2)測距模塊:捕獲、中斷、計(jì)數(shù)、測量PWM波寬、并憑借PWM波寬,計(jì)算出障礙物距離超聲波傳感器的距離,顯示在LCD顯示屏上。
(3)警報(bào)模塊:短暫延時(shí)后,根據(jù)傳入的距離數(shù)據(jù),蜂鳴器根據(jù)距離數(shù)據(jù)判斷是否開始警報(bào),以及警報(bào)的聲調(diào)高低。
下面具體介紹測距模塊、報(bào)警模塊以及中斷測量波寬的具體實(shí)現(xiàn)方法。
3.1? 測距模塊
測量障礙物距離超聲波傳感器的實(shí)際距離,是本程序最基本,最重要的功能。測距模塊的主要功能,就是通過測量PWM波的波寬,來計(jì)算出障礙物的實(shí)際距離。圖3是測距模塊的主要流程圖。此模塊的主要作用是測距,該功能是通過測量PWM波寬,利用時(shí)鐘,間接測量出障礙物的實(shí)際距離。
首先,先進(jìn)行LCD顯示的初始化,SCMLK時(shí)鐘初始化,然后通過捕獲,使能中斷,連續(xù)計(jì)數(shù),再用PWM初始時(shí)間pwm_start,PWM終止時(shí)間pwm_end,溢出計(jì)數(shù)變量overflow計(jì)算PWM波寬。在這里,進(jìn)行一次判斷,如果溢出計(jì)數(shù)變量overflow為零,那么賦值PWM波寬為零(實(shí)際距離為零),控制LCD顯示屏使之顯示“ERROR”字樣,系統(tǒng)報(bào)錯(cuò)。若溢出計(jì)數(shù)變量overflow不為零,則計(jì)算PWM波寬,計(jì)算障礙物到超聲波傳感器的實(shí)際距離dis。此時(shí),只需要單片機(jī)控制LCD屏實(shí)時(shí)顯示計(jì)算出的實(shí)際距離dis即可。
具體實(shí)現(xiàn)為:測距
CCTL1=CAP+CM_1+CCIS_0+SCS+CCIE;? ? ? ? ? ?//捕獲模式,上升沿捕獲,選擇CCI1A同步,捕獲中斷開//
TA0CTL=TASSEL_2+MC_2+TACLR+TAIE;
SMCLK=1M,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//連續(xù)計(jì)數(shù)模式//
BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ;? ? ? ? ? ? ? ? ? ? ?//SMCLK時(shí)鐘源選擇1MHZ//
3.2? 報(bào)警模塊
報(bào)警模塊是本程序的另一重要組成部分。報(bào)警系統(tǒng)能夠根據(jù)超聲波傳感器距離障礙物的距離決定是否需要報(bào)警。如果需要報(bào)警,又會(huì)根據(jù)距離,決定危險(xiǎn)程度,然后通過蜂鳴器發(fā)出不同音調(diào)的聲音來警報(bào),在聲音警報(bào)的同時(shí),系統(tǒng)還會(huì)控制紅色LED燈持續(xù)閃爍,直至危險(xiǎn)解除。報(bào)警模塊的流程如圖4所示。
具體實(shí)現(xiàn)為:報(bào)警
void play_sound(int loudness,int tune,float timehold)? ? //蜂鳴器發(fā)聲函數(shù)
{unsigned int i = 0;
for(i=0;i<10000/tune*timehold;i++)
{ if(i%2)
{ write2DAC8411(0);}
else
{write2DAC8411(loudness);}
unsigned int j=0;
for( j = 0;j < tune; j++ )
{__delay_cycles(1);}
}
}
3.3? 中斷測量波寬
在測距模塊中,我們用PWM波的波寬pwm_wide來計(jì)算障礙物的實(shí)際距離dis。在這里,本程序是采用中斷的方法來計(jì)算PWM波的波寬的。中斷測量PWM波寬的程序流程如圖5所示。
在使用中斷測量PWM波寬中,先設(shè)置I/O接口,選擇SMCLK作為時(shí)鐘源,持續(xù)計(jì)數(shù)。使能中斷,判斷error==1? 若是,則波寬為零;若不是,則進(jìn)行捕獲中斷,判斷是上升沿還是下降沿。若為上升沿,變更為下降沿觸發(fā),并記錄初始時(shí)間,溢出數(shù)復(fù)位。若為下降沿,變更為上升沿觸發(fā),記錄終止時(shí)間。最后利用終止時(shí)間,初始時(shí)間和溢出數(shù)計(jì)算出PWM波寬。
4 結(jié)語
系統(tǒng)利用超聲波在空氣中的可傳播性。實(shí)時(shí)測得超聲波在空氣中的傳播時(shí)間和傳播速度。在將時(shí)間和速度相乘即得距離的原理,設(shè)計(jì)了一個(gè)基于MSP430的超聲波倒車?yán)走_(dá)監(jiān)測報(bào)警系統(tǒng),用于實(shí)時(shí)測得汽車尾部與障礙物的距離。通過LCD顯示距離值,將距離值提供給司機(jī)。該系統(tǒng)具有成本低、非接觸、速度快、可靠性強(qiáng)、適應(yīng)性好、操作方便,有著廣泛的應(yīng)用前景。
實(shí)驗(yàn)結(jié)果表明,該案例在生產(chǎn)實(shí)際和科學(xué)研究方面均具有一定的參考價(jià)值。(1)司機(jī)可直接通過LCD屏讀出汽車尾部和障礙物之間的實(shí)際距離,即不需要回頭就可以預(yù)知車尾的情況。這樣可以有效避免倒車不慎造成的交通事故。 (2)該系統(tǒng)使我們?cè)诘管嚂r(shí)更方便快捷的同時(shí),又為倒車提供了更為安全的保障。
[參考文獻(xiàn)]
[1]李文輝.基于MSP430單片機(jī)的超聲波倒車?yán)走_(dá)監(jiān)測報(bào)警系統(tǒng)[J].自動(dòng)化與儀器儀表,2009(4):42-44.
[2]濕濟(jì)霞,張艷兵 .基于MSP430單片機(jī)的倒車?yán)走_(dá)設(shè)計(jì)[J].科技信息,2011(21):505-506.
[3]李家偉,王怡之.超聲波檢測[M].北京:機(jī)械工業(yè)出版社,2000.
(編輯 姚 鑫)