
多くの方にとって、あまり興味を引く内容ではないかも知れないModdore自動化ネタです。
まだガレージへの設置はできていないものの、新たに作った測距モジュールをModdore本体と接続して引き込み動作が開始できることまでは確認できました。そこで、この測距モジュールが
どういう仕組みでできているのか、やっぱり説明を書いておこうかと思います。ブログに上げておくと、自分で調べるときに便利だったりするので、自分用の記録を兼ねます。
まず、以前のブログにも載せたその回路の全体像はこちらです。
この回路図をこんな感じのブロックに分けて、ブロック毎に説明しようと思います。
■変圧とセンサー接続
一番左側の①は、12Vから5Vへの変換と測距センサーを繋ぐ部分です。
図の下側が電圧変換部ですが、基本的には
12Vを突っ込むと5Vが出てくる便利な小さい部品を使っているだけです。
これは、スイッチングレギュレータという部品です。似た部品に3端子レギュレータというものがありますが、それよりも
非常に高効率であるため、3端子レギュレータで考えなければいけない廃熱方法をあまり考えないで済む電子部品です。その代わり、内部でON/OFFを繰り返して電圧変換をする原理なので、高周波ノイズが多い(高周波で電圧が揺らぐ)という欠点があります。
今回の"車の有無を見る"という目的においては、
・高頻度に(≒高周波数で)正確な距離をセンシングする必要はないので、計測結果に高周波ノイズが乗ったとしても問題なかろうというザックリな考えと、
・そこそこの容量の電解コンデンサで平滑化するくらいで十分じゃないかというなんとなくの勘で、
これを使うことにしました。
なお、スイッチングレギュレータの入出力すぐのところにコンデンサを挟み、ダイオードで逆電位の保護をしているのは、どこか(失念)に書いてあったのをそのまま採用しています。
また12Vは、最後に説明するJ1コネクタを経由してModdore本体からもらっています。
①の上の方は、測距センサーに繋ぐ端子を表しています。使うセンサーは、+5V(正確には+4.5V~+5.5V)を供給すると距離に応じた電圧が返ってくる仕様なので、+5V、Vout受、GNDの3端子となります。測距センサーにはこういう感じで繋ぎます。
■電圧比較するコンパレータで二値化
次に②です。これは、①の端子2に返ってくる距離を表す電圧の大小を判定する回路です。
この回路は、
コンパレータ(比較器)と呼ばれるものです。
真ん中のRV1は、ポテンシオメータ(可変抵抗器)です。小さくて何回転も回せるところが違いますが、オーディオのボリュームと一緒です。
ちっちゃいつまみを精密ドライバーで回すことで、1と3の間の電圧を任意に分圧し、2の電位を変えることができます。この2の電位を基準にして、センサーの出力電位(R7左)がそれよりも大きいか小さいかを判定するのが、このコンパレータの役割です。大きければ右側の出力がLowになり、小さければHiになります。
超アナログな仕組みのトランジスタ2個だけの
プリミティブな構成の
二値化回路となっています。
こんなシンプルな回路でも、どれくらいの距離までであれば車があることにするのか(=どれくらいの距離以上離れていれば車がないことにするのか)、をこのRV1でちゃんと調整することができます。
また、後述する後ろの回路の都合で、②のすぐ後ろにはNOT回路を繋いでいます。それも含めると、
センサーの出力電圧が大きい(距離が近い)とHiを出力し、センサーの出力電圧が小さい(距離が遠い)とLowを出力する回路となっています。
基本的には、以上で車の有無のセンシングはできるようになります。
ですが、これだけだと、
・電源投入時の回路が不安定なときの挙動が怪しい、
・もしも車が最初からいなかった場合におかしくなる(いきなりトリガーONしてしまう)、
・ノイズ等で一瞬だけセンサー出力が下がったような場合にも、トリガーONしてしまう、
というような問題があるので、そのあたりを何とかしようとする回路が以降の回路です。
■フリップフロップによるレディー確認
まずはその中の③の回路を説明します。
この回路は何をしているかというと、
・電源投入直後には
レディーではないという意味のHiを出力し、
・車の有無計測を始めてよいなったならば、
レディーであるという意味のLowをそれ以降ずっと出力し続ける、
ような回路です。後者は、測距センサーが一定距離以内にものがある出力を出したことをもって判定します。
この図の中の+5VからQ10, Q11までの上半分が、
フリップフロップ(特にRSフリップフロップ)と呼ばれる記憶回路です。状態を一つだけ保持できる記憶素子(1bit記憶素子)になっています。この辺りは、0か1か(LowかHiか)で処理するデジタル回路の様相のものです。
Q10の3とQ11の3が、それぞれSetとResetの入力となっていて、R16(Q11の2)が出力です。
具体的な動作を説明すると、
・フリップフロップの
Setに信号を入れる=Q10の3をアースに落とす(Lowにする)
→
Q10がOFFとなり、
Q10の2がHiになる
→ Q11の3もHiになるため
Q11がONとなり、
Q11の2(③の出力)がLowになる
→ Q11の2がLowということはQ10の3もLowとなり、
Q10はOFFで安定する
となり、その状態が保持されます。このときの出力はLowです。
一方で、
・フリップフロップの
Resetに信号を入れる=Q11の3をアースに落とす(Lowにする)
→
Q11がOFFとなり、
Q11の2(③の出力)がHiになる
→ Q10の3もHiになるため
Q10がONとなり、
Q10の2がLowになる
→ Q10の2がLowということはQ11の3もLowとなり、
Q11はOFFで安定する
となり、その状態も保持されます。このときの出力はHiです。
もしもSetとResetの両方に信号を入れた場合(両方をアースに落とした場合)、出力はHiになり
Resetが優先される挙動となります。
そして、フリップフロップのSetとResetを行うためのスイッチの役割をしているのが、Q12とQ13です。
このQ13には、電解コンデンサを使ったワンショット回路が付いていて、
電源投入後の0.3秒間ほどだけONになるようになっています。すなわち、電源を入れた直後に
フリップフロップをResetするようにしています。
一方で、Q12には上述した{②+NOT回路}が接続されています。もしもセンサーの前に
一定距離以内にものがあるとONになって、
フリップフロップをSetする動作をします。
したがって、電源を投入してから計測対象がない間は、フリップフロップの出力はHiのままが維持され、一瞬でも計測対象が見つかった(一定距離以内にある)あとは、ずっとLowを出力し続けるような動作をします。最初から車が駐まっている場合には、電源投入からのResetが終わった直後(0.3秒後)に計測対象が見つかることになり、その後はLowを出力し続けます。
これはそもそも何なのかというと、
車のあるなしを判定する動作を開始する条件が整っているのかをチェックする機構です。車がある状態を確認してからでないと、車がなくなったことを判定しないようにするためのものです。
■NOR回路で有無確認
次に④の説明をしましょう。
これは
NOR回路と呼ばれるもので、Q1の3(=A)とQ2の3(=B)のどちらか一方でもHiとなった場合(OR)に、Lowを出力する回路です。NOT+ORでNORです。別の見立てをすると、AとBの両方がLowとなった場合にだけ、Hiが出力される回路です。
Aには、{②+NOT回路}が接続されているので、もしもセンサーの前に一定距離以内にものがあるとHi、ものが遠く離れるとLowとなります。Bには、③回路が接続されているので、車のある状態が確認されるまではHi、確認できたらそれ以降Lowになります。
これにより、車がセンサーの前にある状態を確認した後で、かつ、そこから車が遠くに離れたときにだけ、④からHiが出力されるようになります。
■充電時間で安定状態の確認と時間調整
そして、そのデジタルな処理の④回路のHi信号はアナログな⑤の充電回路のONを兼ねています。AとBが両方ともにLowとなってQ1とQ2が両方ともにOFFとなったときから、このピンク点線で囲った経路でC2の電解コンデンサの充電が始まります。
C2はそこそこ大きめの容量にしてあって、R1の抵抗値も大きくしてあるので、この充電には時間がかかります(9割の電圧になるのに10秒以上かかります)。
この充電にかかる時間を利用して、センサー出力が安定して低くなった状態が維持されているか(言い換えると、{②+NOT回路}が安定してLowになっているか)を判定するようにしています。
C2の充電中に一瞬でも{②+NOT回路}がHiになると、Q1がONになってC2に充電されていた電荷は一瞬で放電されます。すなわち、十分に安定して{②+NOT回路}のLowが継続されなければ、C2は十分に充電されません。
C2には、その電圧を確認する目的で、②で示したものと同じコンパレータが接続されているので、RV2を調整することで充電時間を調整することができるようにしてあります。
このC2の充電時間と充電電圧の比較確認という
超アナログ的方法で、センサ出力が下がった状態が十分に継続されたかどうかを判定するようにしているということです。センサー出力に多少のノイズが乗っていても、あるいは、車の離れ具合が微妙な状況にあるような場合には、まだ車がいなくなったとは判定しません。
■最終出力
この最後のコンパレータには、最終出力を12Vに変えてModdore本体に戻すことを兼ねたNOT回路を付けてあります。さらに、この測距モジュールの最終出力を、Moddore本体のトリガースイッチとRfリモコンリレーと並列に接続するため、ダイオードによる保護を行って回路は完結です。
Moddore本体とはどのように繋ぐかというと、久々に示すModdore本体のこの回路図のコネクタAのところに、J1を並列に接続します。
J1は、Moddore本体から12Vをもらってくると同時に、トリガー信号を出力するコネクタとなります。これで、今回作っている測距モジュールによるトリガーONも既存のトリガーと共存して機能するようになります。
以上のように、アナログ的処理とデジタル的処理を組み合わせることで、
マイコンどころかICも使わないシンプルな小さい回路で、
調整も可能でそこそこ複雑な判定を実現することができました。
電子回路の設計なんてほとんどやったことはありませんでしたが、ネットの情報とKiCadの回路シミュレーションのおかげで、なんとかやりたい機能を作ることができたというわけです。