2018年7月31日 星期二

Arduino 搭配HC-SR04製作超音波測距

在製作不同的專案時,有時候需要用到不同的感測元件,在做距離量測時,我們常見的不外乎用超音波、紅外線、雷測等方式做距離量測,紅外線做距離量測,其實在無外部干擾的情況下是很不錯的,價格低廉、電路簡單、體積小,但實際上,紅外線很容易受其他外部環境的影響,比方說陽光、火源、其他紅外線光源等,所以我們在製作輪型機器人時常常會選用超音波感測模組,量測距離。

今天我們採用的是如下圖的HC-SR04,市售的超音波測距大多也都是這個款式,有效的量測距離遠,而且不易受環境干擾,讀到的距離數值又準確,在實驗時我們讀到的誤差約在正負2CM,實際上這個誤差會隨著受測物的形狀有著些微的影響







網路上的工作原理如下,但實際上我們參考就好,並不需要深入設計原理,先能夠使用再說


未來可行的應用
1.汽車防撞測距、輪型機器人障礙物偵測
2.環境中的姿態偵測,揮手等(需使用較多的SENSOR)

實際實驗環境


受測物體是小米的藍芽喇叭,超音波測距會隨著物體的表面影響產生不同的誤差,如果是大面積的平面會是效果最好的,如果是體積小的物體、或者是圓弧狀、三角形等就容易產生比較大的誤差,還是要看最終的使用環境決定

接線方式

今天採用的是Arduino NANO +HC-SR04超音波模組
接線非常簡單,一共也才四條線
******************接線方式******************
NANO                    HC-SR04

+5V------------------VCC
D12------------------TRIG
D11------------------ECHO
GND------------------GND
********************************************

參考資料
參考的是如下網址,相關程式、接線方式也可以參考如下網址


測試程式

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(9600); // Open serial monitor at 9600 baud to see ping results.
}

void loop() {
  delay(50);                     // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  Serial.print("Ping: ");
  Serial.print(sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
}

實際測試影片



實際回傳的畫面




沒有留言:

張貼留言

專題許願池,請不要吝嗇將你想製作的專題用回覆的方式寫在下方

專題許願池 開這個板是為了幫助一些人,有專題製作需求,但是又不知道要如何實現 如果您有想製作的專題,請您將您的題目回覆在下方,先提出您的需求,進而討論可行性或製做的方向,或是您進行到什麼階段,有遇到什麼樣的問題也可以提出來討論,如果我知道會盡量幫助您順利完成。 不限...