Measuring Device Power

You can determine device power consumption for Android devices that include a battery fuel gauge such as a Summit SMB347 or Maxim MAX17050 (available on many Nexus devices). Use the in-system gauge when external measurement equipment is not available or is inconvenient to connect to a device (such as in mobile usage).

Measurements can include instantaneous current, remaining charge, battery capacity at test start and end, and more depending on the supported properties of the device (see below). For best results, perform device power measurements during long-running A/B tests that use the same device type with the same fuel gauge and same current sense resistor. Ensure the starting battery charge is the same for each device to avoid differing fuel gauge behavior at different points in the battery discharge curve.

Even with identical test environments, measurements are not guaranteed to be of high absolute accuracy. However, most inaccuracies specific to the fuel gauge and sense resistor are consistent between test runs, making comparisons between identical devices useful. We recommend running multiple tests in different configurations to identify significant differences and relative power consumption between configurations.

Reading power consumption

To read power consumption data, insert calls to the API in your testing code.

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");

Available properties

Android supports the following battery fuel gauge properties:

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

Most properties are read from kernel power_supply subsystem attributes of similar names. However, the exact properties, resolution of property values, and update frequency available for a specific device depend on:

  • Fuel gauge hardware, such as a Summit SMB347 or Maxim MAX17050.
  • Fuel gauge-to-system connection, such as the value of external current sense resistors.
  • Fuel gauge chip software configuration, such as values chosen for average current computation intervals in the kernel driver.

For details, see the properties available for Nexus devices.

Maxim fuel gauge

When determining battery state-of-charge over a long period of time, the Maxim fuel gauge (MAX17050, BC15) corrects for coulomb-counter offset measurements. For measurements made over a short period of time (such as power consumption metering tests), the fuel gauge does not make corrections, making the offset the primary source of error when current measurements are too small (although no amount of time can eliminate the offset error completely).

For a typical 10mOhm sense resistor design, the offset current should be better than 1.5mA, meaning any measurement is +/-1.5mA (PCBoard layout can also affect this variation). For example, when measuring a large current (200mA) you can expect the following:

  • 2mA (1% gain error of 200mA due to fuel gauge gain error)
  • +2mA (1% gain error of 200mA due to sense resistor error)
  • +1.5mA (current sense offset error from fuel gauge)

The total error is 5.5mA (2.75%). Compare this to a medium current (50mA) where the same error percentages give a total error of 7% or to a small current (15mA) where +/-1.5mA gives a total error of 10%.

For best results, we recommend measuring greater than 20mA. Gain measurement errors are systematic and repeatable, enabling you to test a device in multiple modes and get clean relative measurements (with exceptions for the 1.5mA offset).

For +/-100uA relative measurements, required measurement time depends on:

  • ADC sampling noise. The MAX17050 with its normal factory configuration produces +/-1.5mA sample-to-sample variation due to noise, with each sample delivered at 175.8ms. You can expect a rough +/-100uA for a 1 minute test window and a clean 3-sigma noise less than 100uA (or 1-sigma noise at 33uA) for a 6 minute test window.
  • Sample Aliasing because of load variation. Variation exaggerates errors, so for samples with variation inherent in the loading, consider using a longer test window.

Supported Nexus devices

Nexus 5

ModelNexus 5
Fuel GaugeMaxim MAX17048 fuel gauge (ModelGauge™, no coulomb counter)
PropertiesBATTERY_PROPERTY_CAPACITY
MeasurementsThe fuel gauge does not support any measurements other than battery State Of Charge to a resolution of %/256 (1/256th of a percent of full battery capacity).

Nexus 6

ModelNexus 6
Fuel GaugeMaxim MAX17050 fuel gauge (a coulomb counter with Maxim ModelGauge™ adjustments), and a 10mohm current sense resistor.
PropertiesBATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
MeasurementsCURRENT_NOW resolution 156.25uA, update period is 175.8ms.
CURRENT_AVERAGE resolution 156.25uA, update period configurable 0.7s - 6.4h, default 11.25 secs.
CHARGE_COUNTER (accumulated current, non-extended precision) resolution is 500uAh (raw coulomb counter read, not adjusted by fuel gauge for coulomb counter offset, plus inputs from the ModelGauge m3 algorithm including empty compensation).
CHARGE_COUNTER_EXT (extended precision in kernel) resolution 8nAh.
ENERGY_COUNTER is CHARGE_COUNTER_EXT at nominal voltage of 3.7V.

Nexus 9

ModelNexus 9
Fuel GaugeMaxim MAX17050 fuel gauge (a coulomb counter with Maxim ModelGauge™ adjustments), and a 10mohm current sense resistor.
PropertiesBATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
MeasurementsCURRENT_NOW resolution 156.25uA, update period is 175.8ms.
CURRENT_AVERAGE resolution 156.25uA, update period configurable 0.7s - 6.4h, default 11.25 secs.
CHARGE_COUNTER (accumulated current, non-extended precision) resolution is 500uAh.
CHARGE_COUNTER_EXT (extended precision in kernel) resolution 8nAh.
ENERGY_COUNTER is CHARGE_COUNTER_EXT at nominal voltage of 3.7V.
Accumulated current update period 175.8ms.
ADC sampled at 175ms quantization with a 4ms sample period. Can adjust duty cycle.

Nexus 10

ModelNexus 10
Fuel GaugeDallas Semiconductor DS2784 fuel gauge (a coulomb counter), with a 10mohm current sense resistor.
PropertiesBATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
MeasurementsCurrent measurement (instantaneous and average) resolution is 156.3uA.
CURRENT_NOW instantaneous current update period is 3.5 seconds.
CURRENT_AVERAGE update period is 28 seconds (not configurable).
CHARGE_COUNTER (accumulated current, non-extended precision) resolution is 625uAh.
CHARGE_COUNTER_EXT (extended precision in kernel) resolution is 144nAh.
ENERGY_COUNTER is CHARGE_COUNTER_EXT at nominal voltage of 3.7V.
Update period for all is 3.5 seconds.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值