目次>5章 第2ステップ(色々な実験) (24)超音波を扱う(送受信の動作確認)

超音波を扱う
− 送受信の動作確認 −

更新日2008.6.7

ここでは超音波を使って、物体までの距離を測る実験を行います。
今回は、その手始めとして超音波をPICで扱う方法を説明します。

超音波とは

人間の耳に聞こえる音の高さは、20Hz〜20000Hzと言われています。(耳が良い人で)
超音波は音と全く同じですが、人間の耳で聞こえるよりも高い音を言います。
一般的に、20000Hz以上の音を超音波と言っているようです。

音は空気の振動で伝わり、そのスピードは1秒間に約347m(1気圧で気温が25度Cの場合)です。
そして、硬い物体からは反射してきます。(トンネルの中で大声を出したり、山に登ってヤッホーと叫んだ時の状態)

超音波も全く同じ性質を持っていますので、超音波を出すと壁などの硬い物からは反射して返ってきます。
従って、超音波を送信してから反射音を受信するまでの時間で、音を反射した物体までの距離を知る事ができます。

使用するパーツ

今回の主役は、超音波送信器と超音波受信器です。

音と同じですので、超音波送信器はスピーカ、超音波受信器はマイクの役割を果たします。違いは、扱う周波数が高いと言う点のみです。

左が送信器、右が受信器です。
見た目は同じですが、送信器にはS、受信器にはRの文字が書かれています。

今回使用した超音波送受信器は、40KHzのものです。形状はどのような物でもOKです。

回路図

今回の回路は非常に簡単で超音波送信部のみです。
後のページで、受信部(アンプ)と表示部(LCD)を追加します。

超音波送信器をPICのRA0とRA1に接続し、反転したデータを出力することで強い超音波を発生します。
(送信器に加わる電圧は、PP約10V)

今回は受信部は作らず、受信器の信号はオシロスコープで確認しました。

【参考】
超音波送信器のために、9〜12Vの別電源を用意し、トランジスタやFETで制御するような方法もあります。
また、PICを使わず555などのタイマICで超音波を発生する方法もあります。
ですが、このページのポリシーは、「ハードウェアは極力単純化し、後はソフトウェアで頑張る」ですので、このような簡単な回路にしました。


こちらは、ブレッドボードに組んで実験しているところです。

右下の黒い円柱が超音波送信器

その左の黒い円柱が超音波受信器
こちらはPICには接続していません

超音波送信プログラム

今回使用した超音波送受信器は40KHzのものです。
従って、40KHzをRA0/1に出力する必要があります。

超音波は送信し続けるのでは無く、50ミリ秒毎に20サイクル分送信するようにします。

送信サイクル数は多いほど強くなり、受信感度が上がります。ですが、短い距離を測定しづらくなります。
10,20,40,80サイクルを試した結果、10サイクルではかなり弱く、20サイクル以上は大差ありませんでしたので20サイクルにしました。

超音波送信間隔は、測定する距離の上限を5m程度とし、余裕を見て約9mを音が往復する時間(50ミリ秒)としました。

40KHzの時間
40KHzの1サイクルの時間は、25マイクロ秒、半サイクルの時間は12.5マイクロ秒です。
1秒/40KHz=25マイクロ秒
25マイクロ秒/2=12.5マイクロ秒
従って、12.5マイクロ秒毎にRA0/RA1をON/OFFさせれば40KHzの超音波を送信できます。

この時間は、TMR0割込みを使って作ります。

まず、クロックが20MHzですので、
・1クロックの時間:0.05マイクロ秒(1秒/20MHz)
・1命令の時間:0.2マイクロ秒(1クロックの時間×4)

従って、12.5マイクロ秒の命令数は、63になります。
12.5/0.2=62.5(四捨五入して63)

以上の事から、TMR0割込みの設定は、
・プリスケーラ:なし
・TMR0設定値:256−63+10
 (+10はTMR0割込みのオーバヘッド)

そして、TMR0割込み毎にRA0/RA1をON/OFFさせれば、約40KHzの超音波を発生できます。
この時の注意は、常にRA0とRA1は逆の状態にすると言う点です。
(RA0がONの時はRA1をOFF,RA0がOFFの時はRA1をON)

今回のプログラムはこちらです。

送受信の確認

今回のプログラムでいくつか動作を確認しました。

まず、超音波送信器の両端にかかる電圧を見てみましょう。

このように、最大10Vのパルスになっています。
時間軸:10uS/DIV

次からは、送信器と受信器の波形です。

緑はRA0(送信器)、黄色は受信器の波形です。
緑の波形から、波長が約25マイクロ秒である事が分かります。
一方、受信器(黄色)には非常に高い周波数のノイズがたくさん乗っています。
時間軸:20uS/DIV

時間軸を変えてみましょう。
緑の送信側は、52mS毎に超音波送信している事が分かります。
一方、黄色の受信側は、大きな三角波のようなうねりがあります。これは、商用電源の50Hzがノイズとして乗っているためです。

受信側で注目する点は、ノイズの他に超音波の受信波が見える点です。緑の超音波送信の直後に、受信側にノイズ以外の信号が見えます。
これは、約50cm先の手の平から反射した超音波です。

時間軸:10mS/DIV

下は時間軸を少し拡大しました。
超音波送信(緑)から約3ミリ秒後に反射波を受信(黄)している事が分かります。上と同じで50cm先の手の平からの反射です。

音速は、約347m/秒ですので、1mだと約2.9ミリ秒です。(50cm先の手の平は往復1m)
このように反射波を受信するまでの時間で、反射した物までの距離を測る事ができます。

時間軸:1mS/DIV

今回の実験はここまでです。
超音波を使って物体までの距離を測定できることが分かりました。

超音波受信器には、周波数が低いノイズと非常に高いノイズが乗っていますが、いずれも受信回路(アンプ)で簡単に取り除けますので安心して下さい。

続編では、受信回路(アンプ)と表示回路(LCD)を追加して、測定した距離を表示できるようにします。