アプリ版:「スタンプのみでお礼する」機能のリリースについて

PICマイコン16F84Aを2個使った回路を組みました。
そのうち1個だけが動作が非常に不安定です。
回路構成は添付のようなものです。
P1のRBポートの一つでトランジスタ2SC1815を駆動し、小型リレー(5V、0.5A)をスイッチ代わりにしてP2のマイコンの電源を制御するというものです。
P1からの指示に対しP2が動くという回路を組みたいと思い考えたものです。

こんなことしなくてもアセンブラで「btfsc」命令を利用して入力待ちするか、割り込みを使えよと言われそうですが、それができない事情があります。
P2のポートA5個を全て外部からの入力用に、ポートBの8個を全てLEDの点灯用に使用しており外部からの入力を受け付ける余裕がハード的に無いのです。

ちなみにP2のプログラムはポートAにつないだ切り替えスイッチでいずれかのポートに6V入力が入るとそれに応じてポートBの8個のLEDの点灯パターンが切り替わるという感じのもので、このマイコンP2を起ち上げるタイミングをP1とリレーで取ろうと考えたのです。

絵には書いてませんがマイコンには両方とも0.1μFのパスコンを取り付けてありますし、リレーには逆起電流防止のダイオードも入れてあります。また、入力に設定したP2のポートAも全てプルダウン抵抗を取り付けてあります

この構成でP2が正常に動作するときもあるのですが、数回に1回程度全然プログラムとは違うまるで壊れたような?点灯をします。P1のほうは完璧に動作しています。
6Vの電源は安定化電源12V30A→秋月のレギュレーターキットMAX5Aで6Vにしたものです。
不安定な状態の時はP2で外部からいくらリセットをかけても直りません。
という事はリレーによって電源が入る時のチャタリングが原因のような気もします。
(電源の立ち上がりが不安定で暴走状態で動き出した場合はリセットも効かないものなのでしょうか?)

調べてみるとPICの入力ピンのチャタリング対策としてインバーターICと抵抗、コンデンサで回避するという方法もあるようですが、これは今回のような電源部分(既に勝手に決めつけてますが)の対策にも使えるのでしょうか?

よろしくお願いします。

「PICマイコンの動作が不安定なのですが・」の質問画像

質問者からの補足コメント

  • すみません書き忘れてましたが、P2の6Vの入力先は入力ピンではなくVDDです。
    VDDへの電源をリレーで制御したいのです。

      補足日時:2016/12/25 20:35

A 回答 (5件)

リレーを使うことが間違いだと思う。

わたしならそんな奇妙な設計は絶対しません。#2と同じで、MCLRを使えばいいのでは。
    • good
    • 2

P2のVDD、リレーの接点経由で供給してるので接点のチャタリングを考えるとパスコン0.1uFだけじゃ足らないかもしれません。


リレーの接点から10Ω程度の抵抗を通してからVDDに接続し、VDDとGND間に0.1uFのセラミックCと100uF程度の大容量アルミ電解コンデンサを追加しましょう。
抵抗10Ωはリレーの接点保護用です。
    • good
    • 0

動作不安定とのことですが、完全な暴走状態でなく何らかの反応はするが、特にタイミングがおかしい。

といった症状ではないでしょうか。タイマー割り込みを使っていませんか?
小生も16F84Aではありませんが似た症状で1週間悩んだことがあります。
最終的に何が効いたのかいまだにはっきりしませんがタイマー割り込みの初期設定をいじくっているうちに直ったように思えます。
推定症状は以下のようなこと。(16F84Aに置き換えて書きます)
16F84Aのタイマー割り込みはタイマーカウンターのオーバーフローだけですね。マニュアルでは FFh → 00h の変化で割り込むとなっています。しかし 00h であれば何度でも割り込むのではないかと思えるのです。つまりエッジトリガーではなくレベルトリガーではないかと。
一般に初期化の際には ①割込みを禁止 ②割込みフラグをクリアー ③各種設定 ④割込みスタート とするはずです。
ところがレベルトリガーなら②でフラグをクリアーしてもすぐに再セットされ割り込みが掛ろうとします。これがどこかに影響して正しい割り込みが掛らないのかもしれません。(そんなことでは困るのですがもしかしたらPICのバグなのかもしれません)
そこで②の前にタイマーカウンターを 00h 以外(例えば 01h )にしてみてください。そうすればレベルトリガーであったとしても割込みフラグは再セットされません。(小生の場合、明確でないもののこれで直った可能性が大)

命令を2つほど追加すればよいはずです。特効薬にならないかもしれませんがやってみてください。

ちょっと余計なこと
電源のパスコンは0.1μでは少ないと思います。10μ程度の電解も入れましょう。チャタリングの影響が減ります。もっともリレー接点が傷みやすいですが。
Aポートの入力でLEDの点灯の仕方を変えているそうですが、入力の全部がLowレベルならLEDは光らないということにしてはどうですか?

もうひとつ、回路図によるとVDDはリレーでON/OFFしていますがポートのプルアップ抵抗はどうなのでしょう? 出力のLEDからの流れ込みも。
もしかしてリレーがOFFでもプルアップ抵抗を通じて微電流が流れCPUが死にきれてないのかもしれません。可能性のひとつとして検討してください。
    • good
    • 0

回答ではありませんが、


電源は繋いだままMCLRを制御すればよいのでは?
    • good
    • 0

P2の入力ポートに6V印加されてたらリレー切ってもOFF状態にならないんじゃないでしょうか。


プルダウンはされてても直列に抵抗とか入れてますか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!