2018年2月16日金曜日

測距


マイコン内でLPFを通してピーク検出を行う、というところまで動きました。とりあえず横軸をExcelで音速から距離に計算してグラフ化しています。

 上のグラフはゲート全域のおよそ12m分、下のグラフは3mまでを拡大したものです。

 試しに130cmくらい離れた場所に30cmくらいの間隔でエアダスターの缶を置いてみました。1.35m、1.47m、1.64m、1.86mあたりに山があります。
 おそらく1.35mと1.64mがダスター缶じゃないかな、と思います。間隔は0.31mですから、缶の間隔と一致します。
 その他の山は、1.47mはダスター缶を置いた台の反射だと思います。その間も全体的に高いのは、台の壁面が見えているため、そこからの反射が有るのではないかな、と思います。1.86mは何が反射しているのかわかりません。壁にしては近いし、他のものは空のダンボールとかどれも有り得そうな感じです。


 距離分解能は10cmくらいかな、という感じでしょうか。LPFのCOFをもう少し上げれば距離分解能が稼げるかもしれませんが、それでも5cmくらいが限界だと思います。

 もっとも、パルス幅は10msecなので、パルス圧縮を行わなければ距離分解能は1.7mまで悪化してしまうので、15倍くらい性能が改善しているわけですが。
 パルス圧縮比は40なので、理論値で行けば4.25cm程度になるはずです。調整次第では、理論値に近い性能まで出るかもしれません。


 今のところ、計測を開始してからUARTの出力が終わるまでは20秒くらいかかっています。しかし、UARTを吐くforの中では計算は行っておらず、計測を開始してからUARTの出力が始まるまでは体感で1秒もありませんから、そのほとんどの時間をUARTで食っていることになります。
 データ数が1万4千行あり、1行あたりおよそ20文字近くのデータが有るので、全体では280kbyteくらいを転送していることになります。UARTの転送速度は12kbyte/secなので、280/12で23.33...秒が必要です。実際にはもう少し文字数が少ないので、ほぼ実測値と一致しています。
 ということで、現在でも115.2kbaudのUARTをフルに使っていることになります。また相関等の計算は0.5秒程度(デバッグ出力による)で、ピーク値の検出はほぼ無視できる程度であることがわかります。
 明らかにUARTに流すデータが多すぎるので、このあたりは気にならない程度までデータを飛ばすようにすれば、苛つかない程度には早くなると思います。


 とりあえず超音波距離計として必要な機能の大半は実装が終わりました。次の大きな目標としては温度計を動作させることでしょうか。
 パルス圧縮がおおよそ理論通りに動くようになってきて、そろそろ超音波距離計も飽きてきました。

0 件のコメント:

コメントを投稿