歯車にも飽きてきたので、気分転換に超音波風向風速計のプログラムを作り直してる。
今回は、試しにパルス圧縮を仕込んでみることにした。
とりあえず、送信パルスを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 件のコメント:
コメントを投稿