エンジニア風味 (Engineer-taste)

電子系エンジニアのメモ帳

超音波距離センサHC-SR04改善版の解析

ちょっと訳ありで、超音波距離センサHC-SR04を入手しようとしたら、過去に不具合があったようです。
旧タイプの青い基板のうち、新しいバージョンで回路が気絶して、距離が測れなくなるとか。

f:id:engineer-paju:20191102213558p:plain
旧基板の表面裏面
表面(センサ側)の型番のシルクの位置とか、取付穴の数で見分けるようです。
ところで、今回、スイッチサイエンスさんから入手した基板は、これらとは別の赤い基板でした。
f:id:engineer-paju:20191102213859p:plain
旧基板と新基板
部品面を見ると、明らかに構成が異なります。
青い基板では、ICがオペアンプ(LM234)、送信用に使っているMAX3232、よくわからない中国製マイコン部品と、センサ側の面に発振子がついていたのが、赤い基板ではオペアンプはそのままですが、MAX3232はなくなって、よくわからない8ピンのICが載っています。センサ側の面にあった発振子はなくなっています。
赤い基板について、テスタをルーペを使って、回路図を起こしてみました。下のようになります。
f:id:engineer-paju:20191102215453p:plain
新基板の回路図
どうやら、回路図右側の8ピンのIC(IC1)がシーケンス制御(クロック内蔵)と送信パルス発生を担当しているようです。
動作解析をおこなったので、書いておきます。
まず、電源と8ピンのIC部分、回路の拡大図です。
f:id:engineer-paju:20191102221155p:plain
送信部回路図
4ピンコネクタから入った5V電源は、簡単なRCフィルタを通り、基板全体の電源となります(ここでは+5VAとしました)。
4ピンコネクタの2ピンに外部から供給される送信トリガ信号(TRIG)はIC1の5ピンに入ります。この信号をトリガとして、内部で8波のバースト波が発生され、
7ピン、8ピンから送信用振動子に供給されます。
IC1の入出力波形を下に示します。
f:id:engineer-paju:20191102221622p:plain
IC1の入出力波形
トリガ入力(黒)が入って0.7msec程度で40kHzで8波のバースト波形が8ピン、7ピンから出力します。7ピンと8ピンの信号は位相が180度ずれているので、7ピン、8ピンを交互に駆動することで、出力を大きくします。
緑のDump出力が1ピンより出ていて、受信回路側につながっているのですが、これについては後で説明します。

次に受信回路側です。オペアンプLM324(もしくは相当品)には4つのオペアンプが入っています。
1段目は受信側の振動子の信号を受けています。振動子のインピーダンスがよくわからないですが、あまりゲインは稼げていないように見受けられます。どちらかというとインピーダンス変換(低くする)の意味合いが強いのではないでしょうか。

f:id:engineer-paju:20191103111502p:plain
1段目アンプ
2段目でゲインをガッツリ稼いでいます。また、2段目オペアンプのプラス側入力には、先ほどのIC1からのDump信号が入ってきています。Dump信号は下に示すようにRC回路でなまらせられるため、波形が三角形に近くなっていますが、この波形がオペアンプのプラス側に入ることでバイアスが崩れ、正常に増幅しなくなります。
f:id:engineer-paju:20191103112014p:plain
2段目アンプ
下にこの部分のシミュレーション結果を示します。オペアンプの入力側には40kHzの正弦波を連続で入れていますが、プラス側の変動によりバイアスが崩れ、出力に現れるとともに、増幅が働かなくなることがわかります。この増幅が働かなくなる部分は、送信波形が出力されるタイミングおよび、その直後をカバーしており、送信波形の回り込みと至近距離に反射物があった場合の強い反射を排除しています。
f:id:engineer-paju:20191103113229p:plain
アンプ2段目解析波形
続いて3,4段目の動作です。3段目の
f:id:engineer-paju:20191103134653p:plain
3_4段目回路
3段目のオペアンプのプラス端子は+5Vの半分より少し高い電圧となります(100kΩ2つで5Vを分圧したのの間に5.1kΩがあり、その5V寄りなので)。同様にして4段目のオペアンプのプラス端子は+5Vの半分より少し低い電圧となります。4段目はオペアンプのマイナス端子と出力の間にフィードバック抵抗がないので、プラス端子、マイナス端子の大小により出力が決まるというコンパレータ回路になっています。
シミュレーションの結果を下に示します。
f:id:engineer-paju:20191103140225p:plain
3,4段目信号解析
出力段のトランジスタがONするので、コレクタの電位は下がります。
この信号をIC1が検知し、Echo出力ピンをLOWにします。
f:id:engineer-paju:20191103141204p:plain
Echoピン出力まで
このモジュールに接続したArduino(もしくはラズパイなどのマイコン)はEchoピンの立ち上がりから立ち下がりまでの時間を計測し、距離を計算しています。

(略)
  t1 = micros();
  while ( digitalRead(ECHO_PIN) == 1);
  t2 = micros();

  pulse_width = t2 - t1;

(略)

お疲れさまでした。