AVRを使った超音波距離計の製作
超音波距離計を製作します。基本的な動作は、測定ボタンを押したときに超音波を短時間送信して反射して帰ってくるまでの時間を測定し、距離換算して表示するというものです。
電源には乾電池を使うことにします。ケースへの収容も考えて単3電池2本で約3Vの電圧供給とします。AVRはクロックを落とせば使えないことはないのですが、使用するオペアンプRC4558や超音波センサー送信部の駆動電圧を考えると5V程度までは、昇圧させたほうが良さそうです。
5Vが簡単に作れるDC-DCコンバーターは、いろいろテストしていますが、今回の用途では、7セグメントLEDの点灯時に100mAを越える電流が必要となる可能性があるので、DC-DCコンバーター3で実験したMAX751を使ったものを使用します。MAX751は、データシートとおり電池2本の入力電圧時に+5Vで100mA以上の電流が得られることを確認済みです。

秋月電子の大きいユニバーサル基板を使うことにして実装図をPCBEで作成しました。

なお、回路図では都合よく配線できても、実装ではジャンパーが必要となるなど配線のとりまわしが厳しくなります。今回も7セグメントLEDへの配線は、実装のやりやすさを優先して配線し、回路図やブレットボードでのテスト時と異なる部分は、ソフトウェア修正で対応します。
超音波センサーは、送信部と受信部双方が上下左右で並行になるように基板上に直接半田付けしました。

安定化電源から3V程度を供給して、7セグメントLEDの点灯が正常になるようにソフトウェア修正を行います。また、DC-DCコンバーターMAX751を使った昇圧回路の試験をかねて供給電圧を下げてみましたが、2.3Vまでは正常に動作するようです。

ケースへの組み込みは、あとあと考えるとして、電源スイッチと計測スイッチを取り付けて、乾電池を接続しました。

動作時の消費電流は、7セグメントLED点灯時が約100mA、非点灯時が約60mAとなりました。電池を長持ちさせるため、7セグメントLEDは、計測後の一定期間点灯して消えるようにしていますが、非点灯時の消費電流がちょっと大きいと思います。ソフトウェア修正で減らせないか、あとで調整してみようと思います。MAX751の出力電圧は、5.03Vとなっています。7セグメントLED点灯時もほとんど変動しないことから出力容量的には問題なさそうです。
机から天井までの距離を実際に計測したときの波形です。上が送信波で下が受信デコード出力です。受信デコードは、”L”(ロー)が、信号検知を示します。

これを見ると送信信号をバーストした直後(480μs)に、回り込みによる誤検出があるようです。ブレットボードでのテスト時には、超音波センサーの送受信部の間隔(センサー中心間)を約40mmにして回り込みがなくなることを確認したので、基板実装時には間隔が約38mmとしたのですが、残念ながら回り込みがあるようです。がっちりと固定したことによる伝搬の影響が出ているのかもしれません。特に硬いガラスエポキシ基板を使用したことが裏めに出ている可能性があります。
超音波センサーの間隔を広げる余裕が若干ありますが、とりあえずは、ソフトウェアで回り込みの信号検知を無視するように対策しました。
完成前ですが、ソフトウェアのチェックをかねて実測してみました。現状では、回り込みの信号による影響が1.5ms程度と長いため、約50cm以下の計測ができません。
計測値は、ばらつくため数回計測しています。なお、測定値は、基板の長さ10cmを加算した値を表示するようにしてあります。
50cmの計測です。たまに51cmとなりますが、ほとんどが正確です。

100cmの計測です。99cm~101cmと±1cmのバラツキがあります。

300cmの計測です。298cm~302cmの範囲で計測できます。最頻値は、299cmとなります。

400cmの計測です。399cm~402cmの範囲で満遍なくバラツキます。

板張りの廊下で計測しましたが、4mの距離では、きちんとまっすぐ対象物に向けないと横の壁からの反射の影響をうけて、とんでもない値が出ることがあります。また、基板を床と完全に平行にして計測すると床面からの反射の影響がたまにあるようです。ほんの少し(0.5mm程度)、前部をもちあげて斜め上を計測するようにすると安定して計測できました。(当然距離は不正確になりますが・・・・)

なお、この場所でテストする前は、反対の塗り壁に向けてテストをしていたのですが、2.3m以上はまったく測定できませんでした。おそらく塗り壁に使われている珪藻土が超音波の反射係数が少ないためだと思われます。
感覚として、距離に応じて測定誤差が大きくなるような傾向はないようです。ソフトウェアを調整すればもう少し正確な計測ができそうです。また、受信波形をモニターしてみないとわかりませんが、測定対象物が平面である程度の面積があれば、もう少し長い距離まで計測できるかもしれません。
追記 2008-05-19
超音波の回りこみによる誤検出のため、近距離が測定できないのを何とかすべくあれこれやってみました。まず、超音波センサーの送受信部の間隔を広くしてみました。

多少の効果があるようです。これまで1.5ms~2.0ms近くあった回り込みによる誤検出時間が約1.3msと短くなりました。ただ、これでも約44cm以下は測定できません。

送信部の駆動電圧を下げるのは難しいので、単純に送信時間を短くしてみます。これまでは約0.5ms(500μs)だったのを0.35ms(350μs)まで短くしたら回りこみによる誤検出がまったくなくなりました。

30cmの近距離も正常に測定できます。

ただ、送信時間を短くしたところ、これまで4m以上が測定できていたのが、3mの測定に失敗することが発生するようになりました。遠距離を測定するには、ある程度の送信時間が必要なようです。AVRのポートに余裕があるので、切替スイッチを設けて近距離と遠距離のモードを切り替えてみるのも面白そうです。
最終的には、これまでとおり、切替なしで送信時間を0.5ms(500μs)として、50cm以下の近距離の測定を犠牲にして4m以上の遠距離測定が出来るようにしました。
とりあえず完成としてケースに入れます。
ケースは、秋月電子で扱っているポリカーボネートケース大を使用しました。

{{image DSC01902.jpg,,alt:テスト計測環境,size:50%}}