コンテンツ
YouTube
0:17 チャタリングとは
1:23 問題
2:11 実測した電圧波形をLTspiceで再現する方法
4:24 チャタリングを除去する方法
6:13 RSフリップフロップを用いたチャタリング除去
7:02 まとめ
スイッチをON/OFFするときはチャタリングに注意
この記事では、「スイッチをオンオフする時はチャタリングに注意しましょう」というテーマで話をしていきます。
この記事を最後まで読むと、チャタリングがどのように発生しているのかが理解できるようになり、対策回路についても詳しくなることができますので是非最後までご覧下さい。
この動画の内容はCQ出版のメルマガでも解説していますので、ぜひそちらも合わせてご覧下さい。
チャタリングとは
まずは、チャタリングとは何かについて説明します。
スイッチはどんな製品でも使われている一般的な部品で、理想的にはスイッチのOFF/ONに応じて電圧値もHigh/Lowがキレイに切り替わることが期待されています。
しかし実際にスイッチが切り替わる瞬間には、チャタリングと呼ばれるON/OFFが高速で繰り返される不安定な期間が存在します。
実際にオシロで見てみると、スイッチの種類にもよりますが、多くのスイッチで数100us〜数ms程度のチャタリング期間が観測されました。
このチャタリングの原因は、スイッチの中身を分解してみると理解することができます。
以下の画像は、マイクロスイッチと呼ばれるスイッチで、マウスにも良く使われるものになります。
中身を拡大してみると、スイッチと可動部と3つの端子から成っています。
スイッチが押されていない時は端子①と②が導通しており、スイッチが押されると可動部が下に勢いよく移動し、端子3の壁にぶつかります。
この端子③にぶつかった衝撃で、目に見えないほどの高速で可動部がバウンドします。
これがチャタリングの原因で、スイッチを離した時にも同じような現象が発生します。
問題
それでは突然ですが、ここで問題です。
このチャタリングを除去するために適した回路定数の組み合わせは、次のうちどれでしょうか?
なお、ここで記載する仕様は満足することとします。
ちなみにチャタリング除去のためのRC回路は、目安として時定数(R×C)をチャタリングの数分の一から1/10程度のオーダーで設計すると比較的良くチャタリングを除去できます。
各条件の時定数は以下の図のようになり、(b)の条件が一番目安の範囲に近いです。
また実際に(a)〜(d)の条件でシミュレーションしてみると、仕様を満足するのは(b)だけであることが確認できます。
実測した電圧波形をLTspiceで再現する方法
シミュレーションをした結果は後でお見せしますが、まずは準備として実際のチャタリング波形をLTspiceに取り込む方法を説明します。
LTspiceには正弦波や方形波等の電圧源は用意されていますが、スイッチのチャタリングのような複雑な波形は作るのが難しいので、実測した波形を取り込んだ方が正確かつ効率的にシミュレーションを行えます。
電圧波形を取り込む方法としては全部で3ステップあります。
次にステップ②のパソコンでCSVファイルを読み込み、LTspiceで認識できるフォーマットに加工する手順を詳しく見て行きます。
最後に、ステップ③として加工したCSVファイルをLTspice上で読み込む手順を見て行きます。
オシロスコープ上で観測した波形と、LTspice上で再現した波形を見比べてみると、かなり細かいレベルで再現できている事が分かると思います。
チャタリングを除去する方法
それでは、チャタリングを除去するための回路を説明していきます。
チャタリングの除去方法は大きく分けるとハードウェアによる方法とソフトウェアによる方法の2つに別れ、ハードウェアの中にはさらに3つの方法があります。
ここではハードウェアだけに絞って、シミュレーションをしながら説明します。
まず一番基本的なRC回路は、このようにRとCだけで作ったいわゆるローパスフィルタの形をしています。
V1がHighレベルの時はR1を介してC1に充電し、V1がLowレベルの時はC1からR1を介して放電します。
シミュレーションをかけると、VoutはR1×C1の時定数に応じて緩やかに変動するため、チャタリングの影響を鈍らせていることが確認できます。
ただし、Voutがゆるやかに変動する上にチャタリングを完全には除去できないため、例えばVoutの先がCPUの汎用I/Oポートに繋がっている場合、CPUがHigh/Lowを検知するしきい値付近で電圧が変動すると誤検出をしてしまう可能性があります。
そこで、RC回路の弱点を補うためにシュミットトリガバッファを追加したのが以下の画像です。
A1はヒステリシス特性を持ったバッファで、出力がLowからHighに切り替わる入力電圧レベルのしきい値と、HighからLowに切り替わる入力電圧レベルのしきい値が異なるという特徴を持っています。
この例では、A1の入力電圧が1.0Vを下回ると出力がHighからLowに切り替わり、2.0Vを上回ると出力がLowからHighに切り替わるように設定しています。
シミュレーションをかけると、V2の部分では電圧変動はありますが、VoutはV2が1.0Vを下回ったところでHighからLowに完全に切り替わっているのが分かると思います。
RSフリップフロップを用いたチャタリング除去
そしてこちらの回路であれば、『問題』に記載した仕様を満足する事も確認する事ができます。
なおチャタリングを除去する方法には、他にもRSフリップフロップを用いた方法があるので紹介だけしておきます。
この方法を用いると、RC回路+シュミットトリガバッファよりも速い時間でスイッチのON/OFFを検知できます。
RSフリップフロップは以下の図のような真理値表を持つロジックICで、記憶という状態があるのが一つの特徴です。
例えばスイッチをOFFからONにした時、SがHigh、RがLowになった瞬間に出力はLになります。
その後、RがチャタリングによってHigh/Lowを繰り返しますが、そこでは前回の値を記憶するのでLowの状態を維持します。
結果として、出力はチャタリングなく最初のLowを検知した段階でスイッチの切り替えを検知することができるようになります。
以上、3つのチャタリングを除去する方法について紹介しました。
まとめ
今回は、「スイッチをオンオフする時はチャタリングに注意しましょう」というテーマで、チャタリングが発生する理由と、対策回路について話をしてきました。
スイッチは単純な部品に見えますが、取り扱いには注意してください。
また、回路規模を減らしたいのであれば、ソフトウェアでの対策も検討してみるといいと思います。
当サイトでは他にも、電子工作初心者が最低限身につけるべき知識やツールの解説など、電子工作を0から体系的に学べる動画や記事を用意しております。