目次PIC回路集超音波距離計


超音波距離測定器 回路説明


受信回路
受信回路はPICを使用しない「超音波距離測定器」とほぼ同じ回路を使いました。
    信号増幅回路

受信用センサーで受けた超音波信号はオペアンプ増幅器を2段使用して1000倍(60dB)の電圧に増幅されます。1段目で100倍(40dB)、2段目で10倍(20dB)の増幅をしています。
dB(デシベル)については「対数表」を参照して下さい。
オペアンプは通常プラスとマイナスの2電源を使用しますが、今回の回路では+9Vの単電源で動作をさせています。そのため、オペアンプのプラス入力に電源電圧の半分(4.5V)の電圧をバイアス電圧として加え、増幅する交流信号の中心電圧を4.5Vにしています。オペアンプを負帰還で使用した場合、プラス入力端子の電圧とマイナス入力端子の電圧がほぼ等しくなります。ですから、このバイアス電圧により、交流信号のプラス側とマイナス側を均等に増幅することができます。このバイアス電圧を加えないと交流信号に歪みが生じます。この方法は2電源用のオペアンプを単電源で動作させ、交流信号の増幅をする場合に採られる方法です。
オペアンプの動作については「三角波発振器 動作説明」を参照して下さい。


    検波回路

受信した超音波信号を検出するために検波を行います。ショットキー・バリア・ダイオードを使用した半波整流回路です。ダイオードの後のコンデンサで平滑することにより、検出信号の信号レベルに沿った直流電圧を得ることができます。ショットキー・バリア・ダイオードを使用するのは高周波特性が良いからです。
ショットキー・バリア・ダイオードについては「ダイオード」を参照して下さい。



    信号検出回路

測定対象物で跳ね返ってきた超音波の検出を行う回路です。先の検波回路の出力を電圧比較器(コンパレータ)で検出します。今回の回路では電圧比較器の代わりに単電源のオペアンプを使用しています。オペアンプはプラス入力とマイナス入力の差を増幅して出力します。
通常オペアンプは負帰還をかけて使用しますが、負帰還をさせない場合、少しの入力電圧の差でも出力は飽和状態になります。オペアンプの増幅率は種類にもよりますが数万倍の増幅率があります。ですから、プラス入力がマイナス入力より少しでも高くなると、その差は数万倍で増幅され出力はほとんど電源電圧と同じ位になります。(飽和状態です)逆に、プラス入力がマイナス入力より少しでも低くなると、その差は数万倍で増幅され出力はほとんど0Vになります。(OFF状態です)この動作は電圧比較器の動作そのものです。ただ、基本的に電圧比較器とオペアンプは内部の回路が違うので、電圧比較器をオペアンプに使うことはできません。
今回の回路では検波回路の出力を信号検出回路のプラス入力に接続し、マイナス入力の電圧は一定にしています。
Vrf= ( Rb x Vcc )/( Ra + Rb )

= ( 47 x 9V )/( 1 + 47 )

= 0.4V

ですから、整流した超音波信号が0.4V以上になると信号検出回路の出力はHレベル(ほぼ+9V)になります。
この出力は後段の信号保持回路の入力(TTL:0V〜5V)に合わせるために抵抗器で分圧しています。



    信号保持回路


超音波を送出してから測定対象物で反射して帰ってきた信号を保持するための回路です。SR(セット・リセット)フリップフロップを使用しています。SR−FFの詳細は「Dタイプ フリップ・フロップの動作」を参照して下さい。
送信パルスの回り込みによる誤検出を防止するために送信パルスを出してから一定時間(約1.5ミリ秒)検出回路が動作しないようにしています。この状態はPICのソフトで制御します。

PICのキャプチャ機能を使う場合この回路は必ずしも必要ありません。一瞬でもキャプチャ入力が変化すればキャプチャ動作をします。私がこの回路を使っているのは反射信号検出時間(約65ミリ秒)以内に信号を検出したかどうかを確認するためです。次の超音波パルスを出すときにこの回路の出力をチェックし、Lレベルであれば反射信号は検出できなかったとしてエラー距離表示させています。



送信回路


インバータを使用して超音波センサーのドライブを行っています。2つのインバータを並列に接続して出力電力に余裕を持たせています。
センサーのプラス端子とマイナス端子に加える電圧の位相は180度ずらしてあります。また、コンデンサにより直流カットをしているので、センサーにはインバータ出力の約2倍の電圧が加わることになり、センサーからの超音波出力を高めています。

このドライブ回路は+9Vの電源で動作させています。PICの動作電圧(+5V)で制御させるためにトランジスタにより電圧変換しています。インバータにはC-MOS回路を使っているのでON/OFFが比較的高速に行えます。




7セグメントLED表示回路


7セグメントLEDを3個使用して3桁の表示をしています。LEDの点灯はPICのソフトで1桁づつ順番に表示しています。
今回の回路ではPICの端子がLレベルの時に点灯させるようにしました。ですから、LEDとしてはアノードコモンタイプを使用しています。アノードコモンタイプというのはLEDのプラス側(アノード)が内部で接続されているタイプで、点灯させるセグメントは該当するカソードを接地(Lレベル)することにより行います。
7セグメントLEDには他にカソードコモンタイプがありますので、購入される際には注意して下さい。




温度補正電圧発生回路

空気中を音波が伝搬する速度は温度により変化します。0℃では331.5m/秒。40℃では355.5m/秒です。
伝搬速度の詳細は「空中での音波伝搬速度」を参照して下さい。
今回の測定器ではキャプチャ機能で計測した伝搬時間を距離換算値で割ることにより距離換算をしています。
例えば0℃の環境で1mの距離の場合、音波が往復する時間は2/331.5m/秒=0.006033秒=6.033ミリ秒です。キャプチャ機能では1マイクロ秒でカウンタをカウントしているので、カウンターの内容は6033になります。
これを距離(cm)に換算するのには60で割ります。6033/60=100.55で小数点以下は切り捨てられます。(誤差)
この換算値(60)は温度によって決まり、計測する距離には関係しません。9mの場合にはカウンタは54298で60で割ると904.9です。距離が長くなると換算誤差が大きくなります。これは小数点以下の換算ができないのでしかたがありません。40℃の場合は2/355.5m/秒=5625マイクロ秒で換算値は56です。ですから、周囲温度により換算値を変更して計測する必要があります。

今回の測定器では可変抵抗器で電圧を変化させ、A/D変換させて換算値として使っています。A/D変換では入力電圧を10ビットのデジタルデータに変換します。今回は10ビットのうち上位3ビットを使っています。0Vから5Vの入力をA/D変換すると0から7までの値が得られます。これに54を加えて換算値として使っています。
ですから、換算値は54から61まで変化させることができます。




発振器

4MHzのレゾネータを使用しています。
4MHzとしたのはタイマーのカウント時間の関係です。4MHzのクロックを使用するとカウンターのカウントアップ時間は1カウント当たり1マイクロ秒です。今回キャプチャで使用するタイマー1は16ビットの構成で最大65535カウントなので、最大65.535ミリ秒のカウントができます。
空気中の音が伝搬する速度は20℃の場合343m/秒で10mの距離を往復する時間は20/343m/秒=0.0583秒(58.3ミリ秒)なので、今回の測定器にはちょうど良い値です。





電源回路

3端子レギュレータを使用して+12Vの電源から+5Vと+9Vの電圧を作っています。
+9Vは送信回路用と受信回路用で、電流も多くないので100mAタイプを使用しています。
他の回路は+5Vを使用しています。LEDの点灯もPICで制御するために+5Vの電圧で制御しています。LEDはセグメント当たり約10mAの電流が流れ、すべてのセグメント(8つ)が点灯すると約80mAになります。
他のICの消費電流はそれほど多くはないので100mAタイプでも大丈夫と思いますが、安全のために1Aタイプを使用しました。