Arduino提高篇07—超聲波測距

超聲波測距

超聲波是振動頻率高於20KHz的機械波,它具有頻率高、波長短、繞射現象小、方向性好、能夠成爲射線而定向傳播等特點,在工業、國防、生物醫學等方面有廣泛應用,本篇介紹利用超聲波進行測距。

1. 測距原理

超聲波傳感器的發射器向某一方向發射超聲波,在發射的同時開始計時,超聲波在空氣中傳播,途中碰到障礙物就立即返回來,超聲波接收器收到反射波就立即停止計時。根據計時器記錄的時間t,聲波在空氣中的傳播速度爲340m/s,就可以計算出發射點距障礙物的距離s,即:s=340m/s × t / 2 。這就是所謂的時間差測距法。

2. 超聲波傳感器介紹

超聲波傳感器是將超聲波信號轉換成其他能量信號「通常是電信號」的傳感器。HC-SR04是比較常用的超聲波傳感器模塊,廣泛應用於機器人測距、小車避障等場合。

超聲波模塊

主要參數

  • 電壓:DC5V
  • 電流:15mA
  • 頻率:40KHz
  • 感應角度:<15度
  • 探測距離:2cm—400cm
  • 精度:3mm

使用說明

  • 採用Trig引腳觸發測距,給至少10us的高電平信號。
  • 模塊自動發送8個40KHz的方波,自動檢測是否有信號返回。
  • 有信號返回後,通過Echo引腳輸出高電平,通過高電平持續時間獲取到時間量。

3. 實驗材料

  • Uno R3開發板
  • 配套USB數據線
  • 麪包板及配套連接線
  • HC-SR04超聲波傳感器模塊

4. 實驗步驟

1. 根據原理圖搭建電路圖。

超聲波傳感器模塊的VCC、GND分別連接到開發板的5V、GND。傳感器的Trig引腳、Echo引腳分別連接到開發板的數字引腳2、3。

實驗原理圖如下圖所示:

實驗原理圖

實物連接圖如下圖所示:

實物連接圖

2. 新建sketch,拷貝如下代碼替換自動生成的代碼並進行保存。

#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); //低高低電平發一個短時間脈衝去TrigPin
  delayMicroseconds(2);
  digitalWrite(TrigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin, LOW);
  Value_cm = float( pulseIn(EchoPin, HIGH) * 17 ) / 1000; 
  //讀取一個引腳的脈衝(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會等待引腳變爲HIGH,開始計時,再等待引腳變爲LOW並停止計時。
  //接收到的高電平的時間(us)*340m/s/2=接收到高電平的時間(us)*17000cm/1000000us = 接收到高電平的時間*17/1000(cm) 
  Serial.print(Value_cm);
  Serial.println("cm");
  delay(1000);
}

3. 連接開發板,設置好對應端口號和開發板類型,進行程序下載。

程序下載

5. 實驗現象

打開串口監視器,波特率設置成與程序中相一致的9600。改變超聲波傳感器與遮擋物的距離,監視器中將顯示對應的距離。

實驗現象
關注微信公衆號:TonyCode
Arduino學習交流羣:868283450

更多內容,歡迎關注我的公衆號。 微信掃一掃下方二維碼即可關注:
掃碼加入微信公衆號:TonyCode

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章