大好きArduino

Arduino総合情報サイト

Arduinoプログラミング基礎

11.超音波距離センサーの制御

2016/08/18

超音波距離センサー

いつものように秋月電子に行ってみます。(ここをクリックするとショップへジャンプ
すると、下記のような超音波による距離を計測できるパーツが400円で購入することができますので、今回はこれを使ってArduinoで物体までの距離を計測するものを作ってみます。

WS000000

超音波距離センサーとは...

とても高級そうな響きをしていますが値段は400円という安さで購入可能な電子パーツです。
上記のスペックでいいますと、目前の物体2~180cmまでの距離を計測できるものです。
構造的には、片方のスピーカから40KHzの超音波を出力し、その反射された音をもう一方のマイク音で拾い、出力から拾うまでの時間を計測し出力するというものです。
ここでいう超音波とは基本的には40KHzの音なので、実際の距離は、331.5+0.6t(m/sec)の計算式を利用して計算をします。

Arduinoとの接続方法と制御原理

Arduinoとはとても簡単です。
一番左のVCCとArduinoの5V、一番右のGNDとArduinoのGNDを接続すれば、このモジュールには電源が供給されます。
あとは、このセンサーのTrig端子とEcho端子をArduinoのお好きなデジタルポートと接続し、Trig端子に接続したポートに計測用の信号をArduinoから出力し、Echoの端子にこのセンサーから出力された信号を受信します。
あとは受信した信号を上記の計算式に基づいて計算してあげれば距離は計測できます。

実態配線写真

超音波センサーとArduino

プログラムと解説


 
void setup() {
  Serial.begin( 9600 );//シリアルモニターに出力する準備
  pinMode( 3, INPUT ); //Echo入力
  pinMode( 2, OUTPUT );//Trig出力
}
void loop() {
  double ans ;
  double dis ;
  digitalWrite(3, LOW); 
  delayMicroseconds(2); 
  digitalWrite(3, HIGH );  //超音波を出力
  delayMicroseconds( 10 ); //仕様書通り反応を待つ
  digitalWrite(3, LOW );   //落とす
  ans = pulseIn( 2, HIGH ); //センサからの入力
  ans = ans / 2;            
  dis = ans * 340 * 100 /1000000; // 音速は340m/秒で距離計算
  Serial.println(ans);
  delay(1000);
}

正確に求めるために

実際には音は気温や湿度の影響を受けるため、正確に計測する場合は、温度計や湿度計を追加してその数値を考慮し再計算する必要があります。
詳細については ココ(Wikipedia) を参照し研究するとよいでしょう。
私が温度計を用いて計算考慮うをした場合、1℃あたり多くて1.5cm程変化をしました。
しかし、400円の超音波センサーと実験環境からすると、周囲の音やその他の影響も受けることを考えて、このあたりの実験パーツでそこまでの制度を求めるかどうかは用途とポリシーによるかもしれません。
特に、障害物までの間に、真正面ではなくて多少横にずれたところの障害物でも、大きさなどによっては影響することが分かりました。

-Arduinoプログラミング基礎