2018年12月7日金曜日

超音波風向風速計

 歯車にも飽きてきたので、気分転換に超音波風向風速計のプログラムを作り直してる。

 今回は、試しにパルス圧縮を仕込んでみることにした。

 とりあえず、送信パルスをADCに直結してみた。ADCのサンプリング開始から1msecほど遅れてパルスを送出してる。


 サイドローブが結構出てるが、そもそもメインローブがデカイ。今回はADC直結だけど、超音波素子通したらもっと特性悪化するんだろうなぁ。

 横軸が時間[msec]だが、ちゃんと1msec遅延したところにピークがある。

 CMSIS LibのFFTライブラリを相関に使っているが、これは4096ポイントまでしかFFTに通せない。ということで、サンプリングレートが結構カツカツな気がする。サンプリングレートを上げないと位相精度が得られないが、サンプリングレートを上げるとパルス幅を短くしなきゃいけない。手持ちの超音波素子はダンパーが強烈なので、かなり長いパルスを入れてやらないと波形が出てこない。

 ムラタの車載用素子だとテスト回路の仕様が8パルスなので、かなり応答性がいいんだろう。もっとも、58.5±1.5kHzで15パルスとすると、パルス圧縮比0.77あたりになってしまうので、パルス圧縮には使えないだろうけど。


 パルスの送信はGPIOから行い、TIM8のCC1のDMAでGPIOx->BSRRを書き換えている。またTIM8のUPDATEのDMAでTIM8のARRを書き換えることにより、リニアチャープ信号を作っている。
 ARRの配列をうまく処理すればノンリニアチャープも送信できるけど、面倒だし、ノンリニアチャープのパラメータが理解できてないので。


 とりあえず、もう少しリファクタリングして、実際に素子を接続してみて、か。
 素子を通してもちゃんと相関できるかな?

 1回送信するのに今の所10msecくらいかかってるし、信号処理でも10msecくらいかかるので、少なくとも1chのサンプリングに20msec程度かかる計算。
 1組6chなので1組を計測するのに150msecくらいかかる。ちょっと時間かかり過ぎじゃないかなーって気がするな。

0 件のコメント:

コメントを投稿