※このページの超音波センサーはバージョンが変わり、現行バージョンはトリガピンと出力ピンが1つになっていますのでご注意下さい。スタンプのIOにトリガ兼出力ピンをつなぎ、トリガを加えた後はIOを入力にしてパルスを待ちます。また、現行版はピンがはんだ付けされた状態で販売されています。
'PINGとBASICスタンププログラム例
'スタンプのP13をPINGのSIGをつないだ場合
LOOP:
PULSOUT 13,5
PULSIN 13,1,b1
DEBUG DEC b1,CR
PAUSE 1000
GOTO LOOP
※プログラミングについてはBASICスタンプ開発キットに付属しているマニュアルを参照願います。
初めに
距離を測定するセンサーにはいろいろなものがありまが、当ページで扱っているものの中には赤外線を使うものと超音波を使うものがあります。今回は超音波送信、受信素子に電子回路が付属した使いやすい超音波測距センサーモジュールを紹介します。
超音波とは
超音波は人間が聞くことが出来ない程高い周波数の音波です。
RH9-101
音は周波数が低いと低い音、高いと高い音になります。人間は通常1万6千Hz程度、耳が良くても2万Hzぐらいまでしか音を聞き取れません。2万Hzを超える周波数の音波が超音波と呼ばれるものです。
超音波は直進、屈折、反射、散乱という性質を持っており、空気中では音速と同じ344m/秒で進みますが媒体によって進むスピードが違い、これを応用したものが医療で使われている超音波スキャンシステムです。骨や内蔵の種類によって超音波が進むスピードが違いますので、超音波を発射して跳ね返ってきた時間でなにがどの距離にあるのかがわかります。また釣りなどに使う魚群探知機も同じ原理で、水中に超音波を発射し、跳ね返ってきた時間で魚までの距離を測ります
。
RH9-102
超音波センサー
圧電素子というものに交流電圧を加えると素子が振動します。圧電素子は固有の振動数を持っており、その周波数と同じ周波数の交流電圧を加えると効率がよく振動をします。2万Hz(20kHz)以上の振動数を持つ圧電素子にスピーカーのようなコーンを取り付けて交流電圧を加えると超音波が発生します。超音波センサーは通常23k〜400kHzのものがあり、一般的には40kHz(数センチ〜数mの測距に使用)のものが多く使用されており、長い距離を測定するには低い周波数、短い距離を正確に測るには高い周波数のものを使用します。
超音波は温度によって伝わり方が変わりますので、温度による補正を行う必要があります。 電子部品店などでは超音波センサー素子の販売をしているところが多くありますが、実際に使用するとなると交流電圧発生回路、帰ってきた超音波の信号を増幅する回路、検波回路、温度補正回路、電源回路などが必要となり自作するにはそれなりの知識が必要となります。
超音波センサーを使ってみる
今回紹介するセンサーは超音波送信、受信素子を駆動する回路が組み込まれ、距離に応じた簡単な波形が出るモジュールです。3cm〜3mまでの距離を正確に測定でき、5Vで動作し、TTLレベル信号出力により、簡単な接続でロボットなどの電子機器に組み込むことができます。
RH9-1
RH9-2
RH9-3
このモジュールにはピンが付いていないので、基板に空いた穴にピンを取り付けます。
RH9-4
RH9-5
ピンを取り付けたのが上の写真です。
下がセンサーのタイミング図です。超音波を発信させるにはトリガー入力に10μ秒以上のパルスを加えると、パルスの立下り時から超音波を発信します。センサーは自分の出した瞬間の超音波を拾わないように少し待ってから出力パルスをHighに立ち上げます。超音波が帰ってきたらこのパルスがLowになるのでこの長さを測ることにより対象物までの距離がわかります。
RH9-103
それでは当ページでおなじみのStampIIマイコンを使って実際にセンサーを使ってみましょう。
RH9-104
実験用にブレッドボードを使用して上図のように接続しました。右の写真ではStampのキャリアボードとブレッドボード用の配線で簡単に接続していますが、Rs232Cケーブルと9V乾電池があればキャリアボードは不要です。(ブレッドボードにStampを挿すという手もあります。)
超音波を発生させるにはトリガー入力(StampのP0ポート)に10μ秒以上のパルスを加える必要がありますので
PULSOUT 0(トリガポート),5
とします。これはP0ポートに5クロック分のパルスを加えるという意味です。StampIIの1クロックは2μ秒なので10μ秒のパルスを加えたことになります。
受信をするには
<BASICSTAMPII、2Eの場合>
RCTIME 1(出力ポート),1,変数
<その他のBASICSTAMPの場合>
PULSIN 1,1,変数
とすると変数に距離に応じた数値が入ります。数値はμ秒単位です。音波は1cm進むのに約29μ秒かかりますのでBASICスタンプIIの場合はこの値を29で割るとcm単位に変換されます。
(クロックが2μ秒、出力値は超音波の往復の時間が出力されるので)
このようにしてStampから簡単な操作で正確な距離を測ることができます。 実際に測定した結果をDEBUG命令でPC上に表示させた結果が次のようになりました。
定規で距離を測りながら測定しました。5cmの場所に箱を置いたところの画面のスクリーンショットが右です。測定間隔を短くして行った結果、0を出力、つまり音波を拾わない時がありました。この後、測定間隔を100mSにしたところ安定して数値を出力するようになりました。
間隔を10cmにしたところ、正確に10が出力されました。
20cm地点でも同様です。
このように平面で硬いものであれば問題なく出力します。それでは、音を吸収しそうなものはどうでしょうか?
トイレットペーパーを10cm地点に置いたところ、出力値は若干大きくなりました。
この後、丸いものや形が凸凹しているものを測定しましたが、おおむね置いた距離と同じぐらいの数値が出ました。硬いものであれば一番凸の部分が結果として出るようです。
手を動かしているところを測定したところ、上のような結果が出ました。写真には写っていませんが、38cmの地点にものがあるので100mS間隔で測定していてもほぼ正確に反応するようです。
2003年4月10日
|