https://blog.with2.net/link/?1965529

VLOG Arduinoで距離センサーを使ってみる

https://blog.with2.net/link/?1965529

スイッチサイエンス The Arduino Starter Kit(日本語版)

価格:12,731円
(2020/2/28 17:31時点)
感想(0件)

HC-SR04はArduinoの世界ではよく使われる測距センサです。今回はこのセンサの使い方を解説します。

HC-SR04には四つの端子があります。

  • Vcc – 電源入力
  • Trig – 超音波出力用の信号を送信
  • Echo – 超音波入力用の信号を受信
  • GND – グランド

HC-SR04は 超音波の反射時間を利用して非接触で測距します。外部から 10μ秒以上のトリガパルスを入力すると超音波パルス(8波)が送信され、出力された反射時間信号をArduinoで次の計算式で距離を測ることができます。

①Trigピンより超音波を出力
 (10μs以上Highにすると40kHzのパルスを8回送信)
②Echoピンで超音波を受信
  (HIGHからLOWに変化するまでの時間[μs]を計測)
距離[cm] = (0.034) × (②で求めた時間[μs]÷2)=0.017× ②で求めた時間[μs]
音速=340[m/s] = 34000[cm/s] = 0.034[cm/μs] ただし気温15℃一定と仮定する。

HC-SR04はAmazon、楽天、Aliexpress、秋月電子通商などから購入できます。

それぞれを下記のように接続します。HC-SR04を首振りさせてみたいので、前記事のSG90サーボモータもつないでおきます。

スケッチは下のようになります。

int trig = 2; // 出力ピン
int echo = 3; // 入力ピン
//double distance_mean = 0;
//int distance_mean_n;

void setup() {
  Serial.begin(9600);
  pinMode(trig,OUTPUT);
  pinMode(echo,INPUT);
  }

void loop() {
  // 超音波の出力終了
  digitalWrite(trig,LOW);
  delayMicroseconds(1);
  // 超音波を出力
  digitalWrite(trig,HIGH);
  delayMicroseconds(15);
  // 超音波を出力終了
  digitalWrite(trig,LOW);
  // 出力した超音波が返って来る時間を計測
  int t = pulseIn(echo,HIGH);
// 計測した時間と音速から反射物までの距離を計算
  float distance = t*0.017;
  // 計算結果をシリアル通信で出力
  Serial.print(distance);
  Serial.println(" cm");
  delay(1000);
}

実験風景はYoutubeに投稿したものを参考にしてください。精度よく測距出来ているようです。

視野角は目分量ですが±15度程度のようです。車両の障害物回避の用途では左右に±15度以上は首振りさせないといけないようです。また今回の実験環境では30㎝以上になると上下視野角の関係でテーブル面を検出しています。したがってでセンサの取り付け高さにも注意が必要です。ただし、車両の障害物回避用途であれば5から20㎝程度の測距範囲になるので取り付け高さは気にしなくて良いようです。

シェアする

フォローする