1/15(木)『Yokohama Innovation Showcase』(@みなとみらい) に出展します☆彡
Raspberry Pi / Arduino理論

New!! とある超音波センサーの相互干渉(クロストーク)

AI要約

超音波センサーを複数使った測距で、存在しない物体を検出するゴースト現象に遭遇しました。原因はセンサー間のクロストーク。現象を数式で明らかにし、走査順とインターバル調整で解決まで持ち込みます。

やること

くだらないタイトルで本当にすみません。反省していません。

このシリーズではいくつかの測距センサーを試してみました。コストと簡便さから超音波センサーに決め、いよいよ本番の実装をしたのですが、なんと存在しないものを検出するゴースト現象が起きてしまいます。

今回はその経緯と解決方法を紹介します。

実装しますた

超音波センサー「US-015」を採用しました。こちらの記事でやっています。

車体の側面に合計6個取り付け、Arduinoで距離情報を取得します。

丁寧にQIコネクタをカッチャンしました。センサーが壊れても交換が簡単です。

3Dプリントしたケースに入れます。防水性、ナシ!

両面テープで車体に貼り、ケーブルは後ろのトランクまで引いています。目立たなくていい感じです。

車の右前から順に1, 2, 3、左に移って4, 5,6 と順番に取得しています。クロストーク(相互干渉)を防ぐために各センサーの間にインターバル2ミリ秒を挟んであります。

6つの値がきちんと取得できていますね。「遠すぎて検出なし」は5.0mを出力するようにしています。

めでたしめでたし(一級フラグ建築士)

ゴースト現象発生

人生はそううまく行かないもので ( ˘ω˘ ; )

センサーから0.4m以内に物体があったらブザーが鳴るようにしていたのですが、近くに何もない場所でビッ…ビッ…と鳴るのです。(解決を急いでいたので動画を撮っていません!)

Arduinoのシリアルモニタを確認すると、

5.0 5.0 5.0 5.0 5.0 5.0
5.0 5.0 5.0 5.0 5.0 5.0
5.0 5.0 5.0 5.0 5.0 5.0
5.0 0.351 5.0 5.0 5.0 5.0
5.0 0.386 5.0 5.0 5.0 5.0
5.0 5.0 5.0 5.0 5.0 5.0
5.0 5.0 5.0 5.0 5.0 5.0
5.0 0.399 0.441 5.0 5.0 5.0
5.0 5.0 5.0 5.0 5.0 5.0

2,3番目のセンサーがたまに何かを検出しているのです。

さらに詳しく分析するとこれは2,3,5,6番目のセンサーにしか起こらないことがわかりました。

おーん。値を取得する順番をもう一度見てみると・・・

あーこれね。1番目の音波が2番目に入ってるのね~

クロストークの理論

ということで、センサーから「実際の壁」までの距離を L1 [m] とします。検出した「架空の壁」までの距離を L2 [m] とします。この2つの関係を求めてみます。

センサー1から出た音がセンサー2に入るまでの飛行時間 T1 [s] は、音速 340 [m/s] を使って

    $$ T_1 = \frac{2 \times L_1}{340} $$

センサー1とセンサー2の発射時刻の差 Tdiff [s] は、検出タイムアウト 8 [ms] とインターバル 2 [ms] がかかることから

    $$ T_{diff} = \frac{8 + 2}{1000} $$

架空の壁における音の飛行時間 T2 [s] は、

    $$ T_2 = T_1 - T_{diff} $$

よって架空の壁との距離 L2 [m] は、

    $$ L_2 = \frac{T_2 \times 340}{2} = L_1 - 1.7 $$

となり、「実際の壁」よりも1.7m近い場所に「架空の壁」を検出することがわかりました。

そうなのです。問題となった場所はたしかに壁から2mくらい離れた場所でした。

解決方法

そこで、インターバル時間を長くするためにセンサーの走査順を変更。

さらに、プログラム上のインターバル時間を 2 [ms] から 5 [ms] に増やしました。

これにより Tdiff [s] は、

    $$ T_{diff} = \frac{2 \times (8 + 5)}{1000} $$

となり、架空の壁との距離 L2 [m] は

    $$ L_2 = L_1 - 4.42 $$

となりました。

このセンサーの検出限界は約4mのため、音波が減衰してクロストークの検出はなくなりました。理論の勝利ですね!

おわりに

百聞は一見にしかず。教科書でやったような問題が現実に起きると楽しく解決できますね。

リアクションのお願い

「参考になった!」「刺激された!」と思ったらぜひリアクションをしましょう。エンジニアの世界はGive and Takeによって成り立っています。これからも無料で良質な情報にアクセスできるよう、Giveする人への感謝をリアクションで示しましょう!

この記事をシェアする

自身のブログ等で使用する場合は引用を忘れずに!

また、寄付も受け付けています。コーヒー1杯でとても喜びます(*˘︶˘*)

 Amazonでギフト券(アマギフ)を贈る

こちらのリンク から金額を指定してお贈りください。(デフォルトで10000円になっているのでご変更ください)

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 Amazonで食事券(すかいらーく優待券)を贈る

500円 1000円 2000円 5000円 からお贈りください。

配送:Eメール
受取人:staffあっとvigne-cla.com
贈り主:あなたのお名前やニックネーム
メッセージ:◯◯の記事が参考になりました。など

のようにご入力ください。見返りはありませんのでご了承ください。

 その他、ギフト券やクーポン券をメールで贈る

デジタルのギフト券/クーポン券はメールアドレス(staffあっとvigne-cla.com)までお送りください。受領の返信をいたします。
紙のギフト券/クーポン券は 「郵便物はこちらへ」の住所 まで送付してください。名刺やメールアドレスを同封していただければ受領の連絡をいたします。
余った株主優待券等の処理におすすめです。
いずれも見返りはありませんのでご了承ください。

不明点はSNSでお気軽にご連絡ください

ビネクラのTwitter・Youtubeでコメントをください!


Slack・Discordの場合はこちらの公開グループに参加してShoya YasudaまでDMをください!


※当ブログに関することは何でもご相談・ご依頼可能です。

この記事を書いた人
Yasuda

博士(理学)。専門は免疫細胞、数理モデル、シミュレーション。米国、中国で研究に携わった。遺伝的アルゴリズム信者。物価上昇のため半額弁当とともに絶滅寸前。

タイトルとURLをコピーしました