2018年2月3日土曜日

DAC/ADC

 STM32F4のDACとADCをPCから制御するファームウェアを作って、いろいろ波形をだして遊んでいる。
 仕様としては、DACmax2Msps、ADCmax1.4Msps、DAC1.4Msps/ADC1.4Msps時10msec分のバッファがあり、双方とも2chを同時に入出力できる。
 DAC2Msps/ADC1.4Mspsだと正常に動作しない。おそらくDMA転送能力の問題。

 マイコンの仕様ではADCを最大2.4Mspsで動作させることができるようだが、コアクロック168MHzでは1.4Mspsが最大。2.4Mspsで使いたい場合はコアを144MHzにする必要がある。また3個のADCを順番に使うことにより、最大7.2Mspsでサンプリングすることができる。
 ADC変換はピークホールド時間+二分探索の分の時間がかかり、ピークホールドは最小3サイクル、二分探索は12bitで12サイクルが必要になる。168MHzではADCクロックは21MHzなので、21/(3cycle+12bit)で1.4Mspsが最大となる。144MHzの場合はADCクロックが36MHzで2.4Mspsとなる。
 STM32F4ではADC6bitモードがあるので、6bitで使うなら36/(3cycle+6bit)で4Mspsまで設定できて、トリプルADCで12Mspsまでサンプリングできて… となる気がするけど、実際はできるんだろうか? データシートには「up to 24 channels and 7.2 MSPS in triple interleaved mode」としか書いてない。12Mspsでサンプリングできるならそうアピールしそうなものなので、できないのかも。

 昔計算したところによると、超音波風速計で0.05m/sの分解能を得るには20Mspsが必要らしい。仮に12Mspsでサンプリングできるとしたら、5個くらいの位相を平均すれば20Mspsくらいの分解能は得られそう。実際には数百波くらいを計測できるから、かなり高分解能になりそうな気がする。


 今遊んでるPC側のソフトは、DACの波形を生成したり、ADCの波形をFFTに通したり、といった機能を作っている。FIRとかを追加すれば、パルス圧縮とかも試せそうな気がする。
 試しにパルス繰り返しを試してみたけど、こっちはあんまりうまく動いてない。
 パルス繰り返しはドップラーレーダーに有効な機能な気がするし、パルス圧縮もレーダー用途で、正弦波1周期未満の分解能を得るモノでは無い気がする。ただ、パルス圧縮が思ってる通りの機能なら、初期捕捉の正確性が向上しそうな気がするので、ちょっと試してみたい。

 「パルス繰り返し周波数」は軍用レーダーでよく使われる用語だけど、医療用のエコー検査機器でも使われるらしい。軍用のドップラーレーダーは静止目標(地上物等)を除外するためのものだが、医療用エコーでは静止物(体組織)を除外して、移動物(赤血球等)を見るための機能らしい。エコー検査の資料は探せば出てくるので、パルス繰り返し周波数の能力を知りたい方はそちらをどうぞ~。たぶん軍用レーダーの資料を探すより早いはず。


 超音波風速計を作るなら、13倍程度の増幅が必要。この程度ならオペアンプ1段で余裕だろうから、2回路入りの高速オペアンプを3個で足りるはず。ただ超音波風速計は個人的にあまりおもしろい題材じゃないので、優先度は低め。

 モノパルス・ドップラー・超音波レーダーとか作りたい。コレを2軸ジンバルに乗せて、電動ガンも乗せれば、サバゲで陣地の自動防衛ができる。接近目標(=敵)は攻撃して、静止目標は検出しない。HITしたら遠ざかる方向に歩く。
 コレの攻略をするなら、首振りを見て、自分の方を向いたら動くのをやめる、という感じか。意外と簡単に接近できそう。
 オープンループだけど、雰囲気としてはLPWSに近い。電動ガンのミニガンとか使いたいけど、とりあえずマルイのミニ電動ガンとかかなぁ。それでもかなりデカいジンバルが必要な気がする。


 地上物体はグランドクラッターが強いので、静止目標を迎撃するにはかなりの分解能が必要になる。ゲームとかでは自動迎撃ターレットが有るけど、あれは多分FLIRとか使っているんであろう。であるなら、その辺の窓ガラスを外して手に持てば、自動ターレットに迎撃されずに近づくことができるはず。ドップラーレーダーとFLIRを併用してたら無理だけどね。


 超音波で測距するなら40dB前後くらいの増幅が必要。オペアンプ2-3段くらい必要になる。モノパルスだと受信が4chくらい必要になるので、オペアンプ8-12回路くらいか。AGC回路も必要になるので、ちょっと面倒な感じ。FFTにしろFIRにしろ、かなりの計算能力も必要なので、STM32F4で処理できるか怪しい所。

 最近はFPGAでハードウェアFFTを組むのがトレンドらしい(?)。ドップラーレーダー的なモノを作るならFPGAを使うべきなんだろうなぁ。
 電光掲示板のときも思ったけど、ハードウェアでガリガリやりたい、と思うことがある。ただ、なんとなくFPGAは敷居が高い印象。値段も高い印象。マイコンと比べて1-2桁くらい高価なイメージ。あと昔FPGA基板が付属した入門本を買ったら、「転送ケーブル買ってね(^^」(くっそ高い)、ということが有って、ちょっとトラウマ気味。


 とりあえず、しばらく超音波で遊んで見る予定。


追記
 パルス圧縮、全く違う理解をしてるっぽいゾ。
 PRFは参考にしたPDFに近い特性が出てきた。けど超音波素子に1フェーズしか入れてないのに50フェーズくらい受信する。ものすごい衰退が遅い。この素子でパルス繰り返し周波数云々の機能は無理っぽいなぁ。


追記

 1.4MspsのDAC(右)とADC(左)のFFT結果。
 40kHzの正弦波を1msecの長さで送信。
 128ポイントなのでものすごい荒い。パルス圧縮ではなく、固定周波数。
 DACからおよそ0.5msec遅れてADCにも波形が出てる。センサ間は15cmなので、音速では440usほど。だいたい計算通りか。
 ADCはなかなか発振が止まらなくて、だいぶ尾を引いてる感じ。パルス圧縮は、この収束の遅さがかなり厳しそう。
 この超音波素子でパルス圧縮は難しいかもしれない。少なくとも、受信素子はもっと応答性の良いものを使う必要がありそう。

0 件のコメント:

コメントを投稿