Измерьте мощность устройства

Вы можете определить энергопотребление устройств Android, оснащенных датчиком уровня заряда аккумулятора, например Summit SMB347 или Maxim MAX17050 (доступно на многих устройствах Nexus). Используйте встроенный в систему манометр, когда внешнее измерительное оборудование недоступно или его неудобно подключать к устройству (например, при мобильном использовании).

Измерения могут включать мгновенный ток, оставшийся заряд, емкость аккумулятора в начале и конце теста и многое другое в зависимости от поддерживаемых свойств устройства (см. ниже). Для достижения наилучших результатов выполняйте измерения мощности устройства во время длительных 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 (MAX17050, BC15) корректирует измерения смещения счетчика кулонов. При измерениях, проводимых в течение короткого периода времени (например, тесты измерения потребляемой мощности), указатель уровня топлива не вносит поправки, что делает смещение основным источником ошибок, когда измерения тока слишком малы (хотя никакое время не может устранить сместить ошибку полностью).

Для типичной конструкции сенсорного резистора сопротивлением 10 мОм ток смещения должен быть лучше 1,5 мА, что означает, что любое измерение составляет +/-1,5 мА (расположение печатной платы также может влиять на это изменение). Например, при измерении большого тока (200 мА) можно ожидать следующего:

  • 2 мА (погрешность усиления 1% 200 мА из-за ошибки усиления указателя уровня топлива)
  • +2 мА (погрешность усиления 1 % 200 мА из-за ошибки сенсорного резистора)
  • +1,5 мА (ошибка смещения датчика тока от указателя уровня топлива)

Суммарная погрешность составляет 5,5 мА (2,75%). Сравните это со средним током (50 мА), где тот же процент ошибок дает общую ошибку 7%, или с малым током (15 мА), где +/- 1,5 мА дает общую ошибку 10%.

Для достижения наилучших результатов мы рекомендуем измерять ток более 20 мА. Ошибки измерения коэффициента усиления являются систематическими и повторяемыми, что позволяет тестировать устройство в нескольких режимах и получать точные относительные измерения (за исключением смещения 1,5 мА).

Для относительных измерений +/-100 мкА необходимое время измерения зависит от:

  • Шум выборки АЦП . MAX17050 в стандартной заводской конфигурации производит колебания от выборки к выборке +/-1,5 мА из-за шума, при этом время передачи каждой выборки составляет 175,8 мс. Вы можете ожидать грубого +/-100 мкА для тестового окна в 1 минуту и ​​чистого 3-сигма шума менее 100 мкА (или 1-сигма шума при 33 мкА) для 6-минутного тестового окна.
  • Пример псевдонимов из-за изменения нагрузки . Вариации увеличивают ошибки, поэтому для образцов с вариациями, присущими нагрузке, рассмотрите возможность использования более длинного испытательного окна.

Поддерживаемые устройства Nexus

Нексус 5
Модель Нексус 5
Указатель уровня топлива Указатель уровня топлива Maxim MAX17048 (ModelGauge, без счетчика кулонов)
Характеристики BATTERY_PROPERTY_CAPACITY
Измерения Указатель уровня топлива не поддерживает никаких измерений, кроме уровня заряда аккумулятора с разрешением %/256 (1/256 процента от полной емкости аккумулятора).
Нексус 6
Модель Нексус 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 мкА, период обновления 175,8 мс.
CURRENT_AVERAGE разрешение 156,25 мкА, период обновления настраивается от 0,7 с до 6,4 ч, по умолчанию 11,25 с.
Разрешение CHARGE_COUNTER (накопленный ток, нерасширенная точность) составляет 500 мкАч (необработанные показания счетчика кулонов, не корректируемые датчиком топлива для смещения счетчика кулонов, плюс входные данные от алгоритма ModelGauge m3, включая компенсацию пустого заряда).
CHARGE_COUNTER_EXT (расширенная точность в ядре), разрешение 8 нАч.
ENERGY_COUNTER равен CHARGE_COUNTER_EXT при номинальном напряжении 3,7 В.
Нексус 9
Модель Нексус 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 мкА, период обновления 175,8 мс.
CURRENT_AVERAGE разрешение 156,25 мкА, период обновления настраивается от 0,7 с до 6,4 ч, по умолчанию 11,25 с.
Разрешение CHARGE_COUNTER (накопленный ток, нерасширенная точность) составляет 500 мкАч.
CHARGE_COUNTER_EXT (расширенная точность в ядре), разрешение 8 нАч.
ENERGY_COUNTER равен CHARGE_COUNTER_EXT при номинальном напряжении 3,7 В.
Суммарный текущий период обновления 175,8 мс.
АЦП осуществлял выборку с частотой квантования 175 мс и периодом выборки 4 мс. Можно регулировать рабочий цикл.
Нексус 10
Модель Нексус 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 мкА.
CURRENT_NOW мгновенный текущий период обновления составляет 3,5 секунды.
Период обновления CURRENT_AVERAGE составляет 28 секунд (не настраивается).
Разрешение CHARGE_COUNTER (накопленный ток, нерасширенная точность) составляет 625 мкАч.
Разрешение CHARGE_COUNTER_EXT (расширенная точность в ядре) составляет 144 нАч.
ENERGY_COUNTER равен CHARGE_COUNTER_EXT при номинальном напряжении 3,7 В.
Период обновления у всех составляет 3,5 секунды.