PR

スイッチのチャタリングをオシロで見てみる

マイコンでソフト的にチャタリングを避ける話。ウェイトを入れてもう一回読んでみるとか、一定時間内で状態をカウントして判断するとかあるようで、やってみるとそれなりに動く。でもなんとなく気持ち悪い。その原因は相手(チャタリング)の状態が分からずに対処的にやっているかだろうと気づいたので、実際に観測してみる。

タクトスイッチ

測定対象は赤矢印で示したタクトスイッチ。

この周辺の回路図。

マイコン(ATtiny85)の端子に10nF(0.01μF)のコンデンサをぶら下げてスイッチをつないでいるシンプルなもの。プルアップ抵抗はマイコン内蔵のものを使用(そのようにレジスタを設定)。100Ωはスイッチの接点保護用。電源電圧は3.3V。

立下り・立上り

スイッチをオンしたときの実際の測定結果。

きれいに下がるだけでチャタリングは見えない。100Ωを噛ましているからかニュルッと下がっている。それでも下がり始めてから5μsも経てば0Vに張り付いている。絵に描いたようなバタバタしたチャタリング波形が見られるだろうと期待したのだけど拍子抜け。

続いて立ち上がり(スイッチオフ)。

こちらもバタついたチャタリングは見られない。ただし、(マイコン内蔵の)プルアップ抵抗経由でコンデンサにチャージする時間がかかるので遅い。言い換えると、バタつきはしないけど不定状態が長い。立ち上がり始めてから800μsくらいでフルチャージ。

ATTiny85は、データシートによるとVCCが3.3Vの場合、通常の入力ピンはVILのmax値が0.3VCC(=0.99V)、VIHのmin値が0.6VCC(=1.98V)。上の測定波形を見ると、不定時間は概ね200μs程度のよう。

「一定時間待ってもう一度読んでみる」方式なら、立下りも立ち上がりも1msも待てば充分かな。

短押し

続いて、一度押したときの長さ。

まず、可能な限り素早く押した場合。スイッチのオン時間は約25ms。

心持ちゆっくり押した場合。約100ms。

二度押し(ダブルクリック)

普通の速度で何度かやってみた。特に速くしたり遅くしたりはしていない。

ざっくり言って、最初のオンが50~100ms、その後のオフも50~100msってところかな?

ビス等による接点

続いて、ビス等を接点に使ったパドル(昨年のハムフェアで購入したもの)。回路は上のタクトスイッチのものと同じ。

こっちは「絵に描いたようなチャタリング」が観測された。接点を離したときに起きやすいようだ。この例は特にひどかったもので、安定するまでに5ms位かかっている。

まとめ

タクトスイッチの場合、(この回路では)ほとんどチャタリングは起きない。二度読みでの判定でも読み出しタイミングを1msも空ければ充分そう。

ビスなどを使った接点では、やはりチャタリングは起きやすい。判定をしっかりやるなら5~10ms程度は待ちたいか?とはいえ、あそこまでひどいチャタリングはなかなか起きなかったので、そこまで待たなくても、ほとんどの場合は大丈夫かも。10msも遅延させると高速なキーイング時には影響がありそうだし。良い接点のキーを使ってもらうということで。

コメント