2-1:XLPファミリ

Microchip Technologyは、最近すべての製品で低消費電力化を強力に進めています。その中でもPICマイコンは「XLPファミリ」(XLP:Extreme Low Power)として極低消費電力を実現した製品を矢継ぎ早に開発しています。

今回はこのXLPファミリの中から、「エンハンスドミッドレンジファミリ」と呼ばれている8ビットの「PIC16LF1937」を使って、どの程度まで消費電力を減らせるかを試してみました。

このPIC16LF1937の消費電流の規格値は表1のようになっています。比較のためPIC18ファミリのXLP対応デバイスと、従来品の「PIC16F887」のデータも入れています。従来品と比べて全体的に大幅な低消費電力化が実現されていることが分かります。

表1 XLP対応PICの消費電流(Vdd=3.0Vのとき)

エンハンスドミッドレンジファミリというのは、これまでの8ビットのPIC16ファミリのアーキテクチャを大幅にバージョンアップしたもので、低消費電力化だけでなく、メモリ空間は4倍、命令実行速度は1.6倍、内蔵モジュールの強化などなど、多くの点で機能アップしています。いずれもアプリケーションの機能アップによる大規模化と、C言語によるプログラム開発に対応させたものと考えて良いかと思います。

このファミリの製品で現在リリースされているものは表2のようになっています。

表2 エンハンスドファミリ一覧

2-2:製作する省電力時計の概要

このファミリからPIC16LF1937を使って、できるだけ低消費電力の時計を製作してみました。コイン電池1個で1年以上動作し、月差1分程度の時計が目標です。

外観は写真1のような基板状態ですが、何らかのケースに組み込めば立派に時計として使うことができます。

写真1 省電力時計

この時計の全体構成は図1のような簡単な構成にしました。

図1 時計の全体構成

まず、電源は3Vのコイン電池で最も入手しやすいCR2032を使うことにします。したがって電源電圧は3Vということになりますので、PICには低電圧タイプでレギュレータを内蔵していないPIC16LF1937を使います。

表示素子には、一番消費電流を少なくできるセグメント式の数字表示の液晶パネルを使います。このPICには最大96セグメントを駆動できる液晶パネル制御モジュールが内蔵されていますから、液晶パネルを直接制御することができます。

次に時計用クロック源ですが、これで時計の精度が決まってしまいます。単純な32.768kHzのクリスタル発振では月差1分以下を確保するのは困難で調整方法も難しくなります。そこで精度が保障された独立の発振モジュールICを使うことにしました。

発振モジュールICの消費電流が多くては意味がありませんから、できるだけ低消費電力のものということで、エプソントヨコムの「RTC-8564」という発振モジュールを使いました。通常状態での消費電流が2μAと少なく、発振周波数精度が25℃で月差1分相当となっていますので、温度変化によるズレが出る可能性はありますが、室内で使う前提であれば許容範囲です。

2-3:低消費電力化の工夫

表示に液晶パネルを使いましたから、時刻を常時表示させても表示素子の駆動で1μA程度の消費電流とすることができます。これで一番効果的に消費電流を減らすことができました。

発振モジュールICはI2Cインタフェースで接続して設定ができますが、非アクセス時の消費電流が2μA程度と非常に少ないので、こういう目的には便利に使えます。発振モジュール自身で時刻カウント機能を内蔵していますが、カウンタ読み出しのためにI2Cでアクセスする際に数100μAの消費電流となってしまいますので、この内蔵カウンタは使わないことにし、PIC内部のプログラムでカウントすることにしました。

この発振モジュールICから1秒パルスが出力されますので、PICは常時スリープ状態とし、1秒パルスを状態変化割り込みとして入力します。これで1秒ごとの立ち上がりエッジ変化でウェイクアップさせ、時刻カウントを実行し表示更新するようにします。

PIC自身は、内蔵クロックで動作させ、常時はスリープ状態とし、1秒ごとの割り込みでウェイクアップして時刻更新するだけの動作とします。液晶パネルの制御はスリープ中でも動作しますから、PICがスリープでも表示は維持されます。これで、PICがスリープ中はLCDモジュールだけが動作しているだけの状態になりますから、最低の消費電流で動作させることが可能になります。

これらの結果から、消費電流の見積もりは表3のようになり、電流は図2のように、大部分の時間がスリープ中の極少電流となり、ウェイクアップするごとに間欠的に大きな電流が流れることになります。

表3 消費電流の見積もり値

したがって、ウェイクアップごとにどの程度のプログラム実行時間がかかるかで、図2の式のように全体の平均消費電流(Iav)が決まることになります。

PICの命令実行中の消費電流(Ie)はクロック周波数に比例して増加しますから、クロック周波数により図2の面積が変化します。これをクロック周波数ごとにチェックして面積が最小となるクロック周波数を決めれば最小の平均消費電流となることになります。

電源はCR2032ですから、電池容量は220mAhですので、1年間動作させるとすると、220mA÷365÷24=25μAとなり、平均消費電流は25μA以下が目標値ということになります。表3の値であればクリアできそうです。

図2 クロック周波数と消費電力