マイコン制御基礎の次

マイコン制御基礎の次(6)

スイッチチャタリングの傾向と対策

みわよしこ(執筆協力:山本栄一、小椋秀一、宇野雄騎)  2009/11/24

自作のマイコン制御プログラムで実際にモノを動かしてみよう! 「マイコン制御基礎」第3シリーズでは、LEDの点滅とは一味違う、“ボクサーロボットの招き猫化”にチャレンジする。(編集部)

- PR -

 スイッチのON/OFFをマイコンの入力として扱うことは、“センシングのための重要な第一歩”である。

 しかし、そこにあるのは、一瞬で「Low」が「High」に、あるいは「High」が「Low」になる理想的なデジタル回路の世界ではなく、「スイッチ」という現実的なモノの“生々しい振る舞い”によって実現される世界だ。

 今回は、スイッチの生々しさと付き合ってみよう!

もし「自爆ボタン」が
予期しない動作をしたら?

 しつこいようだが、本連載の最終目標は、「招き猫」ロボットを動作させて、望むだけの福を招かせることである(画像1)

画像1 第3シリーズのゴール「招き猫」
※画像をクリックすると動画が再生されます(aviファイル)

 この「招き猫」の“招き”動作の回数は、腕の付け根に設置したマイクロスイッチによって行われている。スイッチをマイコンの入力として扱うための、最低限必要となる準備については、連載第3回「スイッチを押したら何かが起こる!? −マイコンでスイッチ入力を扱うには−」で解説したとおりだ。

 これらの準備は、スイッチをマイコンの入力として扱うための必要条件ではあるが、十分条件ではない。十分条件になるために不足しているのは、「スイッチそのものが動作する」ということに付随して起こるさまざまな問題だ。

 ここで、有名な連続アニメ「タイムボカンシリーズ」(注)に登場する“自爆ボタン”を思い出してほしい。憎めない悪役が登場し、毎回悪事を働くのだが、颯爽(さっそう)と登場した正義の味方によって成敗される(子供向けアニメの王道だ!)。最終的に、悪役は自爆ボタンを押して、自らの乗り物(メカ)を爆破し、負け惜しみをいいながら逃げて行く……(大爆発にもかかわらず、なぜか無事である)。

注:株式会社 竜の子プロダクション(タツノコプロ)制作のアニメ番組。

 この自爆ボタンだが、もし自爆ボタンを押したのに自爆できなかったら、どうなるであろうか? きっと、正義の味方にあっけなく捕らえられてしまい、次回の物語の冒頭を「悪役が悪事を働く」という、おなじみの展開から開始することができなくなってしまうだろう。また、1回だけ自爆するつもりだったのに、ボタンを押したら3回も爆発してしまったらどうなるだろうか? 1回の爆発ならいつものように無傷で脱出できるかもしれないが、3回の爆発に耐えられず悪役が爆死してしまい、次回の物語が成立しなくなってしまうかもしれない……。捕らえられた悪役の物語/悪役が死んでしまった後の物語は、それはそれで興味深いものであろう。しかし、娯楽として楽しむ連続アニメの世界にはふさわしくなさそうだ。

 自爆ボタンが意図どおりのタイミングで意図どおりの動作をしてくれないと、このように大変都合の悪いことになってしまう。では、「自爆ボタンを押しても、思いどおりに自爆できない」という事態は、どのような場合に発生するだろうか? ここで、1つの可能性として考えられるのは「自爆ボタンの設計者が、スイッチに“チャタリング”という現象があることを知らなかった」ということであろう。

チャタリングとは?

 スイッチの基本は「金属板と金属板が接触して接点ができると、そこに電流が流れる」である。金属板の片方を固定しておき、もう片方をバネなどの力によって移動させて、接触させることで接点を作るわけだ。

 理想としては、

2枚の金属板が近づいた接点ができたスイッチON

を期待したいところだが、実際には、

2枚の金属板の片方が、強い力を与えられて、速いスピードで動きはじめた2枚の金属板がぶつかったぶつかったり、離れたりする振動を繰り返した振動が止まって、接点が安定したスイッチON

となる。

 この「ぶつかったり、離れたりする振動」がチャタリングとなる。スイッチの中を直接観察するのは困難だが、木やメラミン樹脂でできた食器を硬い床に投げ付けてみると、「カタカタカタ……と振動してやがて止まる」という現象を見ることができるであろう。これがチャタリングのイメージに近い。

 チャタリングが起こっているとき、スイッチは早い周期で「ON」と「OFF」を繰り返すことになる。チャタリングの最中の「ON」「OFF」に反応してしまうと、「1回だけ自爆するつもりが3回自爆」ということになるかもしれない。また、チャタリングが終わった後を「ON」とすると、「自爆スイッチを押したけど、反応しない」ということになるかもしれない。

関連リンク:
必修技術:タスク制御とチャタリング対策
http://monoist.atmarkit.co.jp/fembedded/tengine/tengine03/tengine01.html

スイッチのON/OFFの実際

 ここで、今回の「招き猫」ロボットに使用したマイクロスイッチのON/OFFの様子を、実際の測定波形で見てみよう。

 スイッチの「ON」で「High」「Low」(画像2)、「OFF」で「Low」「High」(画像3)となる。

画像2 スイッチの「ON」で「High」→「Low」

画像3 スイッチの「OFF」で「Low」→「High」

 「ON」時には、500μsecほどの時間に、5回以上の「ON」「OFF」「ON」……が行われて、最終的に「ON」となることが分かる。一方、「OFF」時には、特に気にする必要があるほどのノイズはなく、スムーズに「ON」「OFF」の切り替えが行われていることが分かる。

 この違いは、「床に投げ付けられた食器は、しばらくカタカタカタ……と振動してから止まる」と、「床にある食器を拾い上げるとき、つかむ動作に成功しさえすれば、食器はスムーズに空中に移動する」の違いである。

 スイッチのON/OFFを扱うときは、「ON」時のチャタリングに注意して、対策を行う必要がある。今回、入力として取り扱うマイクロスイッチの場合、「OFF」時のチャタリングに関する対策は特に必要ない。ただ、「OFF」時への対策が必要かどうかはスイッチのタイプによるので、はじめてスイッチを取り扱う場合は「OFF時にはチャタリング対策は不要」と思い込まないでいただきたい。

回路で行うチャタリング対策

 現在のチャタリング対策は、制御ソフトウェアによって行うのが主流である。しかし、今回は回路そのものでチャタリング対策を行うことにした。理由は「制御ソフトウェアは、なるべく単純明快なものとしたい」「チャタリング対策を行った回路の実例を、近年見掛けることが少なくなったので示したい」の2つである。

 図1は、前回「回路図なんか怖くない!−「招き猫」回路を読む」でも示したスイッチインターフェイス部分の回路図である。

図1 スイッチインターフェイス部分の回路図

 この回路のうち、チャタリング対策として設けられているのは、

である。

 次ページでは、これらのチャタリング対策の役割と、回路中での実際の機能について見てみよう。

  • 連載バックナンバー
  • 全記事インデックス
  • 組み込み開発トップ
  • MONOistトップ

ホワイトペーパーTechTargetジャパン

メールマガジン

スキルアップ/キャリアアップ(JOB@IT)

スポンサーからのお知らせ

Windows Embeddedコーナー

Windows Embedded
Windows Embedded専門コーナー。Windows Embedded StandardやWindows Embedded CEをはじめとする「Windows Embedded」ファミリの最新動向や技術情報をお届けします!!

Androidコーナー

Android
Android専門コーナー。組み込みデバイスへの適用からアプリケーション開発、イベントレポート、ニュースなどAndroidに関するさまざまな技術情報がここに集結!!

@IT MONOist 求人情報