2018年12月7日金曜日

超音波風向風速計



 上が相関結果の全体、下が一部の拡大。

 Fc40kHz、ΔF4kHz、PW2.5msec、PCR10、の設定。
 まぁ多少は特性が落ちてるけど、こんなもんだろ、という程度にはパルス圧縮できてる。


 青が入力波形、赤がパルス圧縮後の波形。
 入力ののペーっとした感じからすれば、きっちり山が出てる。山の前後が下がりきらないのはおそらくサイドローブの影響。相関を取れる期間が狭いのでサイドローブがしっかり見えないが。
 入力波形の前半の振幅が低いのは、素子の立ち上がりが遅いからなのか、あるいは素子の中心周波数が高めにシフトしてるのか。


 素子間が15cmなので、340m/sとすれば0.44ms程度の位置にピークが出るはず。
 しかし、実際は0.75msあたりにピークが出ている。
 音速が200m/s程度なら15cmで0.75msになるが、200m/sというと-175℃あたりになる。そんなに寒いわけはない。

 超音波素子の応答性の悪さがチャープ信号を遅らせてるのかもしれない。
 単一方向のリニアチャープだから、信号が遅れてもそれを検出できない。折返し型のチャープ信号であれば、素子の特性の悪さはドップラーシフト成分として検出できるはずなんだが。ドップラーシフトを検出するのはかなり面倒なのでソフト実装じゃやりたくないけど。
 たぶんFPGAを使ったレーダーとかならRAMに中心周波数をずらした基準信号を複数持って、並列して比較、みたいなことができるはず。


 目に見えてch2の信号が小さい。これは前にも出ていた症状。たぶん素子が不良なんだと思う。
 ch2とch4だけ位相が逆転してるのは、配線の極性の問題だと思う。素子には極性が書かれていないから、はんだ付けしている時点では極性はランダムになる。極性は2分の1の確率になるから、6ch作って4個が同じ極性というのは、当たらずとも遠からず、という感じ。


 とりあえず、相関結果から位相を検出して、包絡線検波からサイクルを推定して、それを6ch自動で処理して、という処理を書く必要がある。 
 おそらく包絡線検波でも±2程度の誤差になるはず。それでも、前の「全くわからない」よりはマシなんだが。
 1chあたり推定値が5個だと、全体で15625通りの結果が得られる。その中から正しそうな結果を選択しなきゃいけない。そのアルゴリズムも面倒だなぁ。


追記
 パルス圧縮を使うより、連続波をFFT解析して複素数からatan2を通して位相にしたほうが高精度に位相を得られそうな気がする。パルス圧縮でも結局位相を追跡してサイクルを求めなきゃいけないので。
 その場合、コアが84MHzだと82分周して1024.3902kSPSでADCを駆動し、40.015kHzの正弦波を出せば、160chのところにピークが出る。

0 件のコメント:

コメントを投稿