【電子回路とプログラム】タクトスイッチ(機械式スイッチ)を操作したときのチャタリング

Arduino でのハード制御において、スイッチによる入力信号の切り替えは初級者でもトライする作業。

でも、これがけっこう厄介。

というのも、タクトスイッチ、トグルスイッチなどの機械式スイッチにはチャタリングという難題が発生する。当プロジェクトで頑張ってくれている学生諸君も、スイッチを使った回路の制御プログラムを作成するときに、このチャタリングにはけっこう悩まされている様子。

この記事では、電気電子系学生さん向けに、まず「チャタリング」そのものを見ていこうと思う。

スポンサーリンク

チャタリング

次の図が、スイッチを操作したときの電圧のようす。回路は操作(ON)したときに電圧が HIGH になる回路を想定。
チャタリング

スイッチを操作した直後、1度は電圧がHIGH(ON) になるが、何度か HIGH → LOW → … を繰り返し、最後は HIGH(ON) に落ち着く。この HIGH → LOW → … の繰り返しがチャタリング

この図は、いろんなところで見たことがあると思う。

そして、このチャタリングを実際に確認するために使った回路がこちら。

+側(5V)にスイッチ、GND側に抵抗(330Ω)を配置・直列接続し、スイッチと抵抗間の電位をオシロスコープで観察した。

ブレッブボード上の回路がこちら。

テストしたスイッチは2種。Arduinoのキットに含まれているタクトスイッチと、趣味で購入していたトグルスイッチ。

タクトスイッチ

タクトスイッチを OFF状態(押していない状態) から ON状態 (押した状態) に操作したときの電圧変動=チャタリングの様子がこちら。横軸の時間軸メモリは 1us/div。

OFF → ON 時の電圧立ち上がり部分が太いことが分かるだろう。ここがチャタリング。

試験に使ったタクトスイッチは非常に優秀なようで、ms幅のチャタリングは 1000回近く操作してみたがオシロスコープでとらえることができず、時間軸を 1us/div まで短くして、ようやくチャタリングを発見。それでも 100回に 1回くらいしか起こらない。相当優秀。

ON状態(押した状態) から oFF (離す) へ操作したときの電圧変動がこちら。時間軸は 5ms/div。

OFF → ON とは異なり、ON → OFF 時には、明確なチャタリングが起こっている。このタクトスイッチは、スイッチを離すときにチャタリングを起こしやすいようだ。(とはいっても、50回に 1~2回程度だが)

トグルスイッチ

スイッチをトグルスイッチに替えて、OFF → ON したときの電圧変化がこちら。時間軸は 200us/div。

タクトスイッチとは異なり、2回に1回は写真のようなチャタリングが発生。写真は掲載していないが、ON → OFF でも同じようなチャタリング発生。

トグルスイッチはチャタリングが発生しやすいことが分かる。

対応策(は次回記事)

このようなチャタリング。LEDの点灯・消灯のような制御ならば、チャタリング対策をしなくてもほとんど不具合は感じない。

けれど、ON した回数が重要だったり、ON で動き出し、OFF で止まるようなハード制御だと、このチャタリングはけっこう致命的。そんなときには、きちんとチャタリング対策をする必要がある。

このチャタリング対策については、また別の記事で。

スポンサーリンク

コメント

タイトルとURLをコピーしました