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

Вы можете определить энергопотребление устройств 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 мА (погрешность усиления 200 мА 1 % из-за ошибки резистора датчика)
  • +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™, без счетчика кулонов)
Характеристики БАТАРЕЯ_PROPERTY_CAPACITY
Измерения Указатель уровня топлива не поддерживает никаких измерений, кроме состояния заряда батареи с разрешением %/256 (1/256 процента от полной емкости батареи).
Нексус 6
Модель Нексус 6
Указатель уровня топлива Датчик уровня топлива Maxim MAX17050 (счетчик кулонов с регулировкой Maxim ModelGauge™) и токоизмерительный резистор 10 МОм.
Характеристики БАТАРЕЯ_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
БАТАРЕЯ_PROPERTY_CURRENT_AVERAGE
БАТАРЕЯ_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 МОм.
Характеристики БАТАРЕЯ_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
БАТАРЕЯ_PROPERTY_CURRENT_AVERAGE
БАТАРЕЯ_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 мОм.
Характеристики БАТАРЕЯ_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
БАТАРЕЯ_PROPERTY_CURRENT_AVERAGE
БАТАРЕЯ_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 секунды.