2020年4月14日火曜日

小ネタ:超音波のあれやこれや

 せっかくオシロ買ったのでアナログ的なヤツつくらねば…ッ! ということで、久しぶりに超音波で遊ぼうかなーと思って、ちょっと考え中。
 能動素子使うの面倒くさい病にかかってるのでなるべくCRだけで構成できるように…となると、自然と距離計は除外されて風速計になる。

 手持ちに小型のスピーカーがあったので、15cmの距離で向き合わせて試しに送信。

 超音波スピーカー UT1007-Z325R: センサ一般 秋月電子通商-電子部品・ネット通販

 送信用の素子だけど、超音波素子って共振周波数が高くて狭いただのピエゾ素子なので、送信用は受信用に使っても問題ない。もちろん感度は劣るだろうが。あと、受信用を送信に使うとヤバそう。

 とりあえず3.3Vの差動で6.6Vppくらいの40kHzを入れて、15cm離して受信。



 簡単に画像キャプチャできるの楽でいいなぁ。

 100mVppくらいで受信できてる。思ったより強い。
 今回は50パルス打ってるけど、立ち上がり特性がかなり良好なので、15パルスくらいでも十分な気がする。前に使ってたやつは立ち上がり特性がアホみたいに悪いのでかなり長いパルス出さないと安定しなかった。
 遅延は450usくらい。350m/s * 450us ≒ 150mmなので、まぁまぁ良さそうな感じ。
 ここまで立ち上がり特性が良いと、バーカーコード通せばパルス圧縮できそうな気もするな。起動時の初期化が楽になりそう。

 ADCは12bitだが、上位4bitを読み捨てると16分の1のレンジになる。3.3/16≒0.2Vなので、0.1Vくらいに吊って0.1Vppくらいでスイングするといい感じの振幅になる。DMAで下位1バイトだけ転送すればいいので、後処理が楽。RFFTにそのまま突っ込めたらいいなぁ。
 ADCを2.4MHzで駆動した場合、1024ポイントとすると430us、17パルス、くらい。これをRFFTに通すと400usくらいなので、1chをサンプリング中に別の1chのFFTを処理する、といったこともできそう。0.5usで1ch取れたとして、6chは3msで処理できるので、200Hzくらいで風向風速+気温の7次元を計測できる。実際にはその他の処理も必要だし、残響対策とかも必要だからもうちょっとサンプリングレート落とす必要あるだろうけど、それでも25Hzくらいは行けそうだな。
 40kHzの位相を見るだけなので、FFTを使う必要はないんだよな。1024ポイントくらいならベタ書きで複素数の積和やっても良さそう。そうすればポイント数任意になるのでパルス数の調整とか任意にできるし。

 しかし、市販の超音波風速計ってどんな処理してるんだ。100Hzとか200Hzでサンプリングできて、しかもヘリコプターの乱流とか測るのに使える程度には高速な変動にも耐えて。


 ところで、この素子って手持ちで3個位しかないんだよね。買い足さねば。。。
 ついでにSTM32F3系のNucleoも買いたい。F3のオペアンプはかなり帯域広いので40kHzも通せるはず。超音波距離計とか作って遊べる。トライステートの素子が50個乗ったボード使えばアレイアンテナみたいに収束できるので、距離計として使うのに便利そう。駆動するのめっちゃ大変そうだけど。。。
 超音波素子の駆動用にモータードライバICを使ってる例があるんだけど、どうなんだろうか。モータードライバICに数十kHz入れてもちゃんと出てくるのかな?
 そもそも送受信を1個の開口でやる場合、受信時はネガティブをLowZに、ポジティブをHiZに、みたいな変則的な接続が必要になるから、ドライバICだと厳しい気もする。双方をHiZにした上で差動アンプに突っ込む、って手もありそうだけど。
 GPIOパラレルで使って大電流に耐えさせる、という手もあるけど、3.3V系だと最高でも6.6Vppでしか駆動できないのが難点。モータードライバICなら電源電圧次第でかなりのレベルを流せる。
 ただし、高圧を作っちゃうとADCに直結できないのでアナログ回路マシマシになるんだよなぁ。GPIO8本くらいで駆動するのが丁度いい落とし所かも。パルス圧縮使えば受信感度稼げるから送信出力そこまで高くしなくてもいいし、50エレでアレイ作ればかなり絞れるだろうし。

***

 このオシロ、操作感が微妙に良くないんだよなぁ。エンコーダにクリック感がないのはかなり不便。あと、たまにものすごいモッサリすることがある。
 欲を言えばFFTに複素数入れられると良かったな。スケールは負の周波数も表示できるので、上位機種なら対応しているのかもしれないけど、単純にGUI作成上の都合って気もする。
 まぁ、スムーズで直感的な操作感とか、かゆいところに手の届く便利機能あれこれとか、そういうを求めるならTekのクッソ高いやつ買えばいいって話になるんだろうな。そういうのを省略している分安い、ということで。

 そういえば、USBメモリには画像以外にもバイナリとかCSVも保存できて、メーカーWebページにバイナリのフォーマットもおいてあるんだけど、明らかに整合性がないんだよな。不思議。
 CSVならなんの問題もなく取り出せるけど、ファイル1個300MBくらいになるし、浮動小数点の演算が遅いのか凄まじい時間がかかる。
 たぶんUSBでPCに直結してAPI叩けば色々できるんだろうけど、バイナリのフォーマットが整合してないことを考えると、APIもちゃんと動くかどうか……

0 件のコメント:

コメントを投稿