
超聲波測(cè)距
超聲波是振動(dòng)頻率高于20KHz的機(jī)械波,它具有頻率高、波長(zhǎng)短、繞射現(xiàn)象小、方向性好、能夠成為射線而定向傳播等特點(diǎn),在工業(yè)、國(guó)防、生物醫(yī)學(xué)等方面有廣泛應(yīng)用,本篇介紹利用超聲波進(jìn)行測(cè)距。
1. 測(cè)距原理
超聲波傳感器的發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射的同時(shí)開(kāi)始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物就立即返回來(lái),超聲波接收器收到反射波就立即停止計(jì)時(shí)。根據(jù)計(jì)時(shí)器記錄的時(shí)間t,聲波在空氣中的傳播速度為340m/s,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離s,即:s=340m/s × t / 2 。這就是所謂的時(shí)間差測(cè)距法。
2. 超聲波傳感器介紹
超聲波傳感器是將超聲波信號(hào)轉(zhuǎn)換成其他能量信號(hào)「通常是電信號(hào)」的傳感器。HC-SR04是比較常用的超聲波傳感器模塊,廣泛應(yīng)用于機(jī)器人測(cè)距、小車避障等場(chǎng)合。

超聲波模塊
主要參數(shù)
- 電壓:DC5V
- 電流:15mA
- 頻率:40KHz
- 感應(yīng)角度:<15度
- 探測(cè)距離:2cm—400cm
- 精度:3mm
使用說(shuō)明
- 采用Trig引腳觸發(fā)測(cè)距,給至少10us的高電平信號(hào)。
- 模塊自動(dòng)發(fā)送8個(gè)40KHz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回。
- 有信號(hào)返回后,通過(guò)Echo引腳輸出高電平,通過(guò)高電平持續(xù)時(shí)間獲取到時(shí)間量。
3. 實(shí)驗(yàn)材料
- Uno R3開(kāi)發(fā)板
- 配套USB數(shù)據(jù)線
- 面包板及配套連接線
- HC-SR04超聲波傳感器模塊
4. 實(shí)驗(yàn)步驟
1. 根據(jù)原理圖搭建電路圖。
超聲波傳感器模塊的VCC、GND分別連接到開(kāi)發(fā)板的5V、GND。傳感器的Trig引腳、Echo引腳分別連接到開(kāi)發(fā)板的數(shù)字引腳2、3。
實(shí)驗(yàn)原理圖如下圖所示:

實(shí)驗(yàn)原理圖
實(shí)物連接圖如下圖所示:

實(shí)物連接圖
2. 新建sketch,拷貝如下代碼替換自動(dòng)生成的代碼并進(jìn)行保存。
#define TrigPin 2
#define EchoPin 3
float Value_cm;
void setup() {
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop() {
digitalWrite(TrigPin, LOW); //低高低電平發(fā)一個(gè)短時(shí)間脈沖去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
Value_cm = float( pulseIn(EchoPin, HIGH) * 17 ) / 1000;
//讀取一個(gè)引腳的脈沖(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會(huì)等待引腳變?yōu)镠IGH,開(kāi)始計(jì)時(shí),再等待引腳變?yōu)長(zhǎng)OW并停止計(jì)時(shí)。
//接收到的高電平的時(shí)間(us)*340m/s/2=接收到高電平的時(shí)間(us)*17000cm/1000000us = 接收到高電平的時(shí)間*17/1000(cm)
Serial.print(Value_cm);
Serial.println("cm");
delay(1000);
}
3. 連接開(kāi)發(fā)板,設(shè)置好對(duì)應(yīng)端口號(hào)和開(kāi)發(fā)板類型,進(jìn)行程序下載。

程序下載
5. 實(shí)驗(yàn)現(xiàn)象
打開(kāi)串口監(jiān)視器,波特率設(shè)置成與程序中相一致的9600。改變超聲波傳感器與遮擋物的距離,監(jiān)視器中將顯示對(duì)應(yīng)的距離。

實(shí)驗(yàn)現(xiàn)象