超聲波測距模塊有好多種類型,目前比較常用的有URM37超聲波傳感器默認是232接口,可以調為TTL接口,URM05大功率超聲波傳感器測試距離能到10米,算是目前來說測試距離比較遠的一款了,另外還有比較常用的國外的幾款SRF系列的超聲波模塊,目前的超聲波模塊精度能到1cm。
下面我們介紹一款HC-SR04模塊:
1、此模塊性能穩定,測度距離精確,模塊高精度,盲區小。產品應用領域: 機器人避障 物體測距 液位檢測 公共安防 停車場檢測 。
2、 主要技術參數:
1:使用電壓:DC---5V
2:靜態電流:小于2mA
3:電平輸出:高5V
4:電平輸出:底0V
5:感應角度:不大于15度
6:探測距離:2cm-450cm
7:高精度 可達0.2cm
實物圖 接線方式:VCC、trig(控制端)、 echo(接收端)、 GND
基本工作原理: (1)采用IO口TRIG觸發測距,給至少10us的高電平信號; (2)模塊自動發送8個40khz的方波,自動檢測是否有信號返回; (3)有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2; 本模塊使用方法簡單,一個控制口發一個10US以上的高電平,就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,當此口變為低電平時就可以讀定時器的值,此時就為此次測距的時間,方可算出距離.如此不斷的周期測,即可以達到你移動測量的值


5、 操作:初始化時將trig和echo端口都置低,首先向給trig 發送至少10 us的高電平脈沖(模塊自動向外發送8個40K的方波),然后等待,捕捉 echo 端輸出上升沿,捕捉到上升沿的同時,打開定時器開始計時,再次等待捕捉echo的下降沿,當捕捉到下降沿,讀出計時器的時間,這就是超聲波在空氣中運行的時間,按照 測試距離=(高電平時間*聲速(340M/S))/2 就可以算出超聲波到障礙物的距離。
6、 下面是飛思卡爾XS128單片機測距的程序:
while(1)
{
PT1AD0_PT1AD00 = 1;//給超聲波模塊輸入高脈沖
PITINTE_PINTE1=1; //打開PIT1定時器
while(!(counter0>=4)); //等待20us
PITINTE_PINTE1=0;counter0 = 0;//關閉定時器,計數清零
PT1AD0_PT1AD00 = 0; //trig管腳拉低
PORTB_PB0 = 0; //指示燈0
while(!(PT1AD0_PT1AD01 == 1)); //等待echo輸出上升沿
PORTB_PB1 = 0; //指示燈1
PITINTE_PINTE0=1; //打開PIT0定時器
while(!(PT1AD0_PT1AD01 == 0)); //等待下降沿
distance = counter*17/20; //計算距離,單位CM
PITINTE_PINTE0=0; //關閉定時器
PORTB_PB2 = 0; //指示燈2
PITINTE_PINTE0=1; //打開定時器定時500ms,數碼管顯示
while(!(counter>=10000))
{
Showing(distance); //顯示距離,精確1cm
}
PITINTE_PINTE0=0;counter=0; //關閉定時器,清零
}
|