超聲波是振動頻率高于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。改變超聲波傳感器與遮擋物的距離,監視器中將顯示對應的距離。

實驗現象
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
機器人
+關注
關注
213文章
31087瀏覽量
222324 -
接收機
+關注
關注
9文章
1244瀏覽量
56255 -
電信號
+關注
關注
1文章
845瀏覽量
21844 -
超聲波傳感器
+關注
關注
18文章
626瀏覽量
38130 -
GND
+關注
關注
2文章
549瀏覽量
41531
發布評論請先 登錄
相關推薦
熱點推薦
超聲波測距原理
為此,文中嘗試以單片機AT89S52為核心,利用一對40 kHz壓電超聲傳感器設計一款體積較小、價格低廉、精度較高、具有溫度補償、實時LCD顯示和報警的超聲波測距儀。1
發表于 04-25 11:32
基于STM32超聲波測距設計的合集
和TFTLCD顯示距離等參數。US-100帶有溫度傳感器,對超聲波的聲速進行補償,提高測量精度。超聲波測距是一種典型的非接測量方式。超聲波在
發表于 09-05 16:13
超聲波測距原理
停止計時。超聲波在空氣中的傳播速度為340m/s,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離(s),即:s=340t/2 。這就是所謂的時間差測距法。超聲波測距的原理是
發表于 07-19 09:08
如何利用超聲波進行測距呢?
評論