超音波センサが複数ある場合の干渉についての懸念を書いてきました。この懸念は本物かしら?と調べてみると、超音波センサ界ではよく知られている問題らしく、クロストーク、混信と呼ばれていました。この問題はやはり現実のようです。
この問題を避けるために、てっとり速く超音波バーストのビットパタンを変えてそれをトランスデューサの識別に使えないか、と考えて行ったのが昨日の実験で、結果を見ると時間方向に信号はじわっとにじむようなので、この方法は厳しいと思われます。次にぱっと思いつく方法は
- 同時にはセンサを使わない。一度に一センサ、順番に使う
- 完全に同時にセンサを使う。複数のトランスデューサから一斉にバーストを発生する
第一の方法について、例えば HC-SR04 を使った場合、バースト発生の最小間隔は 200ms と書かれており、これを守った場合一秒間にできる測定は5回のみ。もう少し頻繁な測定がしたいので、この方法は比較的簡単に実装できそうですが僕の考えている用途には使えなさそうです。
第二の方法も synchronous operation という現実に行われている手法のようです。いくつか記事がありましたが、Omron のこの解説が一番わかりやすかったです。しかしこの方法は、複数のセンサが単一の対象物に向けて同じ方向に超音波を出す場合のみ使えるようで 、今考えている用途では対象物は複数でセンサの向きもまちまちなので使えません。
やっぱりトランスデューサの識別だよなあ。バーストを順次行うというのはいわばタイムシェアリング、つまり TDMA、性能を上げるには CDMA みたいに信号を混在しても混信しない技術なんか使えないの?と思ったら、一番乗りなんてこの広い世界ではそうそうないことで、もう先人がいるようです。
https://www.mdpi.com/1424-8220/22/12/4462
これは面白そうです。CDMA については非常に大枠に、携帯電話回線において電波帯域を効率的に利用するために、ある一定周波数帯域内に信号を分散させ、重畳させても混信しない技術、ということしか知りません。その大枠からするとどうも周波数特性がピーキーっぽい超音波トランシーバでうまく使えるのかとか、そもそも具体的にどんな技術なのか全然知りません。技術を勉強しつつ論文も読み進めてみたいと思います。