- ベストアンサー
ハードでチャタリング防止回路(PIC使用で)
PICへのスイッチの入力をハードでチャタリング防止をする場合の回路はどういったものがあるでしょうか? フリップフロップなどあるようですが回路がいまいちわかりません。 よろしくお願いします。 (入力:H→L)
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ICの入力はC-MOSでシュミットトリガ。74LS14でもいいし。極性は問いません。PICの入力のシュミットトリガを使ってもいいですが、PICのポートをアナログ的に使うと実におかしなことが起きる場合があります。 右の抵抗は10~30KΩ。ICの入力保護の目的です。これが無いと電源断直後に再度電源を投入するとコンデンサに残った電圧によってラッチアップを起こしICを壊してしまいます。電圧の制限にはIC内部のダイオードを使います。 左の抵抗とコンデンサはフィルタ。10mSのチャタリングを取るには、0.1μFと200kΩ程度でいいんじゃないですか。だいたい、0.5×C×Rくらいの遅れになると思います。てきとうですが。 外にスイッチをつなぐなら、必要に応じてスイッチにプルアップ抵抗を付けます。スイッチの最低使用電流によって適当に選べばよいです。2~10kΩとか。 こんな回路を使わなくても、プログラムでチャタリングを取ることが出来ます。初期化としてカウンタを0にしておき、1mSのインターバルタイマー割込ルーチンの中で、 1.入力がONでカウンタが9以下ならカウンタに1を加える。入力がOFFならカウンタを0にする。 2.カウンタが10なら、スイッチ入力を有効とする。 とやれば10mSのチャタリングを取ることができます。 R-Sフリップフロップを使うのは、スイッチにセットとリセットの接点(C接点)がある場合です。
その他の回答 (5)
- tance
- ベストアンサー率57% (402/704)
- tance
- ベストアンサー率57% (402/704)
時間遅れを利用したチャタリング防止回路を多く見かけますが、 他にも方法があります。図の回路は典型的なものですが、動作は 確実で、チャタリング時間がいくら長くても対応できます。 時間要素を必要としないので最速の動作ができます。 ただし、単純なメークだけのスイッチではこの回路は作れません。 トランスファ接点をもったスイッチが必要で、さらに、両方の 接点ともにOFFの期間が必ず必要です。 こう書くと、特殊なスイッチでないと使えないと思われるかも しれませんが、ごく普通のトランスファスイッチで大丈夫です。 リレーやロータリスイッチなどで、メイク・ビフォア・ブレイク というタイプのものがありますが、これだと使えません。 動作原理はロジックを追っていけば解ると思います。 図中のNCはノーマリ・クローズドを意味し、NOはノーマリ・オープン を意味します。
お礼
off期間が必要なこともチャタリング防止に有効ということなのでしょうか。切れはよくなりそうですけどやはり多少部品はかさみそうですね。回答ありがとうございます。
- KEN_2
- ベストアンサー率59% (930/1576)
PICで利用するのであれば、ソフト処理で5msSから10mS程度のチャタリング防止処理 が無難です。 ハードの対策を実施していてもソフト処理は必要ですよ。 チャタリングの程度が酷く、もしハードで実現するとしたらCR入力回路とシュミット トリガ回路を組み併せれば確実に除去できます。 時定数は5msSから10mS程度を目標にします。 (CRは 0.1μFと10kΩ程度で約5msとなります。) フリップフロップ(F/F)は回路的に複雑になりCRのフイルターとインバーターを 組合わせて実現しますが、シュミットトリガの方が簡単で効果があります。
お礼
ソフト処理は確実ですね。タイマーを複数使う場合で割り込み処理をできるだけ短くしたかったのでハードで解決できないかなと思いました。 CRフィルターとシュミットトリガの組み合わせは使えそうです。 回答ありがとうございます。
まちがえちゃった。C-MOSの74LS14ってありませんよね。74HC14などです。スミマセン。
- okweb-goo
- ベストアンサー率29% (283/952)
PICではありませんが、この本が非常に参考になります。 チャタリングの事も解説しています。 http://www.amazon.co.jp/CPU%E3%81%AE%E5%89%B5%E3%82%8A%E3%81%8B%E3%81%9F-%E6%B8%A1%E6%B3%A2-%E9%83%81/dp/4839909865/ref=sr_1_1?ie=UTF8&s=books&qid=1245850007&sr=1-1
お礼
一度見てみます。回答ありがとうございます。
お礼
RCフィルタといインバーターの方法がいいのですか。 プログラムでも取れるのですが別のことでタイマー使ってしまっていてなるべく処理の時間を短くしたいなと思いハードで解決できたらと思いました。回答ありがとうございます。