TOP > カテゴリ > ロボット・電子工作・マイコン >

距離測定モジュール(超音波)の使い方 [Arduino]

超音波を使用して目標までの距離を測定する事ができるサインスマートの「HC-SR04」の使い方です。主にロボット関連で使用されています。

[実行結果]

HC-SR04の測定距離は2cmから400cmです。

使用部品・材料

総額で約670円です。(Arduino本体の値段を除く)

部品/材料値段備考
ブレッドボード¥270秋月電子の通販コード(P-00315)
超音波距離センサー HC-SR04¥400秋月電子の通販コード(M-11009)

配線図

スケッチ(プログラム)

int trigger_pin = 8;
int echo_pin = 9;

void setup() {
  Serial.begin(9600);
  pinMode(trigger_pin, OUTPUT);
  pinMode(echo_pin, INPUT);
}

void loop() {

  // [超音波の発射]
  // ※トリガーとなるHIGH時間は「10us ~ 60ms」まで
  digitalWrite(trigger_pin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigger_pin, HIGH);
  delayMicroseconds(18);
  digitalWrite(trigger_pin, LOW);

  // [距離の取得]
  // ※echoピンに入力されるパルスの長さを検出する(HIGH時間の取得/μ秒)
  int duration = pulseIn(echo_pin, HIGH);
  if (duration > 0) {
    // 距離(cm) = ECHOのHIGH時間 x 超音波速度(0.034cm/μ秒) / 2
    float distance = (duration * 0.034) / 2;
    Serial.print(distance);
    Serial.println("cm");
  }
  delay(200);
}

超音波による距離の算出

計算式は公式データシート(hc-sr04_ultrasonic_module_user_guidejohn_b.pdf)の「6. Module Operation」(6. モジュールの操作)に記載されています。

[英語]

Distance = (ECHO high level time X ultrasonic velocity (Speed of Sound in air 340m/sec) / 2, you can calculate the distance to the obstacle.

[日本語訳]

距離(m) = (ECHOのHIGH時間 x 超音波速度) / 2
※超音波速度 = 音速340m / 秒

「ECHOのHIGH時間」の単位はμ秒(マイクロ秒)ですので、超音波速度の単位も「μ秒」に合わせます。

340m/秒 = 0.34m/ミリ秒 = 0.00034m/μ秒

次に距離の単位を「m」から「cm」に変換します。

0.00034m = 0.00034m * 100 = 0.034cm

これらをまとめると

距離(cm) = (ECHOのHIGH時間 x 超音波速度(0.034cm/μ秒)) / 2

となります。

超音波速度の基準値(音速340m / 秒)は温度や湿度によって、誤差が発生しますので注意して下さい。





関連記事



公開日:2017年05月30日 最終更新日:2017年08月20日
記事NO:02404