【Arduino】超音波距離センサ(HC-SR04)の測定精度を向上(気温考慮)

この記事では、Arduinoと超音波距離センサ(HC-SR04)で対象物までの距離を気温を考慮して測定する方法をソースコード付きで解説します。

超音波距離センサ(HC-SR04)

超音波距離センサ(HC-SR04)は、超音波を用いた距離センサーです。
このセンサーは、2~450cmまでの範囲内にある対象物までの距離を測定できます。
アマゾンで200円で入手できました。
出力した超音波が対象物に跳ね返って戻ってくるまでの時間と音速(超音波の速度)から距離を求めます。

【計算式】
(対象物までの距離)=(音速)×(出力してから戻ってくるまでの時間÷2)

前回は音速を340m/sで固定しました。
【参考】【Arduino】超音波距離センサ(HC-SR04)の使い方

しかしながら、実際には気温や湿度などの影響で変化します。
よって、測定精度を上げるにはこれらの変化を反映してやります。
今回は、気温を考慮してArduinoでHC-SR04を使ってみました。

回路構成


赤:5V、黒:GND、黄:8番ピン、緑:9番ピン

【使用機器】
Arduino UNO ×1
超音波距離センサ(HC-SR04)×1
ブレッドボード ×1
・ジャンパーワイヤ 数本

※使用した>超音波距離センサ(HC-SR04)

仕様 内容
電源電圧 5V
待機電流 2mA未満
信号出力 0-5V
センサ角度 15度以下
測定可能距離 2cm-450cm
分解能 0.3cm

超音波センサの4本の端子の構成は以下の通りです。
(本体にもラベルが刻まれています)

ラベル 内容
Vcc 電源入力(5V)
Trig 超音波信号を送信
Echo 超音波信号を受信
GND グランド

ソースコード

サンプルプログラムのソースコードです。

①出力ピン(8)で超音波を出力
(トリガ端子を10μs以上Highにすると40kHzのパルスを8回送信)
②入力ピン(9)で超音波を受信
(エコー端子がHIGHになってからLOWに変化するまでの時間=超音波が送信されてから受信するまでの時間[μs]を計測)
③ 以下の式で時間から距離を求めます。

距離[cm] = (音速) × (②で求めた時間[μs]÷2)
音速=331.5 + (0.6×気温) [m/s] = [331.5 + (0.6×気温)]÷10000 [cm/μs]
※気温の単位は℃

【参考】pulseIn関数の使い方

実行結果

サンプルプログラムの実行結果です。

【シリアルモニター】
19.21 cm
19.14 cm
18.76 cm
18.73 cm

※本当は温度センサーでリアルタイムに読み取った値で音速を逐次計算した方が良いです。

【関連記事】
Arduino入門 基本的な使い方

シェア&フォローお願いします!