- ベストアンサー
PICのスイッチの入力誤作動の原因
PIC629を使っています。 スイッチのデジタル入力(アースするかしないか) に応じて動くプログラムを作ったのですが、 長期的な私用の際に、アースの読み込みをしてくれなくなります。 チャタリング防止でカーボン抵抗33KΩと0.1μFのセラミックコンデンサを入れています。 スイッチは汎用のOn/OFFスイッチです。 他の動作は正常なのですが、スイッチのデジタル入力のみ 長期的に使用の際に誤作動(アースを読み込んでくれない) が起きます。 PICも壊れていません。 またPICの足から直接アースにショートさせると 正常に動いたり、動かなかったりします。 原因として、カーボン抵抗やセラミックコンデンサの 破損は考えられるのでしょうか? それとも他の原因が考えられるのでしょうか? プログラムには原因はないと思われるのですが、、
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文章ではなかなか難しいですね。。。 スイッチからのラインに対し、33Kでプルアップと0.1μでグランドに接続している。そしてそのままPICの端子へ接続、と言った感じでいいのでしょうか?もしそうだとしたらチャタリング対策にはほとんどなっていないような気がします。そして回路としてとても壊れやすく非常に危険な回路です。まずはプルアップ抵抗を4.7K辺りに変更してさらにPICの端子直前に5.1Kの抵抗を入れてみてはどうでしょうか? ちなみにPICでしたら、チャタ対策は例えばスイッチ押下時に内部でカウンタ(100msくらいかな?)を回しカウントアップしたところで再度スイッチ入力を見てその際にまだ押下状態だったらスイッチオンといった処理にすればより確実です。
その他の回答 (2)
- JYUZA
- ベストアンサー率29% (54/184)
回路が正確にわからないから何とも言えないです。プルアップ抵抗の抵抗値とチャタ防止のRとCの配置、PICの端子のダンピングの有無をお教えください。さらに、その現象が起きた時のPICの端子の状態はわかりますでしょうか?RCでチャタリングを防止したことがないのでもう少し状況をお教えください。
お礼
ありがとうございます。 PICは12F629を使っており、チャタリング防止のため Vccに33KΩの抵抗、アース側に0.1μFのコンデンサを入れています。 ダンピング抵抗は入れていません。(普通入れたほうがよいのでしょうか?) 症状のときは入力がHiの状態でアースを読み込んでくれません。 JYUZAさんは通常チャタリングは何で防止しておられるのでしょうか? 私はPICアセンブラ入門書に書いてあった回路図を参考にしたのですが。
- rabbit_cat
- ベストアンサー率40% (829/2062)
回路はどうなっているのでしょうか。 アースするかしないか、というのがよくわからないです。 通常は抵抗でVddにプルアップしてあって、スイッチでグランドにショートさせてるってことですか? あるいは、PICのピンを内部でプルアップに設定してあって、RCの直列回路があってスイッチってことでしょうか? まさか、通常は浮いてて(オープンになってて)、スイッチでグランドとショートさせてる、てことではないでしょうね。 抵抗やコンデンサが壊れている可能性も否定できませんが、まずは、回路やPICの設定がおかしくないか、ていうのを確認するのが先でしょう。
お礼
ありがとうございます。 通常は抵抗でVddにプルアップしてあって、 スイッチでグランドにショートさせてる方法です。 PICの設定・プログラムは何度も見直し、 試験動作中は問題ないのですが、 数日使っていると急に入力が利かなくなるのです。 PICも壊れておらず、気になることと言えば、 屋外に防水処理をして置いてあり、 スイッチの配線が2mくらいあることでしょうか。
お礼
おっしゃる通りの回路です。 さっそく教えていただいた回路にしてみます。 それにしても参考書やWebにはコンデンサすらなく、 Vccへの抵抗も10kΩ~22kΩだったのですが 何故そのように記述してあるのでしょうか? 機能的にこれで満たされているためでしょうか? ちなみにプログラムは入力を再確認するように してあります。 いろいろありがとうございます