2017年2月21日火曜日

超音波風速計 処理方法を考える


基板を作るにあたり、データ仕様にもいくつかの変更が加えられています。一番大きいものは、位相の正負をプログラム側で処理することと、チャンネルの設定が複雑になったことでしょうか。
 上の画像は横軸が経過時間[秒]、青がサーミスタ温度[℃]、赤がチャンネル2-0の位相[microsec]、緑がチャンネル5-3の位相[microsec]です。

 ブレッドボード上では、チャンネル0で送信したらチャンネル0で受信する、というような組み合わせがありましたが、基板化した際に配線のしやすさを優先し、コネクタ1には送信Ch5と受信Ch0、コネクタ2には送信Ch4と受信Ch1、というような組み合わせになっています。またセンサの配置とコネクタの接続によって対向するチャンネルの組み合わせが決定されます。現在は1セットしかありませんが、送信Ch2は受信Ch0、送信Ch5は受信Ch3、という組み合わせになっています。これはテーブルに保持する必要があるので、より多くのリソースを消費します。とはいえ0-5からなる2組の数字を6対持つだけなので、割合で言えば大したことはありませんが。


 それから、ファームウェアの変更で位相は0-25の範囲を取るようにし、前の位相・次の位相に変化するといきなり値が飛ぶような挙動となりました。上の画像では緑の線が後半に暴れていますが、24あたりにいるのは、24 - 25 = -1が正しい数字ということになります。これは負の値に限りませんが、位相が飛んだときはそれを正しく処理するプログラムが必要となります。
 干渉SAR画像に近いイメージですが、人間なら「たぶん位相n個分ズレてる」というような判断ができますが、プログラムでどうやるか、という問題です。取りうる範囲の位相全てで温度やら風速やらの候補を出し、一番それらしい結果を使う、という感じになるのかもしれませんが、どうやって順位をつけるか、という問題が出てきます。

 風速や温度はゆっくりと変化するわけだから、位相も前回値に応じて判断すればいいじゃないか、という事になりますが、場合によっては前触れ無く風速や気温が変化する可能性もあります。例えば爆風に晒されれば急激に気温や風速が変化します。とはいえ爆風の温度やら風速やらを超音波風速計で測るシチュエーションも思い浮かびませんが。
 他の、もっと現実的なシチュエーションとしては、起動時の位相をどうやって判断するか、という問題になると思います。起動直後は前回値から判断するという処理は不可能でなので、何らかの方法を用いて現在の位相を求める必要があります。

 とりあえず、数日はこの問題にかかりっきりになると思います。とはいえ、位相が1以上変わるような温度変化や風速というのはなかなか模擬できないので、そのあたりが難しいところです。PC上で風速やら気温やら渡したら位相を計算するようなシミュレータを作って、それの出力値で遊ぶ感じになるのかなぁ。

0 件のコメント:

コメントを投稿