デバイスの消費電力を測定する

Summit SMB347 や Maxim MAX17050 などの電池残量ゲージ(多くの Nexus デバイスで使用可能)を搭載した Android デバイスでは、デバイスの消費電力を測定できます。外部測定機器を利用できない場合、またはデバイスに接続するのに不都合がある場合(モバイルで使用中の場合など)は、システム内の計器を使用します。

デバイスでサポートされている特性に応じて、瞬間電流、バッテリー残量、テストの開始時と終了時のバッテリー容量などを測定できます。(下記を参照)。デバイスの電力測定で最良の結果を得るには、同じ残量ゲージと同じ電流検出抵抗器を備えた同じデバイスタイプを使用して、長時間の A/B テストを実施します。また、各デバイスのテスト開始時の電池容量が同じであることを確認します。これは、電池の放電曲線の異なるポイントで残量ゲージの動作に違いが生じることを避けるためです。

テスト環境を同一にしても、測定値の絶対精度が高くなるとは限りません。しかし、残量ゲージと検出抵抗器に特有の誤差のほとんどは複数回のテスト実行で一貫しているので、同一のデバイスを比較することは有益です。異なる構成で複数回テストを実行して、構成による大きな違いと相対的な消費電力を確認することをおすすめします。

消費電力を読み取る

消費電力のデータを読み取るには、テストコードに API への呼び出しを挿入します。

import android.os.BatteryManager;
import android.content.Context;
BatteryManager mBatteryManager =
(BatteryManager)Context.getSystemService(Context.BATTERY_SERVICE);
Long energy =
mBatteryManager.getLongProperty(BatteryManager.BATTERY_PROPERTY_ENERGY_COUNTER);
Slog.i(TAG, "Remaining energy = " + energy + "nWh");

使用可能なプロパティ

Android は、電池残量ゲージの次のプロパティをサポートしています。

BATTERY_PROPERTY_CHARGE_COUNTER   Remaining battery capacity in microampere-hours
BATTERY_PROPERTY_CURRENT_NOW      Instantaneous battery current in microamperes
BATTERY_PROPERTY_CURRENT_AVERAGE  Average battery current in microamperes
BATTERY_PROPERTY_CAPACITY         Remaining battery capacity as an integer percentage
BATTERY_PROPERTY_ENERGY_COUNTER   Remaining energy in nanowatt-hours

ほとんどのプロパティは、似た名前を持つカーネルの power_supply サブシステム属性から読み取られます。ただし、特定のデバイスで使用できる正確なプロパティ、プロパティ値の分解能、更新頻度は以下の要素に応じて異なります。

  • 残量ゲージ ハードウェア(Summit SMB347 や Maxim MAX17050 など)
  • 残量ゲージとシステムの接続(外部電流検出抵抗器の値など)
  • 残量ゲージのチップ ソフトウェア構成(カーネル ドライバ内で平均電流消費を計算する間隔として選択された値など)

詳細については、Nexus デバイスで利用可能なプロパティをご覧ください。

Maxim 製の残量ゲージ

Maxim 製の残量ゲージ(MAX17050、BC15)は、長時間にわたって電池の充電状態を測定する場合、クーロン カウンタのオフセット測定値に応じて補正を行います。短時間の測定(電力消費計測テストなど)では残量ゲージは補正を行わないため、電流測定値が小さすぎるとオフセットが誤差の主な原因になります(なお、長時間の測定でも、オフセットによる誤差を完全に排除することはできません)。

標準的な 10 ミリオーム検出抵抗器の設計では、オフセット電流は 1.5 mA より良好であるはずです。つまり、測定値は +/-1.5 mA になります(プリント基板レイアウトもこの変動に影響する可能性があります)。たとえば、大量の電流(200 mA)を測定する場合、次の誤差が予想されます。

  • 2 mA(残量ゲージのゲイン誤差による 200 mA の 1% のゲイン誤差)
  • +2 mA(検出抵抗器の誤差による 200 mA の 1% のゲイン誤差)
  • +1.5 mA(残量ゲージからの電流検出のオフセット誤差)

合計誤差は 5.5 mA(2.75%)になります。これを中規模の電流(50 mA)に当てはめると、同じ誤差のパーセンテージで合計誤差は 7% になり、小規模の電流(15 mA)に当てはめると +/-1.5 mA で合計誤差は 10% になります。

最良の結果を得るには、20 mA を超える測定をおすすめします。測定値のゲイン誤差は系統的かつ反復可能であるため、複数のモードでデバイスをテストすることで、クリーンな相対測定結果を得ることができます(1.5 mA のオフセットの場合は除きます)。

+/-100 uA の相対測定では、必要な測定時間は次の条件によって異なります。

  • ADC サンプリング ノイズ: MAX17050 は、通常の工場出荷時の構成の場合、ノイズにより +/-1.5 mA の変動がサンプル間で発生し、各サンプルは 175.8 ミリ秒で送信されます。1 分間のテスト時間枠ではおおよそ +/-100 uA、6 分間のテスト時間枠では 100 uA 未満のクリーンな 3 シグマノイズ(33 uA で 1 シグマノイズ)が発生すると予想されます。
  • 負荷変動に対応するためのサンプルのエイリアシング: 変動により誤差が拡大するため、負荷に特有の変動があるサンプルでは、長時間のテスト時間枠を設けます。

サポートされている Nexus デバイス

Nexus 5
モデル Nexus 5
残量ゲージ Maxim MAX17048 残量ゲージ(ModelGauge、クーロン カウンタなし)
プロパティ BATTERY_PROPERTY_CAPACITY
測定値 残量ゲージは、電池の充電状態(分解能は %/256、つまり電池のフル容量の 256 分の 1)以外の測定はサポートしていません。
Nexus 6
モデル Nexus 6
残量ゲージ Maxim MAX17050 残量ゲージ(Maxim ModelGauge 調整付きクーロン カウンタ)および 10 ミリオーム電流検出抵抗器。
プロパティ BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
測定値 CURRENT_NOW の分解能は 156.25 uA、更新間隔は 175.8 ミリ秒。
CURRENT_AVERAGE の分解能は 156.25 uA、構成可能な更新間隔は 0.7 秒~6.4 時間(デフォルトは 11.25 秒)。
CHARGE_COUNTER(累積電流、非拡張精度)の分解能は 500 uAh(未加工のクーロン カウンタ読み取り値、クーロン カウンタ オフセットに応じた残量ゲージによる調整なし、空の補正を含む ModelGauge m3 アルゴリズムからの入力あり)。
CHARGE_COUNTER_EXT(カーネルの拡張精度)の分解能は 8 nAh。
ENERGY_COUNTER は公称電圧 3.7 V で CHARGE_COUNTER_EXT
Nexus 9
モデル Nexus 9
残量ゲージ Maxim MAX17050 残量ゲージ(Maxim ModelGauge 調整付きクーロン カウンタ)および 10 ミリオーム電流検出抵抗器。
プロパティ BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
測定値 CURRENT_NOW の分解能は 156.25 uA、更新間隔は 175.8 ミリ秒。
CURRENT_AVERAGE の分解能は 156.25 uA、構成可能な更新間隔は 0.7 秒~6.4 時間(デフォルトは 11.25 秒)。
CHARGE_COUNTER(累積電流、非拡張精度)の分解能は 500 uAh。
CHARGE_COUNTER_EXT(カーネルの拡張精度)の分解能は 8 nAh。
ENERGY_COUNTER は公称電圧 3.7 V で CHARGE_COUNTER_EXT
累積電流の更新間隔は 175.8 ミリ秒。
ADC は 175 ミリ秒の量子化でサンプリング(サンプリング間隔は 4 ミリ秒)。デューティ サイクルを調整可能。
Nexus 10
モデル Nexus 10
残量ゲージ Dallas Semiconductor DS2784 残量ゲージ(クーロン カウンタ)および 10 ミリオーム電流検出抵抗器。
プロパティ BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
測定値 電流測定(瞬間および平均)の分解能は 156.3 uA。
CURRENT_NOW の瞬間電流更新間隔は 3.5 秒。
CURRENT_AVERAGE の更新間隔は 28 秒(構成不可)。
CHARGE_COUNTER(累積電流、非拡張精度)の分解能は 625 uAh。
CHARGE_COUNTER_EXT(カーネルの拡張精度)の分解能は 144 nAh。
ENERGY_COUNTER は公称電圧 3.7 V で CHARGE_COUNTER_EXT
更新間隔はすべて 3.5 秒。