超聲波是振動頻率高于20KHz的機械波,它具有頻率高、波長短、繞射現象小、方向性好、能夠成為射線而定向傳播等特點,在工業、國防、生物醫學等方面有廣泛應用,本篇介紹利用超聲波進行測距。
1. 測距原理
超聲波傳感器的發射器向某一方向發射超聲波,在發射的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。根據計時器記錄的時間t,聲波在空氣中的傳播速度為340m/s,就可以計算出發射點距障礙物的距離s,即:s=340m/s × t / 2 。這就是所謂的時間差測距法。
2. 超聲波傳感器介紹
超聲波傳感器是將超聲波信號轉換成其他能量信號「通常是電信號」的傳感器。HC-SR04是比較常用的超聲波傳感器模塊,廣泛應用于機器人測距、小車避障等場合。
主要參數
使用說明
- 采用Trig引腳觸發測距,給至少10us的高電平信號。
- 模塊自動發送8個40KHz的方波,自動檢測是否有信號返回。
- 有信號返回后,通過Echo引腳輸出高電平,通過高電平持續時間獲取到時間量。
3. 實驗材料
- Uno R3開發板
- 配套USB數據線
- 面包板及配套連接線
- HC-SR04超聲波傳感器模塊
4. 實驗步驟
1. 根據原理圖搭建電路圖。
超聲波傳感器模塊的VCC、GND分別連接到開發板的5V、GND。傳感器的Trig引腳、Echo引腳分別連接到開發板的數字引腳2、3。
2. 新建sketch,拷貝如下代碼替換自動生成的代碼并進行保存。
1#define TrigPin 2
2#define EchoPin 3
3
4float Value_cm;
5
6void setup() {
7 Serial.begin(9600);
8 pinMode(TrigPin, OUTPUT);
9 pinMode(EchoPin, INPUT);
10}
11
12void loop() {
13 digitalWrite(TrigPin, LOW); //低高低電平發一個短時間脈沖去TrigPin
14 delayMicroseconds(2);
15 digitalWrite(TrigPin, HIGH);
16 delayMicroseconds(10);
17 digitalWrite(TrigPin, LOW);
18 Value_cm = float( pulseIn(EchoPin, HIGH) * 17 ) / 1000;
19 //讀取一個引腳的脈沖(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會等待引腳變為HIGH,開始計時,再等待引腳變為LOW并停止計時。
20 //接收到的高電平的時間(us)*340m/s/2=接收到高電平的時間(us)*17000cm/1000000us = 接收到高電平的時間*17/1000(cm)
21 Serial.print(Value_cm);
22 Serial.println("cm");
23 delay(1000);
24}
3. 連接開發板,設置好對應端口號和開發板類型,進行程序下載。
程序下載
5. 實驗現象
打開串口監視器,波特率設置成與程序中相一致的9600。改變超聲波傳感器與遮擋物的距離,監視器中將顯示對應的距離。
實驗現象
-
機器人
+關注
關注
210文章
28231瀏覽量
206617 -
接收機
+關注
關注
8文章
1180瀏覽量
53413 -
電信號
+關注
關注
1文章
795瀏覽量
20542 -
超聲波傳感器
+關注
關注
18文章
578瀏覽量
35904 -
GND
+關注
關注
2文章
529瀏覽量
38663
發布評論請先 登錄
相關推薦
評論