• ベストアンサー

PICのスイッチの入力誤作動の原因

PIC629を使っています。 スイッチのデジタル入力(アースするかしないか) に応じて動くプログラムを作ったのですが、 長期的な私用の際に、アースの読み込みをしてくれなくなります。 チャタリング防止でカーボン抵抗33KΩと0.1μFのセラミックコンデンサを入れています。 スイッチは汎用のOn/OFFスイッチです。 他の動作は正常なのですが、スイッチのデジタル入力のみ 長期的に使用の際に誤作動(アースを読み込んでくれない) が起きます。 PICも壊れていません。 またPICの足から直接アースにショートさせると 正常に動いたり、動かなかったりします。 原因として、カーボン抵抗やセラミックコンデンサの 破損は考えられるのでしょうか? それとも他の原因が考えられるのでしょうか? プログラムには原因はないと思われるのですが、、

質問者が選んだベストアンサー

  • ベストアンサー
  • JYUZA
  • ベストアンサー率29% (54/184)
回答No.3

文章ではなかなか難しいですね。。。 スイッチからのラインに対し、33Kでプルアップと0.1μでグランドに接続している。そしてそのままPICの端子へ接続、と言った感じでいいのでしょうか?もしそうだとしたらチャタリング対策にはほとんどなっていないような気がします。そして回路としてとても壊れやすく非常に危険な回路です。まずはプルアップ抵抗を4.7K辺りに変更してさらにPICの端子直前に5.1Kの抵抗を入れてみてはどうでしょうか? ちなみにPICでしたら、チャタ対策は例えばスイッチ押下時に内部でカウンタ(100msくらいかな?)を回しカウントアップしたところで再度スイッチ入力を見てその際にまだ押下状態だったらスイッチオンといった処理にすればより確実です。

susumine
質問者

お礼

おっしゃる通りの回路です。 さっそく教えていただいた回路にしてみます。 それにしても参考書やWebにはコンデンサすらなく、 Vccへの抵抗も10kΩ~22kΩだったのですが 何故そのように記述してあるのでしょうか? 機能的にこれで満たされているためでしょうか? ちなみにプログラムは入力を再確認するように してあります。 いろいろありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • JYUZA
  • ベストアンサー率29% (54/184)
回答No.2

回路が正確にわからないから何とも言えないです。プルアップ抵抗の抵抗値とチャタ防止のRとCの配置、PICの端子のダンピングの有無をお教えください。さらに、その現象が起きた時のPICの端子の状態はわかりますでしょうか?RCでチャタリングを防止したことがないのでもう少し状況をお教えください。

susumine
質問者

お礼

ありがとうございます。 PICは12F629を使っており、チャタリング防止のため Vccに33KΩの抵抗、アース側に0.1μFのコンデンサを入れています。 ダンピング抵抗は入れていません。(普通入れたほうがよいのでしょうか?) 症状のときは入力がHiの状態でアースを読み込んでくれません。 JYUZAさんは通常チャタリングは何で防止しておられるのでしょうか? 私はPICアセンブラ入門書に書いてあった回路図を参考にしたのですが。

全文を見る
すると、全ての回答が全文表示されます。
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

回路はどうなっているのでしょうか。 アースするかしないか、というのがよくわからないです。 通常は抵抗でVddにプルアップしてあって、スイッチでグランドにショートさせてるってことですか? あるいは、PICのピンを内部でプルアップに設定してあって、RCの直列回路があってスイッチってことでしょうか? まさか、通常は浮いてて(オープンになってて)、スイッチでグランドとショートさせてる、てことではないでしょうね。 抵抗やコンデンサが壊れている可能性も否定できませんが、まずは、回路やPICの設定がおかしくないか、ていうのを確認するのが先でしょう。

susumine
質問者

お礼

ありがとうございます。 通常は抵抗でVddにプルアップしてあって、 スイッチでグランドにショートさせてる方法です。 PICの設定・プログラムは何度も見直し、 試験動作中は問題ないのですが、 数日使っていると急に入力が利かなくなるのです。 PICも壊れておらず、気になることと言えば、 屋外に防水処理をして置いてあり、 スイッチの配線が2mくらいあることでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PICのパスコンにかんして

    PICにアースと介した入力スイッチをつけるのに、 プラスに抵抗、アースにコンデンサをかますのが 一般だと思うのですが、コンデンサに関して レギュレータのパスコンのコンデンサと 回路図的に重なるのですが、 この場合パスコンのコンデンサは チャタリング防止のコンデンサをかねている と見てよろしいのでしょうか?

  • PIC12F629デジタル入力について

    PIC12F629をC言語でプログラミングしています。 GP2ピンをデジタル入力としてスイッチを接続しGP4をデジタル出力 としてLEDを接続し、スイッチを押すたびにLEDが点灯、消灯を繰り返す ようにプログラミングしてみました。 ところがデジタル入力のピンをGP0,GP1に変更しピンにスイッチを 接続し入力しても同じように動作しません。回路に電源をいれた瞬間 LEDが点灯しスイッチを入力しても点灯したままです。 GP0,1をGP2と同様にデジタル入力として使いたいのですが、単にピンの 番号をプログラム中で変更するだけではダメなのでしょうか? ご教授おねがいします。

  • ハードでチャタリング防止回路(PIC使用で)

    PICへのスイッチの入力をハードでチャタリング防止をする場合の回路はどういったものがあるでしょうか? フリップフロップなどあるようですが回路がいまいちわかりません。 よろしくお願いします。 (入力:H→L)

  • 照度センサーを改造してPICマイコンに入力

    明るさが一定の明るさを下回ると内蔵の24Vのリレーが作動する という照度センサーがあるのですが、 そのリレーはS9014というTO-92のNPNのトランジスタのコレクタでコイルをON/OFFしていて そのトランジスタは不明のIC(多分ロジックIC)の出力が ベース抵抗経由でトランジスタのベースに繋がりドライブされています。 (S9014 Vceo50V Ic150mA) これを使ってPICにHigh/Lowを入力したくて、ベース抵抗の後を 別途用意した2SC945のベースに繋いで、 エミッタをGNDに、コレクタをPICの入力端子に、 その入力端子を5.6kオームの抵抗経由で+5Vにつないであります。 (PICへは、明るいとLow、暗いとHighが入力されます。) これで明るさによってPICの入力の状態が変化してプログラムも 一見正常に動くのですが、一旦OFFになった後、ずっと照度が上がらずに 10時間くらい経過すると、PICにLowが入ってその際のプログラムが 実行されてしまいます。 照度センサーのベース抵抗の後は10メートルくらいのケーブルで延長して PICの基板に入力してありますがこのあたりに何かあるでしょうか? S9014とC945の違いもありますが。 プログラムに問題はなく、信号の状態が不安定だと思うのですが、 これはどのような対処をすれば誤作動をなくすことができるでしょうか? よろしくお願い致します。

  • PICの出力をGNDに

    PICの出力ピンの先からICにつなぐ途中でGNDにつなぐスイッチを分岐させて、外部的にOFFにしようと考えています。 その際PIC側に抵抗は必要あるのでしょうか? 要するにPICのデジタル出力の5VをそのままGNDにつなげていいのかということです。

  • PIC12F675 の入力読み込み が正しく出来…

    PIC12F675 の入力読み込み が正しく出来ない こう度々だと恥ずかしく思いますが解決したいと思いお願いすることにしました。12F675 を MOVLW B'00101010' ;GP0,2,4ピンを出力にする     MOVWF TRISIO ;入力は10Kの抵抗でプルアップしてます GP3がLOになっているときGP2を100mS間LOレベルにしています GP2はJK-FFのクロックになっていてJKは5Vに接続してあるためGP2によって反転しますこのJK-FFのQ出力がフォトカプラを介してGP3に接続していてJK-FFのQ出力をGP2で操作します(信号線の長さが10mあります) ところがQ出力がHIのとき ?PICはGP3がLOであると判断して ?GP2をLO/HI にスイッチさせていてしかもプログラムが LO/HI操作を一度通過した後何度でもLO/HI を繰り返しています  ?のように判断していることが誤動作の発端と思いますが 原因がわかりません 今回は ANSEL = B'00000000' (デジタルI/Oモード) COMCN = B'00000111' (コンパレータ機能をOFF) BCF ADCON0,ADON (コンバータ電源 OFF)    CLRF INTCON (割り込み発生はさせない)に注意したつもりですがまだ足りていないようです 何方かお願いします

  • 3端子レギュレータ

    pic用の安定した5Vを供給するための電源回路を3端子レギュレータ(78L05)を使って作ろうと考えています。 回路設計をしたことがないのでレギュレータのデータシートの参考回路を元に以下のように回路を設計しました。 ・レギュレータの入力部分にセラミックコンデンサ0.33μFとノイズ対策に電解コンデンサ16V10μFを接続 ・出力部分にセラミックコンデンサ0.1μFを接続 出力側に接続されている部品はpic、LCD、タクトスイッチと抵抗ぐらいなので多くても全体で約10mA程度の消費電流になります。 実際にブレッドボード上で回路を組んで9Vの電池を入力につないで出力電圧を測定してみたところ、ほぼ5Vとなったのですが、 1分ほどで0.01Vほど電池の電圧が下がっていくので、2~3日電池につないだまま放置していると5Vが供給できないどころか、電池がなくなってしまいました。 それから一度回路から外して電池を数日放置しておくと、元の電圧値とまではいかないものの6V程度電圧が回復しました。 そこで今度は単三電池3本を直列につないで約4.5Vにしてレギュレータを介さず同じ回路に直接つないだところ、 2~3日経過後もほぼ4.5Vのままちゃんと動作していました。なので電源回路部分に問題があると思うのですが、 なぜこんなに早く電池が消費されるのかまったく原因がわかりません。 消費電流に対してこの電池の減り方は異常だと思うのですが、何が原因だと考えられるのでしょうか? 0V近かった電池が、回路から外した後回復するという挙動もまったく意味がわかりません。 全体の回路図が載せられないので回答しづらいと思うのですが可能性でもいいので指摘していただくと助かります。

  • シュミットトリガ入力をデジタル入力とするには

    シュミットトリガ入力をデジタル入力とするには PIC16F873A のRA4 ポートですが、シュミットトリガ入力の為、最初の1回目はデジタル入力相当に動きますが、それ以降が不安定(というかそれがシュミットトリガの動作?)になってしまいます。 外部にどのような回路を構築すればデジタルI/O とできるのでしょうか? それともPIC のプログラミングで参照電圧?ヒステリシス範囲?を修正する事で解決できるのでしょうか? ちなみに入力はフォトインタラプタからのデジタル信号で、チャタリングはありません。 #別のI/O ポートに逃げる前に勉強しておきたいので。よろしくお願いします。

  • 三端子レギュレータについて

    三端子レギュレータ7805(1A)で12Vを5Vに変換するオーソドックスな回路を作りました。入力側に22μF、出力側に100μFの電解コンデンサ、入出力端子両方に0.1μFのセラミックコンデンサを取り付け、レギュレータの2倍くらいの大きさの方熱器を取り付けました。 5Vの出力ではPICマイコンを制御しているのですが、このレギュレータを高温になる場所で使用すると当然レギュレータの放熱効果が下がって出力できる電流量は減りますよね?ちなみに摂氏80℃で使用するとして、レギュレータでPICマイコンを動作させるのに充分な電力を取り出す事は可能でしょうか? (PICマイコンの動作温度は考えない)

  • PIC16F88 動作不良

    PIC初心者です。 PIC16F88を使用してスイッチ入力(Aポート)でAポートでリレーとBポートでスイッチのLEDの制御をしていました。 全16台中1台のみスイッチのLEDが点灯したまま動作しなくなりました。 電源を再投入しても復帰しません。 秋月電子のROMライターで、データーを読み込み、別のPIC16F88に書き込み、同基板にセットして電源を入れると、正常に動作します。 不具合のPICは再書き込みすると、動作してしまい原因がわからなくなりそうなので、再書き込みはしていません。 何が原因(考えられる要因)かわかる方、よろしくお願いします。