超音波を利用した距離測定( TOF / Time of Flight )センサを使用して障害物までの距離を測定する機能です。標準でロボットの頭部に超音波測距センサを搭載しています。
◀ この記事の前に: サーボモータ
▶ この記事の次に: 発音・発声(DAC出力)
測定原理
距離の測定原理は以下のとおりです。
センサから超音波を発信して面に届くと超音波を反射します。反射した超音波を受信して発信から受信までの時間は距離に比例します。その時間を測定することにより距離を測定することができます。
詳しくは以下が参考になります。( 丁寧で分かりやすい説明です。)
TDKのコアテクノロジー Vol.8
超音波センサと「製品設計技術」 / TDK株式会社
https://www.tdk.com/ja/tech-mag/core-technologies/08
センサ
超音波測距センサは HC-SR04を使用しています。仕様は以下のとおりです。
構 成
回路の構成は以下のとおりです。
センサは超音波を発信するトリガ信号を Peripheral MCUからセンサに送ります。( UTOF-TRIG )
反射した超音波を受信した信号(エコー信号)はセンサから Peripheral MCUに届きます。( UTOF-ECHO )
超音波の発信から受信までの時間を測定します。この測定は Peripheral MCU( ESP32 )の RMT( Remote Control Module )の使用を想定しています。プログラムに関してはこちらをご覧ください。●
回路図は以下のとおりです。
センサは 5Vに対応するものと、3.3V ~ 5V に対応するものがあります。そのため 5Vに対応することを前提としています。
センサの電源はサーボモータの電源と同じです。
サーボモータの電源は省電力制御の対象としているため、使用しない場合は電源を落とすことができます。他に発音発声用アンプの電源も 5Vですが、ノイズの影響を避けること、サーボモータの動作時に測距することが多いことを考慮してサーボモータ用の電源にしています。
センサの信号線も 5V系になります。Peripheral MCUは 3.3V系ですので、電圧の相違に配慮する必要があります。トリガ信号はTTL( Transistor-Transistor Logic )レベルです。TTLの入出力レベル( High / Lowの電圧 )は以下のとおりです。
- High レベル入力電圧: 2.0V以上
- Low レベル入力電圧: 0.8V以下
- High レベル出力電圧: 2.4V以上
- Low レベル出力電圧: 0.4V以下
トリガ信号線を MCUが Highにした場合( 3.3V )でも、Highレベル入力電圧を超えますので問題はありません。
エコー信号はセンサの出力となるため High時は 5Vとなり、MCUの入力電圧( 3.3V)を超えます。そのため抵抗( R76, R77 )で分圧して 3.3V以下にしています。
オプション追加時の考慮
オプションで頭部ボードを追加することができます。
センサの超音波発信のための信号線( Peripheral MCU の GPIO17 )のピンは、頭部ボード接続時の省電力制御信号( H-EN-P )と同じです。オプションで頭部ボードを追加した場合は、頭部ボードに搭載している測距センサ( レーザー測距センサ )を使用するため、この超音波測距センサは使用しません。そのためいずれかの使用となるため問題はありません。
オプションの頭部ボードは、コネクタ CN6に接続します。 CN6の使用時には CN7は使用しません。そのため、 IO7はどちらか片方での使用となります。
CN6 に接続している Mで始まる名称の信号線は MCU間の通信で使用している M-Linkです。
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- オーディオ・アンプ: LM386 / Texas Instruments / メーカー / Datasheet
- ゾーベルネットワーク: アンプの出力に接続する抵抗とコンデンサの説明 / Wikipedia
- LM386 を使ったオーディオアンプ: 回路構成と定数の説明 / 薮 哲郎 のホームページ