Medir a energia do dispositivo

É possível determinar o consumo de energia de dispositivos Android que incluem um medidor de combustível da bateria como uma Summit SMB347 ou Maxim MAX17050 (disponível em muitos dispositivos Nexus). Usar a API no sistema de medir quando o equipamento de medição externo não está disponível ou é inconveniente para conectar a um dispositivo (como no uso móvel).

As medições podem incluir corrente instantânea, carga restante e capacidade da bateria no início do teste e fim, e muito mais, dependendo das propriedades compatíveis com o dispositivo (veja abaixo). Para melhores resultados, realize medições de energia durante testes A/B de longa duração que usam o mesmo dispositivo tipo com o mesmo medidor de combustível e o mesmo resistor sensor de corrente. Confira se a bateria inicial está carregada é o mesmo para cada dispositivo para evitar comportamentos diferentes do medidor de combustível em pontos distintos da ou curva de descarga de bateria.

Mesmo com ambientes de teste idênticos, não há garantia de que as medições sejam de alta precisão precisão. No entanto, a maioria das imprecisões específicas do medidor de combustível e da resistência do sensor são consistentes. entre execuções de teste, tornando úteis as comparações entre dispositivos idênticos. Recomendamos que você execute vários testes em diferentes configurações para identificar diferenças significativas e potência relativa e o consumo de recursos entre as configurações.

Ler consumo de energia

Para ler dados de consumo de energia, insira chamadas para a API no código de teste.

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

Propriedades disponíveis

O Android é compatível com as seguintes propriedades do medidor de combustível da bateria:

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

A maioria das propriedades é lida com base nos atributos do subsistema power_supply do kernel com nomes semelhantes. No entanto, propriedades exatas, resolução dos valores de propriedade e frequência de atualização disponíveis para um dispositivo específico dependem de:

  • Hardware de medidor de combustível, como Summit SMB347 ou Maxim MAX17050.
  • Conexão do medidor de combustível ao sistema, como o valor dos resistores sensoriais externos de corrente.
  • Configuração do software do chip do medidor de combustível, como valores escolhidos para a computação média atual no driver do kernel.

Para mais detalhes, consulte as propriedades disponíveis para dispositivos Nexus.

Medidor de combustível no máximo

Ao determinar o estado de carga da bateria por um longo período, o medidor de combustível da Maxim (MAX17050, BC15) corrige as medições de deslocamento do contador de Coulomb. Para medições feitas em um curto período de tempo (como testes de medição do consumo de energia), o medidor de combustível não correções, tornando o deslocamento a principal fonte de erro quando as medições atuais são muito pequenas (embora nenhum período possa eliminar o erro de compensação por completo).

Para um design típico de um resistor sensorial de 10 mOhm, a corrente de deslocamento deve ser melhor que 1,5 mA, ou seja, qualquer medida é de +/-1,5 mA (o layout do PCBoard também pode afetar esse valor) ). Por exemplo, ao medir uma corrente grande (200 mA), você pode esperar que seguinte:

  • 2 mA (erro de ganho de 1% de 200 mA devido ao erro de ganho do medidor de combustível)
  • +2 mA (1% de erro de ganho de 200 mA devido ao erro do resistor)
  • +1,5 mA (erro de compensação do sentido atual no medidor de combustível)

O erro total é de 5,5 mA (2,75%). Compare isso com uma corrente média (50 mA), em que as mesmas porcentagens de erro resultam em um erro total de 7% ou uma corrente pequena (15 mA), em que +/-1,5 mA resulta em um erro total de 10%.

Para melhores resultados, recomendamos medir mais de 20 mA. Os erros de medição de ganho são sistemática e repetível, para que você teste um dispositivo de vários modos e limpe o valor relativo (com exceções para o deslocamento de 1,5 mA).

Para medições relativas de +/-100 uA, o tempo de medição necessário depende de:

  • Ruído de amostragem do ADC. O MAX17050 com a configuração normal de fábrica produz Variação entre amostras de +/-1,5 mA devido ao ruído, com cada amostra entregue a 175,8 ms. Você pode esperar uma média aproximada de +/-100 uA para uma janela de teste de 1 minuto e menos ruído limpo de 3 sigma de 100 uA (ou ruído de 1 sigma a 33 uA) para uma janela de teste de 6 minutos.
  • Exemplo de atribuição de alias devido à variação da carga. A variação exagera os erros, portanto, para amostras com variação inerente ao carregamento, considere usar uma janela de teste mais longa.

Dispositivos Nexus compatíveis

Nexus 5
Modelo Nexus 5
Medidor de combustível Medidor de combustível Maxim MAX17048 (ModelGauge, sem contador Coulomb)
Propriedades BATTERY_PROPERTY_CAPACITY
Medições O medidor de combustível não suporta outras medições além do estado de carga da bateria em um resolução de %/256 (1/256% da capacidade total da bateria).
Nexus 6
Modelo Nexus 6
Medidor de combustível Medidor de combustível da Maxim MAX17050 (um contador coulomb com ajustes do Maxim ModelGauge) e um Resistente do sensor de corrente corrente de 10 mohm.
Propriedades BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Medições Resolução de 156,25 uA do CURRENT_NOW. O período de atualização é de 175,8 ms.
Resolução CURRENT_AVERAGE de 156,25 uA, período de atualização configurável 0,7 a 6,4 h, padrão de 11,25 segundos.
A resolução CHARGE_COUNTER (precisão atual acumulada e não estendida) é 500 uAh (leitura do contador de coulomb bruta, não ajustado pelo medidor de combustível para a compensação do contador de coulomb, além de entradas do algoritmo ModelGauge m3, incluindo remuneração vazia).
Resolução 8 nAh CHARGE_COUNTER_EXT (precisão estendida no kernel).
ENERGY_COUNTER é CHARGE_COUNTER_EXT com a tensão nominal de 3,7 V.
Nexus 9
Modelo Nexus 9
Medidor de combustível Medidor de combustível da Maxim MAX17050 (um contador coulomb com ajustes do Maxim ModelGauge) e um Resistente do sensor de corrente corrente de 10 mohm.
Propriedades BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Medições Resolução de 156,25 uA do CURRENT_NOW. O período de atualização é de 175,8 ms.
Resolução CURRENT_AVERAGE de 156,25 uA, período de atualização configurável 0,7 a 6,4 h, padrão de 11,25 s.
A resolução CHARGE_COUNTER (precisão atual acumulada e não estendida) é 500 uAh.
Resolução 8 nAh CHARGE_COUNTER_EXT (precisão estendida no kernel).
ENERGY_COUNTER é CHARGE_COUNTER_EXT com a tensão nominal de 3,7 V.
Período de atualização atual acumulado de 175,8 ms.
Amostra de ADC com quantização de 175 versão ms com um período de amostra de 4 ms. Pode ajustar o ciclo de trabalho.
Nexus 10
Modelo Nexus 10
Medidor de combustível Medidor de combustível do Dallas Semiductor DS2784 (um contador coulomb), com sensor de corrente de 10 mohm resistor
Propriedades BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Medições A resolução da medição atual (instantânea e média) é de 156,3 uA.
O período de atualização atual instantânea de CURRENT_NOW é de 3,5 segundos.
O período de atualização do CURRENT_AVERAGE é de 28 segundos (não configurável).
A resolução CHARGE_COUNTER (precisão atual acumulada e não estendida) é 625 uAh.
A resolução CHARGE_COUNTER_EXT (precisão estendida no kernel) é de 144 nAh.
ENERGY_COUNTER é CHARGE_COUNTER_EXT com a tensão nominal de 3,7 V.
O período de atualização para todos é de 3,5 segundos.