電気信号のON/OFFを取り除く回路
図1は,プッシュ・スイッチを入れた瞬間,電気信号が勝手にON/OFFを繰り返す現象(バウンス)を取り除く,デバウンス回路です.この回路で,バウンスがない正常な場合,Vcの電圧波形は,図2の(a)~(d)のどれでしょうか.プッシュ・スイッチは,10msで押してONさせ,スイッチのオン抵抗は0Ω,オフ抵抗は無限大とします.
正しい波形はどれか?
(a)の波形 (b)の波形 (c)の波形 (d)の波形
図1のプッシュ・スイッチは,0ms~10msの間はOFF(非導通),10ms以降はON(導通)です.なので,このスイッチのON/OFFにより,10msを境にしてコンデンサの状態は充電,あるいは放電となります.また,そのときの時定数を検討すると分かります.
図1のプッシュ・スイッチは,0ms~10msの間がOFF(非導通)なので,その間に,C1がR1とR2を介し5V充電されています.10ms以降は,ON(導通)となり,R2とプッシュ・スイッチを介して放電し,GNDの電圧と等しくなります.充電と放電の状態を表しているのは,図2の(b)と(d)となります.放電は,C1からR2を通りGNDに向けて流れる経路なので,その時定数は「C1R2=10ms」です.(d)は時定数が無く,10msの時定数を持つのは(b)となります.なので,バウンスがない正常な場合のVcの電圧波形は,(b)の波形となります.
●デバウンス回路でない場合のOUTの波形
図3は,図1のR2とC1を外した回路でデバウンス回路ではありません.この回路の動作は,INの電圧はプッシュ・スイッチがONのとき0V(Low),OFFのとき5V(High)のディジタル信号となります.A1のシュミット・トリガ入力のインバータを通して出力します.シュミット・トリガ入力のインバータは,INの電圧に雑音が重畳されたときにOUTの信号が誤動作しないようにします.この回路を用いて,プッシュ・スイッチのバウンスにより,OUTの波形がどうなるかシミュレーションで確認します.ここで,図3のプッシュ・スイッチ(X1)は,図4のサブサーキットに対応しています.
図4のV1は,10ms~30ms間のバウンスを,スイッチのON/OFFを記述した「bouncing.txt」を読み込むことで模擬します.
bouncing.txtを読み込み,プッシュ・スイッチのバウンスによる影響を模擬する.
図5は,図3のシミュレーション結果で,上段がINの電圧波形,下段がOUTの電圧波形です.10ms以降では,バウンスによりINの電圧が5V(High)と0V(Low)を繰り返し,それがシュミット・トリガ入力のインバータによって反転したOUTの信号となります.このように1回のプッシュ・スイッチを押す信号が,バウンスの影響によりディジタル信号のHighとLowを繰り返えした信号になるので良くありません.
●スイッチが理想のときのデバウンス回路の動作
図6は,図1をシミュレーションする回路です.
プッシュ・スイッチ(X1)のサブサーキットは図7で,バウンスが出ないようになっていて,10msに1回だけONとなります.
V1は10msに1回だけONとなるよう矩形波とする.
図8は,図6のシミュレーション結果で,上段がINの電圧波形,中段がVcの電圧波形,下段がOUTの電圧波形です.
Vcの電圧波形は,0ms~10ms間,プッシュ・スイッチがOFFなので5Vとなります.10ms以降は式1の時定数でC1は放電して0Vとなります.
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・(1)
これが,正解の図2の(b)の波形となります.シュミット・トリガ入力のインバータは,1.5Vの閾値で出力がHighとなるように設定しているので,下段のOUTの波形は,Vcの電圧が1.5Vより下がると出力が5Vとなります.また,図8には示しませんでしたが,プッシュ・スイッチがOFFになるときは,式2の時定数でC1は充電となります.
・・・・・・・・・・・・・・・・・・・・・・・・(2)
式1と式2を比べると,充電は放電より長い時間がかかるようにしています.
●バウンスの影響を取り除くデバウンス回路の動作
図9は,プッシュ・スイッチ(X1)のサブサーキットをバウンスがある図4に変更した回路です.この回路をシミュレーションし,プッシュ・スイッチで生まれたバウンスにより,短時間にON/OFFを繰り替えしたときの,デバウンス回路の出力を確認します.
X1のプッシュ・スイッチは図4のサブサーキットへ変更している.
図10は,図9のシミュレーション結果です.上段がINの電圧波形,中段がVcの電圧波形,下段がOUTの電圧波形です.バウンスの影響によりINの電圧波形は乱れます.INの電圧波形が0Vになるとき,C1は式1の時定数τ1で放電するので,Vcの波形はINの波形と同期せず,0Vまでは落ちません.また,INの電圧波形が0Vから高い電圧側へ戻るとき,式2の時定数τ2で充電するので,Vcの電圧変化は,わずかしか変化しません.この動作により,中段のVcの波形となり,スイッチで生まれたバウンスは取り除かれ,OUTにはプッシュ・スイッチを1回押した信号が伝わります.
スイッチで生まれたバウンスの影響は取り除かれている.
今回解説したように,機械的な接点を持つスイッチは,短時間に接点がON/OFFを繰り返すバウンスが発生します.デバウンス回路は,バウンスの影響を取り除き,1回押した信号を正確に伝えることができます.
解説に使用しました,LTspiceの回路をダウンロードできます.
LTspice5_032.zip
●データ・ファイル内容
Switch_debouncing_bad_cir.asc:図3の回路
pushbuttom_SW.asc:図4の回路
pushbuttom_SW.asy:図4のシンボル
Switch_circuit.asc:図6の回路
pushbuttom_SW_ideal.asc:図7の回路
pushbuttom_SW_ideal.asy:図7のシンボル
Switch_debouncing.asc:図9の回路
bouncing.txt:バウンスを模擬するファイル
■LTspice関連リンク先
(1) LTspice ダウンロード先
(2) LTspice Users Club
(3) トランジスタ技術公式サイト LTspiceの部屋はこちら
(4) LTspice電子回路マラソン・アーカイブs
(5) LTspiceアナログ電子回路入門・アーカイブs
(6) LTspice電源&アナログ回路入門・アーカイブs
(7) IoT時代のLTspiceアナログ回路入門アーカイブs
(8) オームの法則から学ぶLTspiceアナログ回路入門アーカイブs