Arduinoで超音波センサーを扱う
今回は、Arduinoで超音波センサーを使って、距離を測定したいと思います。
使用した超音波センサーモジュールは「HC-SR04(400円)」です。モジュール化されているのでとても扱いやすいです。
回路図
基本的に、超音波センサーモジュールの基盤に書かれている配線にすれば完了です。念の為、ソフトで作図したものも貼っておきます。
Trigピンに、パルス波の信号を出し、反射するのに要した時間がEchoピンから返ってきます。
センサー特性
この超音波センサーモジュールは、データシートによると以下の特性を持っています。
- 分解能:0.3[cm]
- 測定可能距離:2~400c[cm]
- 範囲:15°
スケッチ
Trigピンに10μsだけHIGHを書き込むとそのうちに8回のパルス波を出すそうなので、それに従って書いていきます。
double value = 0; void setup() { Serial.begin(9600); pinMode(2, INPUT); pinMode(3, OUTPUT); } void loop() { digitalWrite(3, LOW); delayMicroseconds(2); digitalWrite(3, HIGH ); delayMicroseconds(10); digitalWrite(3, LOW); value = pulseIn(2, HIGH); value = value / 2 * 340 * 100 / 1000000; Serial.println(value); delay(100); }
8~12行目でパルス波を出し、それをpulseInで拾います。この時、反射に要した時間がvalueに代入されているので、これを音速340[m/s]と仮定して、距離を算出します。
考察
シリアルプロッタを使って距離が正しく測定できているか確認してみました。
概ね正常に測定できていますが、正常に拾えなかった時に極端に値が大きくなったり、超音波の特性上布状の材質は測定が困難なようです。実際、上記グラフの極端に値が上下しているところは、布に対して測定した時です。
また、手などの反射できる範囲が狭い材質に対しても測定に若干難がありそうです。
このセンサーは価格400円のわりには分解能が0.3cmという精密さを誇っているので、プログラムの改良によっては、実用的な何かが作れそうです。
投稿者プロフィール
最新の投稿
- 2018.09.01AMD動画エンコードでGPUを活用する
- 2018.03.26phpツイートIDからsnowflakeを用いて投稿時刻のミリ秒を算出
- 2018.02.18phpphpMyAdminのインストール方法(Ubuntu)
- 2018.01.07未分類新聞を折らずに郵送する方法
最近のコメント