Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC10F322 + Pch-MOSFET + NPN-Tr 過放電防止のために自動OFFする回路

主なパーツ
 PIC10F322
 Pch MOSFET IRLML2246TRPbF
 NPN Transistor 2SC3325

回路図

参考にしたサイトはここ
D1は動作確認用のお決まりのLチカだ。
D2は電源が入っていることを示す。
R1は参考にした回路より大きめ、R2は小さめの値にした。
正直、良く分かってない。
SWはモメンタリのタクトスイッチだ。

回路の動作は、
 タクトスイッチを押すと、MOSFETがONになり電源が入る。
 PICが起動してRA2をHighに設定することで、電源ONの状態を保つ。
 PICのADCで、内部FVRと比較して電源電圧をチェックする。
 既定の電圧を下回ったら、RA2をLowにする。
 電源がOFFになる。
ざっとこんな感じだ。

とりあえず書いたメインの部分のプログラムは、たったこれだけだった。
LチカとADCの部分を除けば、たった5行だけ。

今回も、世間的には地味な、でも自分的には目から鱗の発見があったので書く。

PIC16F1827とかのFVRは、AD変換時の基準電圧(Vref)として使うことが出来る。
ちゃんとやるなら、外にシャントレギュレータでも置いて、Vrefに入力して基準としなければならない。
ある程度の精度の基準をPICが内蔵していれば、それを入力電圧と比較して、そこそこ正確な電圧値を得ることが出来るわけだ。
電源の電圧が多少変動しても、設定したFVR値を下回らない限りは基準電圧が一定に保たれ、AD変換に支障は無い。
以上が今までの理解。
PIC10F322でも同じつもりで、よく確認もせずに、電源を半分に分圧して、アナログ入力端子に接続した。
これで、電源電圧をFVRと比較してくれているものだと、てっきり思い込んでいた。

電源電圧を少しずつ下げていっても、AD変換の値には変化が無い。
予定の電圧を下回っても電源はOFFにならない。
PICの駆動可能電圧の下限を下回るあたりから、測定値が乱れはじめて、その後PICが止まる。
PICが止まってRA2がLowになるのでやっと電源が切れる。

毎度のことながら、すぐには間違いに気づかないので、データシートを見たり、配線をチェックしたりの無駄な時間がしばらく過ぎる。

で、ようやく、データシートの以下の部分に目が留まる。

しばらく理解できずに固まる。

外部から基準電圧はつなげません。
基準電圧として使えるのはVDDだけです。
FVRはADCの入力として使えるだけで、基準電圧としては使えません。

上に書いた、PIC16F1827での感覚しかないので、「だめじゃん、使えないじゃん。」と途方に暮れる。

で、目から鱗は、そのままFVRを測定すればいい、ということ。
VDDが変化すると、基準電圧が変化することになる。
一定の電圧であるFVRの測定値も、それに引きずられて変化するわけだ。
つまり、外からの電圧変化を正確に測るのには使えないが、電源電圧の変化はとらえることが出来る。
もともと、そういう使い道なのかねえ。
今日の段階では、他に用途を思いつかない。
いずれにしても、今回の使用目的には問題なく使えるということだ。
しかも、FVRはAD変換のチャンネルに内部で接続されるので、ピンが1本節約できる。
そういうわけで、プログラムの条件文も、こんな書き方になる。
if(i>174)
電圧は下がるのに、測定値がある値を超えたら終了という風に、大小が逆になる。

FVRを2.048Vに設定し、電源電圧(=Vref)が3Vを切ったらという条件で計算すると174という値が出てくる。
2.048 ÷ 3 × 256 = 174.8
初めが3.6Vだとすると146なので、それから徐々に数字が増えていき、174を超えたらストップだ。

PIC10F322過放電防止回路 + 18650 + ESP8266」へ続く。

ごく普通のLIR2032駆動のLEDライトに組み込んだ。
『久しぶりにプリント基板を2枚作った。』の続き。

このエントリーをはてなブックマークに追加

Posted under: PIC10F322


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.