PICと電池駆動

ちょっと本業で、ここ数か月開発の脇道に入ってました。

PIC12LF1572でアルカリ乾電池3V駆動の装置を作ってました。

p1440490_

これまでの設計では基本的に電源は必ずDC供給でしたので、乾電池駆動の開発は初チャレンジです。
LFタイプのPICはスリープ時はとても消費電力が小さく(Min25nA@3V)、ちょっとしたプルアップ電流よりも小さくなります。
←25nAは100MΩで3Vのプルアップをグランドに接続しているときよりも小さい。
CPU内のクロックが完全停止するモードでのスリープでの電流ですが、この少なさはすごいです。

低消費設計ためには基本的に常にスリープで待機する必要があります。
スリープの解除は、I/Oポートの状態遷移やタイマー1によるオーバーフローによる方法などが可能です。

ポートは遷移割り込みを用いることで監視します。
Picのスリープ解除割り込みはGIE(総合割り込みENABLE)を禁止することで、割り込み信号が生成された際に、割り込みは発生せず、単純に次のインストラクションから実行を再開します。←イベントは単にスリープの解除に利用される。
次のインストラクションといっても、スリープ中はクロック停止しているので、クロック再起動後の実行となりますが。

またタイマー1にチップ内部の31KHzクロックを供給することで、スリープ中でも16bitカウンタが低消費電力でカウントします。31KHz16bitで最大約2秒までのタイマーが構成できます。
クロックにx8プリスケーラを用いる場合、最大16秒までいけそうです。
これにより、何かのタイミングで動作する場合であっても待機ループは省エネで実行できます。←CのWaitはCPUクロックを消費するので、電池が消費されます。

CPUクロックはINTOSC 500KHzを用い、消費電力を少しでも抑えたいので、すべてのPLLは停止です。消費電流的に、待機時は安物テスターではほとんど測定限界以下です。
マニュアルの消費電流から計算すると、CPUクロック速度が上がるほど電力効率が上がるので、無駄なループが全くない場合、クロックを上げたほうがパフォーマンスは上がるようです。必要な処理をさっさと済ませてスリープする。

CPUクロックと消費電力の関係はマニュアルから抜粋すると以下となります。
HFINTOSC = 32MHz 3V:  typ2.0mA (max2.4mA)  ※1.8V動作不可

HFINTOSC = 16MHz 3V:  typ1.1mA (max1.2mA)
HFINTOSC = 16MHz 1.8V:  typ0.7mA (max0.8mA)

HFINTOSC = 8MHz 3V:   typ0.7mA (max0.9mA)
HFINTOSC = 8MHz 1.8V: typ0.5mA (max0.6mA)

MFINTOSC = 500KHz 3V:  typ133μA (max176μA)
MFINTOSC = 500KHz 1.8V:  typ111μA (max151μA)

LFINTOSC = 31KHz 3V:   typ7.3μA (max12μA)
LFINTOSC = 31KHz 1.8V:  typ5.5μA (max11μA)

リセット処理など自分で操作しないと思ったように低消費電力では動かないと思いますので、プログラムはすべてアセンブラで書いています。

 

またCPUは1.8Vまで動作とありますが、安定化電源でなく電池駆動の場合、デバイスを動かす際の電流で電池電圧がドロップするのでそこそこ高めであっても限界がありそうです。

使用する電池種類による放電電圧特性が重要で、アルカリ電池やマンガン電池は残容量に合わせて電圧が下がってくるために終止電圧0.9Vまで電圧が下がり続けることを意識する必要があります。

また、ニッケル水素やリチウム系は結構ぎりぎりまで電圧が維持され、容量がなくなる少し手前で電圧が急激にドロップします。

今回の装置は結構大きな音や光を出すので、音が出る際、瞬間的に最大100mA位消費するので、単三2本でおよそ2.3V以下まで低下すると、動作時にBrown-out Resetに引っかかりダメっぽいです。

低消費電力で済むセンサなどのデバイスの駆動であれば、もっと1.8Vのぎりぎりまで動くかもしれませんが、まあLEDのVfも2.2Vなので、この辺が回路の最低電圧として良いところでしょうか。DC-DC昇圧も入っていませんので。

気づいた点として、Brown-outResetにはSleep中の消費電力を抑えるLowPowerモードがありますが、確かにSleep中でも低消費ですがBOR検出電圧がかなり高い(typ2.1V 1.8-2.5V)ため、アルカリ乾電池での使用には注意が必要です。たぶん3V系のコインリチウムを想定していると考えます。

今回はLPBORは用いずに、Sleep中のBORは禁止モードで使用しました。

 

カテゴリー: PIC パーマリンク