【ラズベリーパイ3】Pythonで超音波距離センサ(HC-SR04)の精度向上(気温考慮)

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

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

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

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

前回は音速を340m/sで固定しました。
【参考】【ラズベリーパイ3】Pythonで超音波距離センサ(HC-SR04)の制御

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

回路構成


赤:5V、黒:GND、黄:GPIO14、緑:GPIO15

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

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

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

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

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

ソースコード

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


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

距離[cm] = (0.034) × (②で求めた時間[s]÷2)
音速=33150+60×気温 [cm/s]

実行結果

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

19.2134566134 cm
19.1412345674 cm
18.7612345667 cm
18.7345677832 cm

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

【関連記事】
ラズベリーパイ3で電子工作入門
Python入門 サンプル集

コメント