2017年3月26日日曜日

超音波風速計 ちょっと計測方法を変更

 久しぶりの超音波風速計ネタ。
 動作確認の手段がないので、できることが少ない。


 以前は等価時間サンプリングを使って位相を計測していたが、今回は実時間サンプリングを実装してみた。 
 

 しばらく部屋で放置していた時のグラフ。部屋の外でファンヒーターを炊いていたので若干気温が上昇傾向に有る。が、データとして有効なほどのΔtは得られていない。

 位相の計算は整数演算を使用しており、扱いとしては固定小数点演算に近いはず。整数部16bit(内1bitが符号)、小数部16bitで、小数部16bitのみを取り出して位相データとしている。16bitではおよそ4桁の精度なので、0.0001フェーズくらいまでの分解能が有る。
 センサ間150mmではだいたい0.035フェーズで1度Cあるいは1m/sくらいになるので、数字だけなら10ミリケルビン or 1cm/sくらいの分解能が有る。本当か?
 もっとも、分解能と精度は全く関係ない話であり、精度は0.5degC、1m/sくらいあればいいなーといったところ。


 等価時間サンプリングを使っていたときも、ほとんどの計算は整数で行っていたので、大幅な高速化といった利点は無い。一方で、ETS変換テーブルの220バイト程度が削減されたりとか、配置換えのループが無くなった分のメリットは得られるはず。
 とはいえ、実時間サンプリングは計測できるフェーズ数が多いから、計算量は増えているはず。


 現在はSTM32F103CBT(48ピン,ROM128k,RAM20k)を使っている。ピン数に余裕はないが足りないと言うほどではない。動作速度も、更新レートが充分に低ければ問題ない。しかし、RAMがかなりカツカツで、RTOSの機嫌を伺いながらメモリを確保しているという状況。ROMは70k程度なので、まだ3割以上残っている。
 STM32F103VET(64ピン,ROM512k,RAM64k)であればメモリにだいぶ余裕があるが、基板サイズ的にちょっと大げさな気がする。
 STBee F4miniあたり使うと楽になれるのかなーと思うけど、まだ機会がなくて買っていない。


 これから暖かくなってくると、Δtが稼ぎづらいので、今のうちにいろいろ試験しておかなければ。とはいえ、暖かくなれば外で風に当てるとか、いろいろできるようになるのだけど。

0 件のコメント:

コメントを投稿