當前位置:
首頁 > 知識 > 超聲波測距與超聲測距感測器是這樣玩起來的

超聲波測距與超聲測距感測器是這樣玩起來的

超聲波

人們可以聽到的聲音的頻率為20Hz~2KHz,也就是可聽聲波,超出此頻率範圍的聲音,20Hz以下的聲音稱為低頻聲波,20KHz以上的聲音稱為超聲波(Ultrasound),一般說話的頻率範圍是10Hz-8KHz。超聲波方向性好,穿透能力強,易於獲得較集中的聲能,在水中傳播距離遠,超聲波因其頻率下限大約等於人的聽覺上限而得名。

超聲波頻率分布

超聲波可以在氣體、液體及固體中傳播,其傳播速度不同。超聲波在介質中傳播的波形取決於介質可以承受何種作用力以及如何對介質激發超聲波。

通常有如下三種:

(1)縱波波型

當介質中質點振動方向與超聲波的傳播方向一致時,此超聲波為縱波波型。任何固體介質當其體積發生交替變化時均能產生縱波。在工業中應用主要採用縱向振蕩。

(2)橫波波型

當介質中質點的振動方向與超聲波的傳播方向相垂直時,此種超聲波為橫波波型。由於固體介質除了能承受體積變形外,還能承受切變變形,因此,當其有剪切力交替作用於固體介質時均能產生橫波。橫波只能在固體介質中傳播。

(3)表面波波型

是沿著固體表面傳播的具有縱波和橫波的雙重性質的波。表面波可以看成是由平行於表面的縱波和垂直於表面的橫波合成, 振動質點的軌跡為一橢圓,在距表面1/4波長深處振幅最強,隨著深度的增加很快衰減,實際上離表面一個波長以上的地方,質點振動的振幅已經很微弱了。

另外,超聲波也有折射和反射現象,並且在傳播過程中有衰減。在空氣中傳播超聲波,其頻率較低,,一般為幾十KHz,而在固體、液體中則頻率可用得較高。在空氣中衰減較快,而在液體及固體中傳播,衰減較小,傳播較遠。

利用超聲波的特性,可做成各種超聲感測器,配上不同的電路,製成各種超聲測量儀器及裝置,可用於測距、測速、清洗、焊接、碎石、殺菌消毒等,並在通訊、醫療、家電、軍事、工業、農業等各方面得到廣泛應用。

能夠產生超聲波的方法很多,常用的有壓電效應方法、磁致伸縮效應方法、靜電效應方法和電磁效應方法等。當給壓電晶片兩極施加一個電壓短脈衝時, 由於逆壓電效應,晶片將發生彈性形變而產生彈性振蕩。振蕩頻率與晶片的厚度和聲速有關, 適當選擇晶片的厚度可以得到超聲頻率範圍的彈性波, 即超聲波。此種方式發射出的是一個超聲波波包,通常稱為脈衝波。

超聲波測距

超聲波測距系統主要應用於汽車的倒車雷達、及機器人自動避障行走、建築施工工地以及一些工業現場例如:液位、井深、管道長度等場合。

目前有兩種常用的超聲波測距方案。一種是基於單片機或者嵌入式設備的超聲波測距系統,一種是基於CPLD(Complex Programmable Logic Device)的超聲波測距系統。

如圖1所示,實驗採用第一種方案,利用嵌入式設備編程產生頻率為40KHz的方波,經過發射驅動電路放大,使超聲波感測器發射端震蕩,發射超聲波。超聲波經發射物反射回來,由感測器接收端接收,再經過接收電路放大、整形。以嵌入式微核心的超聲波測距系統通過嵌入式設備記錄超聲波發射的時間和反射波的時間。當收到超聲波的反射波時,接收電路輸出端產生一個跳變。通過定時器計數,計算時間差,就可以計算出相應的距離。

圖1 超聲波測距原理

超聲波測距的原理是利用超聲波在空氣中的傳播速度為已知,測量聲波在發射後遇到障礙物反射回來的時間,根據發射和接收的時間差計算出發射點到障礙物的實際距離。首先,超聲波發射器向某一方向發射超聲波,在發射時刻的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。超聲波在空氣中的傳播速度為C=340m/s,根據計時器記錄的時間T秒,就可以計算出發射點距障礙物的距離L,即:L= C×T /2 。這就是所謂的時間差測距法。

由於超聲波也是一種聲波,其聲速 C 與溫度有關,表1列出了幾種不同溫度下的聲速。在使用時,如果溫度變化不大,則可認為聲速是基本不變的。如果測距精度要求很高,則應通過溫度補償的方法加以校正。

表1 超聲波波速與溫度的關係

由於超聲波易於定向發射、方向性好、強度易控制、與被測量物體不需要直接接觸的優點,是作為倒車距離測量的理想選擇。

超聲波感測器

超聲波為直線傳播,頻率越高,繞射能力越弱,但反射能力越強,為此,利用超聲波的這種性質就可以製成超聲波感測器。另外,超聲波在空氣中的傳播速度較慢,這就使得超聲波感測器的使用變得簡單。

超聲波感測器是利用超聲波的特性研製而成的感測器。超聲波是一種振動頻率高於聲波的機械波,由換能晶片在電壓的激勵下發生振動產生的,它具有頻率高、波長短、繞射現象小,特別是方向性好、能夠成為射線而定向傳播等特點。超聲波對液體、固體的穿透本領很大,尤其是在陽光不透明的固體中,它可穿透幾十米的深度。超聲波碰到雜質或分界面會產生顯著反射形成反射成回波,碰到活動物體能產生多普勒效應。因此超聲波檢測廣泛應用在工業、國防、生物醫學等方面以超聲波作為檢測手段,必須產生超聲波和接收超聲波。完成這種功能的裝置就是超聲波感測器,習慣上稱為超聲換能器,或者超聲探頭。

超聲波感測器主要由雙壓電晶片振子、圓錐共振板和電極等部分構成。兩電極間加上一定的電壓時壓電晶片就會被壓縮產生機械形變,撤去電壓後壓電晶片恢復原狀。若在兩極間按照一定的頻率加上電壓,則壓電晶片也會保持一定的頻率振動。經試驗測得此型號壓電晶片的固有頻率為38.4 KHz,則在兩極外加頻率為40 KHz的方波脈衝信號,此時壓電晶片產生共振,向外發射出超聲波。同理,沒有外加脈衝信號的超聲波感測器在共振板接收到超聲波時也會產生共振,在兩極間產生電信號。

超聲波探頭主要由壓電晶片組成,既可以發射超聲波,也可以接收超聲波。小功率超聲探頭多作探測作用。它有許多不同的結構,可分直探頭(縱波)、斜探頭(橫波)、表面波探頭(表面波)、蘭姆波探頭(蘭姆波)、雙探頭(一個探頭反射、一個探頭接收)等。

超聲探頭的核心是其塑料外套或者金屬外套中的一塊壓電晶片。構成晶片的材料可以有許多種。晶片的大小,如直徑和厚度也各不相同,因此每個探頭的性能是不同的,我們使用前必須預先了解它的性能。超聲波感測器的主要性能指標,包括:

(1) 工作頻率。

工作頻率就是壓電晶片的共振頻率。當加到它兩端的交流電壓的頻率和晶片的共振頻率相等時,輸出的能量最大,靈敏度也最高。

(2) 工作溫度。

由於壓電材料的居里點一般比較高,特別時診斷用超聲波探頭使用功率較小,所以工作溫度比較低,可以長時間地工作而不產生失效。醫療用的超聲探頭的溫度比較高,需要單獨的製冷設備。

(3) 靈敏度。

主要取決於製造晶片本身。機電耦合係數大,靈敏度高;反之,靈敏度低。

超聲波測距一體模塊HC-SR04

(1)模塊性能

如圖2所示,HC-SR04模塊性能穩定,測度距離精確,能和國外的SRF05、SRF02等超聲波測距模塊相媲美。模塊高精度,盲區(2cm)超近,最大識別距離為300cm。

圖2 HC-SR04模塊實物圖

如圖3所示,系統的工作是由軟體和硬體的配合過程。先由嵌入式微處理器使555使能端置1,繼而555送出40KHz頻率的方波信號,經過壓電換能器(超聲波發射頭)將信號發射出去,即發射超聲波,同時該時刻啟動定時器開時計時。該信號遇到障礙物反射回來在此稱為回波。同時,壓電換能器(超聲波接收頭)將接收的回波及接收超聲波,通過信號處理的檢波放大,通過三級放大後再送到比較器進行比較,輸出比較電壓,輸出電壓經過三極體以後,使之電壓與嵌入式微處理器的I/O口相匹配最後送至處理器處理。

圖3 超聲波測距原理框圖

(2)產品應用領域

機器人避障、物體測距、液位檢測、公共安防、停車場檢測。

(3)主要技術參數

(4)接線方式及工作原理

接線方式:VCC、trig(控制端)、 echo(接收端)、 GND。

如圖4所示,超聲波感測器基本工作原理如下:

採用IO口TRIG觸發測距,給大於10us的高電平信號;

模塊自動發送8個40KHz的方波,自動檢測是否有信號返回;

有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340m/s))/2。

圖4 感測器的方向圖

(5)控制方式

本模塊使用方法簡單,通過嵌入式微處理器控制口發一個10us以上的高電平,啟動超聲波感測器模塊發出8個40KHz的周期電平。然後開啟定時器,再延時100us左右以避免發射探頭的余振的干擾。接著通過在while循環中查詢外部中斷是不是已經捕獲到回波信號,一旦檢測到有回波信號則輸出迴響信號。迴響信號的脈衝寬度與所測的距離成正比。由此通過發射信號到接收到的迴響信號的時間間隔就可以計算得到距離。

如圖5 所示為超聲測距模塊的時序圖,根據時序圖,可以知道,迴響信號的高電平就是我們用來測量距離的重要指標,通過距離與速度和時間的關係,從而求得相應的距離。

圖5 超聲測距時序圖

一個 10us 以上脈衝觸發信號,該模塊內部將發出 8次40KHz 周期電平並檢測回波。一旦檢測到有回波信號則輸出迴響信號,迴響信號的脈衝寬度與所測的距離成正比。由此通過發射信號到收到的迴響信號的時間間隔可以計算得到距離。建議測量周期為 60ms 以上,以防止發射信號對迴響信號的影響。

圖6 出了超聲測距模塊的發射端電路。

圖7 超聲測距發射端電路圖

壓電式超聲波換能器是利用壓電晶體的諧振來工作的。超聲波換能器內部有兩個壓電晶片和一個換能板。當它的兩極外加脈衝信號,其頻率等於壓電晶片的固有振蕩頻率時,壓電晶片會發生共振,並帶動共振板振動產生超聲波,這時它就是一個超聲波發生器;反之,如果兩電極問未外加電壓,當共振板接收到超聲波時,將壓迫壓電晶片作振動,將機械能轉換為電信號,這時它就成為超聲波接收換能器。超聲波發射換能器與接收換能器在結構上稍有不同,使用時應分清器件上的標誌。

圖8 給出了超聲測距模塊的接收端電路。

集成電路CX20106是一款紅外線檢波接收的專用晶元,常用於電視機紅外遙控接收器。考慮到紅外遙控常用的載波頻率38KHz與測距的超聲波頻率40KHz較為接近,可以利用它製作超聲波檢測接收電路。實驗證明用CX20106接收超聲波(無信號時輸出高電平),具有很好的靈敏度和較強的抗干擾能力。適當更改電容C4的大小,可以改變接收電路的靈敏度和抗干擾能力。

圖8 超聲波接收電路

圖9 給出了超聲測距模塊的電路。

圖10 超聲波收發電路

超聲波測距模塊的影響因素

超聲波感測器應用起來原理簡單,也很方便,成本也很低。但是目前的超聲波感測器都有一些缺點,比如,反射問題,噪音,交叉問題。

1. 反射問題

如果被探測物體始終在合適的角度,那超聲波感測器將會獲得正確的角度。但是不幸的是,在實際使用中,很少被探測物體是能被正確的檢測的。 其中可能會出現幾種誤差:

1)三角誤差

當被測物體與感測器成一定角度的時候,所探測的距離和實際距離有個三角誤差。

2)鏡面反射

這個問題和高中物理中所學的光的反射是一樣的。在特定的角度下,發出的聲波被光滑的物體鏡面反射出去,因此無法產生回波,也就無法產生距離讀數。這時超聲波感測器會忽視這個物體的存在。

3)多次反射

這種現象在探測牆角或者類似結構的物體時比較常見。聲波經過多次反彈才被感測器接收到,因此實際的探測值並不是真實的距離值。

這些問題可以通過使用多個按照一定角度排列的超聲波圈來解決。通過探測多個超聲波的返回值,用來篩選出正確的讀數。

(2) 噪音

雖然多數超聲波感測器的工作頻率為40-45KHz,遠遠高於人類能夠聽到的頻率。但是周圍環境也會產生類似頻率的噪音。比如,電機在轉動過程會產生一定的高頻,輪子在比較硬的地面上的摩擦所產生的高頻噪音,機器人本身的抖動,甚至當有多個機器人的時候,其它機器人超聲波感測器發出的聲波,這些都會引起感測器接收到錯誤的信號。

這個問題可以通過對發射的超聲波進行編碼來解決,比如發射一組長短不同的音波,只有當探測頭檢測到相同組合的音波的時候,才進行距離計算。這樣可以有效的避免由於環境噪音所引起的誤讀。

(3)交叉問題

交叉問題是當多個超聲波感測器按照一定角度被安裝在機器人上的時候所引起的。超聲波X發出的聲波,經過鏡面反射,被感測器Z和Y獲得,這時Z和Y會根據這個信號來計算距離值,從而無法獲得正確的測量。

解決的方法可以通過對每個感測器發出的信號進行編碼。讓每個超聲波感測器只聽自己的聲音。

實驗原理

超聲測距感測器實驗環境由PC機(安裝有Windows XP操作系統、ADS1.2集成開發環境和J-Link-ARM-V410i模擬器)、J-Link-ARM模擬器、NXP LPC2378實驗節點板、超聲測距感測器、實驗模塊和LCD顯示實驗模塊組成,如圖11所示。

圖11 感測器實驗環境

本實驗所使用實物規格圖如圖12所示,實物圖如圖13所示。

圖12超聲測距模塊實物規格圖

圖 13

將超聲波感測模塊安裝到開發板上,然後用JLINK模擬器的一端用USB介面與電腦相連,一端的20Pin的JTAG引腳與NXP LPC2378節點板的J2相連,並給NXP LPC2378節點板上電,如圖14 所示。

圖14 超聲測距開發板連接圖

距離測量

本實驗,通過測距程序完成超聲波發射的控制、超聲波回波信號的檢測和距離的計算、左右距離的比較,並顯示。

首先由發射程序發射10us的高電平觸發信號,控制超聲波發射器發射8個40KHz的方波。發射器發射完信號,接收器回波電平將拉高。然後開啟定時器,例如在定時器輸入頻率為f=12MHz,進行N=8分頻後每個計數周期為 。再延時100us左右以避免發射探頭的余振的干擾,然後通過在while循環中查詢外部中斷是不是已經捕獲到回波信號,然後獲得計時器計數值count,計算距離值。去掉多餘的計數誤差後 。

打開工程Distance,修改Main.c中的內容如下。

/*********************頭文件及定義*************************/

#include "LPC23xx.h"

#include "Lcd.h"

#include "config.h"

void delay(uint32 dly)

{

uint32 i;

for(; dly>0; dly--)

for(i=0; i

}void delay10us(uint32 dly)

{

uint32 i;

for(; dly>0; dly--)

for(i=0; i

}void ClearRect(int index)

{

switch(index)

{

case 1:

drawrect(0,12,128,16,0x2345);

break;

case 2:

drawrect(0,40,128,48,0x2345);

break;

case 3:

drawrect(0,100,128,48,0x2345);

break;

default:

break;

}

}

void LCD_Frame()

{

//屏幕初始顯示

drawrect(0,0,128,12,0x0000);

drawrect(0,12,128,16,0x2345);

drawrect(0,28,128,12,0x0000);

drawrect(0,40,128,48,0x2345);

drawrect(0,88,128,12,0x0000);

drawrect(0,100,128,48,0x2345);

drawrect(0,148,128,12,0x0000);

}

int main()

{

int idx;

int xpos,ypos;

long count,distance;

char sndBuf[20];

//通訊板IO控制引腳設置

IO1DIR &=~(1

delay(10);

//P3.0~P3.7定義為IO引腳

PINSEL6 &= 0x0000;

//定義P3.1為輸入,P3.3為輸出

FIO3DIR0 = 0;

FIO3DIR0 = 1

//設置LCD屏幕引腳

//屏幕初始化

RESET0;//複位

delay(50);

RESET1;

delay(100);

lcd_init();

delay(20);

LCD_Frame();

DispAscStr(0,12," ",2,&xpos,&ypos);

DispChnStr(xpos,ypos,"超聲模塊測試",6,&xpos,&ypos);

ClearRect(2);

/*******************超聲波測距************************/

idx=0;

while(1)

{

delay10us(100);

//發送10us啟動電平

FIO3PIN0 = 1

delay10us(1);

FIO3PIN0 &= ~(1

//等待高電平出現

while(!(FIO3PIN0&(1

//配置定時器0

T0TC=0; //清除定時器值

T0PR=0x10; //預分頻寄存器

T0CTCR=0; //定時器模式,檢測PCLK邊沿

T0TCR=0x01; //計數器使能、計數器複位

delay(1);

//等待降為低電平

while(FIO3PIN0&(1

//顯示距離值,大概80為1cm

count=T0TC;

distance =count/80;

sndBuf[0]= d ;

sndBuf[1]= = ;

sndBuf[2]= distance /10000+ 0 ; //萬

sndBuf[3]= distance %10000/1000+ 0 ; //千

sndBuf[4]= distance %1000/100+ 0 ; //百

sndBuf[5]= distance %100/10+ 0 ; //十

sndBuf[6]= distance %10+ 0 ; //個

sndBuf[7]= c ;

sndBuf[8]= m ;

DispAscStr(0,40,sndBuf,9,&xpos,&ypos);

delay10us(3000);

}

/*****************************************************/

return 0;

}

倒車實驗

本實驗模仿倒車,當距離小於20cm時,提示司機注意安全倒車距離,大於安全距離時顯示距離障礙物的距離。修改Main.c中的代碼如下:

//模仿倒車,當距離小於20cm時發出警告,並顯示當前距離值

聲速測量

利用聲速、傳播時間、傳播距離的關係,模仿實驗條件,簡單的測出實驗環境下的聲速的大概值。

例如在NXP實驗節點板定時器輸入頻率為f=12MHz,進行N=8分頻後每個計數周期為 ,假設超聲波聲速為c,則由 ,可知 。

自動門實驗

本實驗模仿自動門的功能。初始時,門關閉。當有人到達門前,原有的距離被改變,當人與測距器的距離達到臨界值時(例如距離小於50cm),打開自動門。否則,認為沒有人員的到來,關閉自動門。

idx=0;//初始狀態,門處於關閉狀態

if((distance

{

drawrect(0,40,128,48,0x2345);

DispAscStr(0,40,"status:open",11,&xpos,&ypos);

idx=0;//關閉門

}

else if((distance>50)&&(idx==0))

{

drawrect(0,40,128,48,0x2345);

DispAscStr(0,40,"status:close",12,&xpos,&ypos);

idx=1;//打開門

}

看完本文後思考

1. 超聲波有哪些用途?

2. 超聲波測距的原理是什麼?

3. 你認為超聲波測距模塊可以應用於哪些場合?

4. 影響超聲測距模塊精確度的因素有哪些呢?

歡迎大家給小編留言哦~

特別推薦

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 21ic電子網 的精彩文章:

極點是男人 零點是女人
不用再為USB底層協議犯難了
為什麼單片機不能直接驅動繼電器和電磁閥
這麼講解高斯白雜訊,還有色雜訊,誰都會懂
關於怎樣衡量一個工程師水平的一點想法

TAG:21ic電子網 |