2018年12月11日火曜日

超音波風向風速計


 Excel上でだが、やっとマトモに計測できるようになった。
 右下の青が風向、赤が垂直風速、緑が水平風速。10サンプル(1秒間)の平均なのでそれなりに滑らかな波形。

 風はシロッコファンに大量のストローを突き刺してブロアーっぽくして使った。
 まず南側から風を送り、それを西からに移動。また南に戻り、天頂方向に移動、そこから西に下ろし、南に戻る、という感じの波形。
 南風が方位角0で西風が方位角90度、吹き下ろしの風が垂直成分で負方向、という感じだが、ちゃんとそのとおりに波形が動いている(ように見える)。

 左上のあまり動いていない線はFFTのpowerをdBで表示している。-11dBから-15dBのあたり。chによって感度が違うが、ある程度の風が吹いていてもch内ではそれほど感度の変化は見られない。多少ノイズが増えてる感はあるけど。
 -12dBだと0.2Vppくらいになる。3.3Vに比べてかなり低いけど、一応問題なく計測は出来てる。-15dBだと0.1Vppくらいしかないけど。
 今は受信素子をADCに直結しているが、前段にオペアンプを入れて12倍くらいしてやれば十分な振れ幅になる。ただ、オペアンプで位相遅れが出るし、それがどれくらいの誤差になるかは不明。
 今は送信素子も受信素子もマイコンのGPIOに直結だから、外部のエラー要因はほぼ無い。もっとも、受信素子にはAC結合とオフセットのためのCRが入ってるが。


 とりあえず、今はターミナルソフトからExcelにコピペしたデータだけを解析しているので、次はこの処理をオンボードで行うのが目標。
 それほど高負荷な処理ではないから、問題ないと思う。


 現在は起動時にキャリブレーションを行っているが、最近温度センサがどんどん調子悪くなっていっているので、いつまで持つか。
 一応、以前に30秒位かけて取ったキャリブレ値があるのだが、その時の気温は記録していなかった。気温が変わってもキャリブレ値は有効だが、気温が大きく変化するとサイクルスリップしてしまう(キャリブレーションというか、位相追尾の処理の問題だが)。


追記

 オンボードで計算してみた。今回は水平方向の移動だけ。
 とはいえ、オンボードで計算しているのは水平速度(Hspd)、垂直速度(Vspd)、水平方位(dir raw)だけで、dir rawはノイズが多いのと、-180 - +180の範囲を取るので、Excelで正弦波・余弦波に分解した後に移動平均を取り、それをATAN2で角度に戻し、さらにリミットの修正を行ったのが、緑の線。

 水平成分は水平方位と水平速度の極座標で表しているが、データとしては直交座標のXYZで出したほうが扱いやすい気もする。ただ、人間が読むならやはり極座標のほうが直感的なんだよな。

 ノイズが多いのが問題なので、XYZを移動平均で平滑したあとに極座標に変換して表示したほうがいいかもしれない。
 CMSISライブラリにFIRもあるのだが、このライブラリは複数のサンプルをまとめて処理するのが得意で、1サンプルごとに入れるというのには向いていない。まぁ、やってできなくはないだろうけど。

0 件のコメント:

コメントを投稿