Arduino(16) 超音波センサーによる距離の測定

ブログランキング・にほんブログ村へ

アマゾンで購入した音波センサーHC-SR04を使って距離の測定を行いました。

概要

超音波は、音響振動の一種で、人間の耳では聞こえない周波数の音波のことです。身近なもので言えばコウモリやイルカなどが、超音波を自ら発生し、その反射波を聞き分けることが出来ます。通常人間は約 20Hz~20kHz の周波数の音波は聞くことができ、これを可聴周波数といいますが、範囲以外の音は聞くことができません。(年齢を重ねてくると、20kHzの音なんて全く聞こえません。)人間の耳には聞こえない 20Hz 以下の音の事を低周波音波といい 20kHz 以上の音の事を超音波といいます。

超音波は、空気などの音を伝える媒体の、密度の濃淡として伝わるもので疎密波といわれています。このため特性は、媒体の性質により大きく左右されます。音波の伝わる速さは媒体によって決まり、周波数にはあまり影響されませんが、温度には影響されるのでそれを考慮しなければなりません。一般に超音波の伝播速度は速度を V[m/s]とすると
V=331.5+0.60714×t
と表されます。この時の t は摂氏温度[℃]です。

超音波センサとは、その名の通り、超音波を発して、対象物に反射して超音波が返ってくるまでの時間を計測します。この時間が計測できれば、速さがわかっているわけですから、距離が計算できることになります。

回路図

 

スケッチ

int TRIG = 3;
int ECHO = 2;

double duration = 0;
double distance = 0;
double speed_of_sound = 331.5 + 0.6 * 15; // 15℃の気温の想定

void setup() {
  Serial.begin( 9600 );

  pinMode(ECHO, INPUT );
  pinMode(TRIG, OUTPUT );
 }

void loop() {
    digitalWrite(TRIG, LOW); 
    delayMicroseconds(2); 
    digitalWrite( TRIG, HIGH );
    delayMicroseconds( 10 ); 
    digitalWrite( TRIG, LOW );
    duration = pulseIn( ECHO, HIGH ); // 往復にかかった時間[マイクロ秒]

    if (duration > 0) {
      duration = duration / 2; // 往路にかかった時間
      distance = duration * speed_of_sound * 100 / 1000000;
      Serial.print("Distance:");
      Serial.print(distance);
      Serial.println(" cm");
    }
  } 
  delay(1000);
}
結果

これだけの回路で距離が測れるなんて、感動ものです。

ブログランキング・にほんブログ村へ

コメントを残す

メールアドレスが公開されることはありません。