【ULPWUモジュールの概要】
ULPWU(Ultra Low-Power Wake-Up)モジュールとは、極低消費電流でPICを使いたいとき、
有効な周期的ウェイクアップ手段を提供するモジュールです。
極低消費電流でPICを使う場合にはスリープモードを使います。そしてスリープからウェイクアップ
させるためウォッチドッグタイマを使いますが、このためにはスリープ中もウォッチドッグタイマだけは
動作させておく必要があります。
しかし、このウォッチドッグタイマは、少ないものでも数μAの電流を消費します。この電流値では
消費電力が大き過ぎるという極低消費電流の用途もあります。
このような用途にULPWUモジュールを使うと、スリープ中の消費電流を1μA以下にすることが
できます。
このULPWUモジュールが実装されているPICは、現状では下記のような最新の少ピンPICですが
順次他の少ピンPICにも実装される計画のようです。
《ULPWUモジュールの実装されているPIC》
・PIC12F635 ・PIC12F683
・PIC16F636 ・PIC16F684 ・PIC16F688
・PIC16F631* ・PIC16F677* ・PIC16F685* ・PIC16F687* PIC16F689*
(*は開発中)
【ULPWUモジュールの構成】
ULPWUモジュールの内部構成は下図のようになっています。
動作は下記の順序で行われます。
(1) IOピンを出力モードにしてHighを出力する
これで外部のコンデンサC1は電源電圧まで充電される。抵抗R1は、このときの
充電電流が25mAを超えないようにするための電流制限抵抗です。
(2)一定時間後、ULPWUEビットを1にしてからIOピンを入力モードにし、状態変化の
割り込みを許可しておきます。
これで、定電流回路を通してコンデンサC1の放電が始まります。
(3)スリープモードにします。
スリープ中の間もC1の放電は続けられます。このときの消費電流は
スリープ時の電流とULPWUモジュールの消費電流だけになります。
このULPWUモジュールの消費電流は、75nA〜160nA程度で非常に小さくなって
います。 (正確な電流値は各デバイスのデータシートを参照のこと)
(4)C1の端子電圧が、コンパレータの入力になっていて、スレッショルド電圧Vtと
常時比較されており、Vt以下になると、Interrupt on Changeの割り込みが発生
し、ウェイクアップします。
(5)割り込み許可されていれば、4番地にジャンプし、割り込み禁止であれば
SLEEP命令の次の命令を実行します。
【インターバル時間】
ULPWUモジュールを使った時の周期起動のインターバル時間は、下記式で求めることが
できます。
しかしこの時間は、温度により変動しますので注意が必要です。
インターバル時間(T) = (電源電圧 − Vt) × C1 ÷ Isink
例えば電源電圧:3V スレッショルド電圧(Vt):0.6V Isink:140nA C1:0.001μF とすれば
R1は200Ω程度なので無視できるので、
T(sec) = (3 − 0.6) × 0.001×10の-6乗 ÷ 140×10の-9乗 = 2.4 ÷ 140 = 17.1msec
となります。
さらに例えば、コンデンサC1が0.01μFであれば約170msec 0.1μFであれば約1.7秒となります。
しかし、実際には、コンデンサの漏れ電流による影響が大きく、計算値よりかなり短い時間となります。
従ってコンデンサには、漏れ電流の少ない、ポリエステルフィルムコンデンサや、ポリプロピレン
コンデンサが適しています。
さらに、基板の漏れ電流の影響も無視できませんので、できるだけ配線を短く、基板を洗浄して
表面をきれいにしておく必要があります。
【プログラミング方法】
ULPWUモジュールを使うときの基本プログラミングパターンは下記のようになります。