はじめに

超音波センサーは、高周波の音を発信し、その音の反響が返ってくるまでの時間を計測します。 センサーの前面には2つの開口部があります。一方の開口部は超音波を送信し、もう一方の開口部は超音波を受信します。このレッスンでは、HC-SR04超音波センサーの仕組みと、マイクロビットでの使用方法を紹介します。

注:このガイドは、HC-SR04 5vを対象としています。

次のパーツが必要になります。

超音波センサー HC-SR04について

HC-SR04の特徴

超音波センサーとは?

超音波センサーとは、音波を利用して物体までの距離を測定することができる装置です。特定の周波数の音波を発信し、その音波が跳ね返ってくるのを待つことで距離を測定します。

音波が発生してから跳ね返ってくるまでの経過時間を記録することで、ソナーセンサーと対象物との距離を算出することができます。

HC-SR04とは?

超音波センサーHC-SR04は、コウモリのようにソナーを使って対象物までの距離を判断します。高精度で安定した測定値が得られる優れた非接触式距離検出を、使いやすいパッケージで提供します。2cmから400cm、1インチから13フィートまで。シャープのレンジファインダーのように、太陽光や黒い素材の影響を受けずに動作します(ただし、布のような音響的に柔らかい素材は検出しにくいことがあります)。超音波の送信機と受信機がセットになっています。

超音波距離計の前面には、2つの金属製の円柱があります。これがトランスデューサです。振動子は機械的な力を電気信号に変換します。超音波距離計の中には、送信用の振動子と受信用の振動子があります。送信トランスデューサは電気信号を超音波パルスに変換し、受信トランスデューサは反射した超音波パルスを再び電気信号に変換します。距離計の背面を見ると、送信トランスデューサの後ろにMAX3232と書かれたICがあるのがわかります。これが送信用振動子を制御するICです。受信トランスデューサの後ろには、LM324と書かれたICがあります。これはクワッドオペアンプで、受信トランスデューサで生成された信号を増幅し、Arduinoに送信するのに十分な強度の信号を生成します。

タイミング・ダイアグラム

HC-SR04のタイミング図を示します。測定を開始するためには、SR04のTrigがHigh (5V)のパルスを10us以上受信しなければならない。これにより、センサーは40kHzの超音波バーストを8サイクル送信し、反射された超音波バーストを待つことになる。

センサーは受信機からの超音波を検出すると,Echoピンをハイ(5V)にし,距離に比例した期間(幅)だけ遅延させます。距離を求めるには,エコー端子の幅(Ton)を測定します。

時間 = エコーパルスの幅、単位はμ秒(マイクロセカンド

また、音速を利用することもできます。音は空気中を約344m/s(1129フィート/s)で伝わることが知られているので、音波が戻ってくるまでの時間に344m(または1129フィート)を掛けて、音波の総往復距離を求めることができます。往復とは、音波がセンサーで検出されるまでに、対象物までの2倍の距離を移動したことを意味します。この距離には、ソナーセンサーから対象物までの「移動」と、対象物から超音波センサーまでの「移動」(音波が対象物で跳ね返った後)が含まれます。対象物までの距離を求めるには、単純に往復の距離を半分にします。

時間変数は、超音波パルスがセンサーを出て、物体に跳ね返って、センサーに戻ってくるまでの時間を表します。

実際には、物体までの距離を測定するだけで、物体からセンサーまでの距離は測定しないので、この時間を半分にします。速度変数は、音が空気中を移動する速度です。空気中の音の速さは、温度や湿度によって変化します。そのため、距離を正確に計算するためには、周囲の温度や湿度を考慮する必要があります。

温度と湿度を考慮した空気中の音速の計算式は以下の通りです。

例えば、温度20℃、湿度50%の場合、音の速さは次のようになります。

超音波センサーで検出できない物体があることを理解しておく必要があります。これは、音波が物体で跳ね返っても、超音波センサーから遠ざかるような形状や位置にある物体があるためです。また、対象物が小さすぎて、音波を十分に反射させてセンサーに戻すことができず、検出できない場合もあります。また、布やカーペットなど、音波を吸収してしまうものもあり、これらはセンサーが正確に検知することができません。これらは、超音波センサーを使用したロボットを設計・プログラミングする際に重要な要素となります。

配線について

超音波モジュールとマイクロビットの接続については、以下のコラムを参照してください

Ultrasonic sensor Micro bit
VCC 5v
GND GND
Trig P0
Echo P1

スクリプトの実行

コードを作ることに慣れていない人でも安心してください。まず、このリンク https://makecode.microbit.org/reference を入力して、マイクロビットブロックのリファレンスを得ることができる。

以下のコードをコピー&ペーストするか、エディタウィンドウの右上にあるオープンアイコンをクリックして、自分のMake Codeエディタで編集してください。

また、コードウィンドウの右下にあるダウンロードボタンをクリックして、このサンプルをダウンロードすることもできます。

ICROPYTHON

注意

エコーパルスを受信すると、超音波センサーは5V定格のm iro :bitの1番ピンに “High “信号を送ります。micro: bitのGPIOピンの電圧は3.3Vなので、上記の方法でも動作しますが、micro :bitのGPIOピンを損傷する可能性があり、これは避けたいことです。マイクロビットを保護するために、2つの抵抗を使って分圧器を作り、echoピンからマイクロビットに送られる電圧を下げることができます。

分圧器の作成

分圧器は、2つの抵抗器(R1とR2)を直列に接続したものです。今回の例では、エコーピンから返ってくる5Vを、マイクロビットに適した3.3Vにしたいと考えています。

どのような抵抗を使用するかは、手持ちの抵抗に大きく依存しますが、詳細は省きますが、経験則として、R2はR1のちょうど2倍の値にする必要があります。 例えば、R1に1kΩの抵抗を使った場合、R2には2kΩの抵抗が必要になります。

構成

抵抗器は直列に接続する必要があります。右の図を参照してください。

クロコダイルクリップを使って上記の構成を実現することは可能ですが、私はブレッドボードとジャンパーワイヤーを使った方がはるかに簡単だと思います。以下の例をご覧ください。

結果

これで、超音波測定器のセットが完成しました。超音波ヘッドを測定したい対象物に向けると、LEDマトリクスに距離が表示されます。