測定のために固定できる物ないか100均の品を眺めていたら、こんな箱見つけて、取手部分の穴にちょうど収まりそうな感じがしたので買ってきた。
合わせてみたところ、ほんの少し穴が小さかったのでやすり削った。削ったのは0.5mmほど。
内側の長さは19.5cmほど。
HC-SR04で距離測定で作成したプログラムで計測
結果はArduinoシリアルモニタからコピーできなかったため、Linuxのscreenコマンドから取得
screen /dev/ttyACM1 115200
20.22 cm
20.23 cm
20.22 cm
20.20 cm
20.19 cm
20.24 cm
20.23 cm
20.20 cm
20.20 cm
20.20 cm
停止は Ctrl+a k
Really kill this window [y/n]
平均20.21cm 誤差0.7cm
0.7cmの誤差は音速を340m/s固定にしているため。
温度も考慮した近似式「331.5 + 0.6 × 温度(℃)」
19.5cmに補正すると 328.94m/s 室温がマイナスになった。。。
多分LANケーブルで3m延長しているせいと思う。
プログラム修正
1cm当たりの音波の時間(マイクロ秒)を29.4から30.4に変更
// TIMEOUT : 測定距離 × 往復 × 1cm当たりの音波の時間(マイクロ秒) + Trigの時間
// 24720μ : 400cm * 2 * 30.4 + 400
double duration = pulseIn(SONIC_ECHO, HIGH, 24720);
// 往復時間と音速から距離算出
// 距離 = 時間 / 2 * 30.4
return duration / 60.8;
再度測定(ツイストペア3m)
19.54 cm
19.54 cm
19.55 cm
19.52 cm
19.56 cm
19.52 cm
19.55 cm
19.52 cm
19.56 cm
19.52 cm
平均19.54cm、これで良さそう
お次はより線になっていないフラットタイプ2.5m
測定(フラット2.5m)
19.56 cm
19.54 cm
19.53 cm
19.68 cm
19.54 cm
19.61 cm
19.54 cm
19.54 cm
19.53 cm
19.56 cm
平均19.56cm、それほど差はなさそうだけど、19.68とか19.51とかばらつきが出ている。
やっぱり少しばかりノイズが乗るのかな?
LANケーブルで延長したうえで精度求める場合は、取得するサンプル数増やすか、I2C接続にしてデータ測定結果自体返す方がよいと思う。
今回は人がいるか感知するだけなので、この精度で十分なのでこれをそのまま使おうと思う。
0 件のコメント:
コメントを投稿