「電池寿命を延ばしたい? じゃあ、使わないときはスリープさせればいいよね」
もし、あなたがそう思っているなら、この記事はあなたのためのものです。そして、あなたの製品の電池寿命は、本来あるべき姿の数分の一かもしれません。
ウェアラブルデバイスやスマートセンサーにおいて、バッテリー駆動時間は製品の競争力を決める最強の武器です。ユーザーは、毎日充電しなければならないスマートウォッチよりも、1週間、1ヶ月持つものを好みます。工場の片隅に設置されたセンサーが、10年間電池交換なしで動き続けること。それが「売れる製品」の絶対条件です。
しかし、超低消費電力設計の世界は、「スリープさせればOK」というほど甘くはありません。1μA、時にはnAレベルの電流を削り出すための、ハードウェアとソフトウェアの両面からのアプローチが必要です。それは、データシートの裏側にある、経験則と洞察力がモノを言う「職人芸」の領域なのです。
この記事では、数々の超低消費電力製品を世に送り出してきた経験に基づき、電池寿命を劇的に延ばすための極意を伝授します。
1. ペリフェラルのクロックゲート制御の落とし穴
「使わないペリフェラルのクロックを止めれば、消費電力は下がる」。これは組み込み開発の常識です。クロックゲート(Clock Gating)は、ダイナミック電力を削減するための最も基本的な手法です。しかし、ここに大きな落とし穴があります。
落とし穴①:ゲートを閉じたつもりが…
「I2Cを使わないから、I2Cのクロックゲートを閉じるレジスタをセットした。よし、これでOK」。
本当にそうでしょうか? CPUが認識している「ペリフェラルの無効化」と、ハードウェア的に「完全に電源が落ちている状態」は異なります。多くのマイコンでは、クロックゲートを閉じても、以下の要素が残っている場合があります。
- 内部ロジックのリーク電流: ロジック回路は、クロックが止まっていても、電源が供給されている限りnAレベルのリーク電流を消費します。
- レジスタの値保持電力: レジスタの状態を保持するための電力が必要です。
- アナログ回路のバイアス電流: ADCやコンパレータなどのアナログペリフェラルは、クロックとは無関係に、動作状態であればバイアス電流を消費し続けます。
極意: クロックゲートだけでなく、パワーゲート(Power Gating)が利用可能か、データシートを隅々まで読み込んでください。本当に使わない期間が長いペリフェラルは、電源そのものを遮断する必要があります。
落とし穴②:ゲート制御自体の消費電力
「こまめにクロックゲートを On/Off すれば、最も効率が良い」。
理論上はそうですが、現実にはゲート制御自体も電力を消費します。クロックを止める、再開する際、安定するまでの待ち時間(オーバーヘッド)や、同期回路での一時的な電力消費が発生します。あまりに頻繁にゲートを On/Off すると、逆に消費電力が増えてしまう「ゲート損」の状態に陥る可能性があります。
極意: システム全体の挙動を把握し、ペリフェラルの使用頻度、復帰時のオーバーヘッドを考慮した上で、クロックゲート制御の閾値を設定してください。
2. リーク電流を特定するための「オシロスコープ+電流プローブ」の波形解析術
超低消費電力設計において、最大の敵は「スタティック電力」、すなわちスリープ時のリーク電流です。ダイナミック電力は、動いている時間を短くすれば減らせますが、リーク電流はスリープ中、常に電池をむしばみ続けます。
しかし、このリーク電流は、nA〜μAレベルと非常に小さいため、一般的なマルチメータでは測定が困難です。さらに、システムはスリープ、ウェイクアップ、タスク実行と、ダイナミックに状態が変化するため、静的な測定では本当の姿は見えてきません。
ここで登場するのが、高感度電流プローブ(nAレベルに対応)とオシロスコープの組み合わせです。これは、リーク電流という「見えない敵」を可視化するための最強の武器です。
職人芸的解析術のポイント
- 高感度電流プローブの選択: nAレベルを測定できる専用の電流プローブが必要です。安価なAC/DCプローブでは、ノイズに埋もれてリーク電流は見えません。
- オシロスコープの設定:
- サンプリングレート: 十分に速く設定し、復帰時の過渡電流(突入電流、ラッシュ電流)を捉える。
- トリガ: ウェイクアップ信号や、特定のI/O操作をトリガに設定し、特定の状態における電流波形をピンポイントで観測する。
- AC結合: スリープ中の「フラットな部分」の微小な電流変化を拡大して見る場合、AC結合で大きな直流分をカットし、微小な変動を観測する手法があります(直流電流値は別途測定)。