Medindo a Potência do Dispositivo

Você pode determinar o consumo de energia do dispositivo para dispositivos Android que incluem um medidor de carga de bateria, como um Summit SMB347 ou Maxim MAX17050 (disponível em muitos dispositivos Nexus). Use o medidor no sistema quando o equipamento de medição externo não estiver disponível ou for inconveniente conectar a um dispositivo (como no uso móvel).

As medições podem incluir corrente instantânea, carga restante, capacidade da bateria no início e no final do teste e muito mais, dependendo das propriedades suportadas do dispositivo (veja abaixo). Para obter melhores resultados, realize medições de potência do dispositivo durante testes A/B de longa duração que usam o mesmo tipo de dispositivo com o mesmo medidor de combustível e o mesmo resistor de detecção de corrente. Certifique-se de que a carga inicial da bateria seja a mesma para cada dispositivo para evitar comportamento diferente do medidor de combustível em diferentes pontos da curva de descarga da bateria.

Mesmo com ambientes de teste idênticos, não é garantido que as medições sejam de alta precisão absoluta. No entanto, a maioria das imprecisões específicas do medidor de combustível e do resistor sensor são consistentes entre as execuções de teste, tornando úteis as comparações entre dispositivos idênticos. Recomendamos a execução de vários testes em diferentes configurações para identificar diferenças significativas e consumo de energia relativo entre as configurações.

Leitura do consumo de energia

Para ler os dados de consumo de energia, insira chamadas para a API em seu 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 são lidas a partir de atributos do subsistema power_supply do kernel de nomes semelhantes. No entanto, as propriedades exatas, a resolução dos valores de propriedade e a frequência de atualização disponíveis para um dispositivo específico dependem de:

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

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

Medidor de combustível máximo

Ao determinar o estado de carga da bateria por um longo período de tempo, o medidor de combustível 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 de consumo de energia), o medidor de combustível não faz correções, tornando o deslocamento a principal fonte de erro quando as medições atuais são muito pequenas (embora nenhuma quantidade de tempo possa eliminar o deslocamento erro completamente).

Para um projeto de resistor de detecção típico de 10 mOhm, a corrente de deslocamento deve ser melhor que 1,5 mA, o que significa que qualquer medição é +/-1,5 mA (o layout da placa de circuito impresso também pode afetar essa variação). Por exemplo, ao medir uma grande corrente (200mA), você pode esperar o seguinte:

  • 2mA (erro de ganho de 1% de 200mA devido ao erro de ganho do medidor de combustível)
  • +2mA (erro de ganho de 1% de 200mA devido ao erro do resistor de detecção)
  • +1,5 mA (erro de deslocamento do sensor de corrente do medidor de combustível)

O erro total é de 5,5mA (2,75%). Compare isso com uma corrente média (50mA) onde as mesmas porcentagens de erro dão um erro total de 7% ou com uma corrente pequena (15mA) onde +/-1.5mA dá um erro total de 10%.

Para melhores resultados, recomendamos medir mais de 20mA. Os erros de medição de ganho são sistemáticos e repetíveis, permitindo que você teste um dispositivo em vários modos e obtenha medições relativas limpas (com exceções para o deslocamento de 1,5 mA).

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

  • Ruído de amostragem ADC . O MAX17050 com sua configuração normal de fábrica produz +/-1,5 mA de variação de amostra para amostra devido ao ruído, com cada amostra entregue em 175,8 ms. Você pode esperar um áspero +/-100uA para uma janela de teste de 1 minuto e um ruído de 3 sigma limpo inferior a 100uA (ou ruído de 1 sigma a 33uA) para uma janela de teste de 6 minutos.
  • Aliasing da amostra devido à variação de 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
Medidas O medidor de combustível não suporta outras medições além do estado de carga da bateria para uma resolução de %/256 (1/256 de um por cento da capacidade total da bateria).
Nexus 6
Modelo Nexus 6
Medidor de combustível Medidor de combustível Maxim MAX17050 (um contador de coulomb com ajustes Maxim ModelGauge™) e um resistor de detecção de corrente de 10mohm.
Propriedades BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Medidas CURRENT_NOW resolução 156,25uA, período de atualização é 175,8ms.
CURRENT_AVERAGE resolução 156,25uA, período de atualização configurável 0,7s - 6,4h, padrão 11,25 segundos.
A resolução de CHARGE_COUNTER (corrente acumulada, precisão não estendida) é de 500uAh (contador de coulomb bruto lido, não ajustado pelo medidor de combustível para compensação do contador de coulomb, mais entradas do algoritmo ModelGauge m3, incluindo compensação de vazio).
CHARGE_COUNTER_EXT (precisão estendida no kernel) resolução 8nAh.
ENERGY_COUNTER é CHARGE_COUNTER_EXT na tensão nominal de 3,7V.
Nexus 9
Modelo Nexus 9
Medidor de combustível Medidor de combustível Maxim MAX17050 (um contador de coulomb com ajustes Maxim ModelGauge™) e um resistor de detecção de corrente de 10mohm.
Propriedades BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Medidas CURRENT_NOW resolução 156,25uA, período de atualização é 175,8ms.
CURRENT_AVERAGE resolução 156,25uA, período de atualização configurável 0,7s - 6,4h, padrão 11,25 segundos.
A resolução de CHARGE_COUNTER (corrente acumulada, precisão não estendida) é 500uAh.
CHARGE_COUNTER_EXT (precisão estendida no kernel) resolução 8nAh.
ENERGY_COUNTER é CHARGE_COUNTER_EXT na tensão nominal de 3,7V.
Período de atualização atual acumulado 175,8 ms.
ADC amostrado em quantização de 175ms com um período de amostragem de 4ms. Pode ajustar o ciclo de trabalho.
Nexus 10
Modelo Nexus 10
Medidor de combustível Medidor de combustível Dallas Semiconductor DS2784 (um contador de coulomb), com um resistor de detecção de corrente de 10mohm.
Propriedades BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Medidas A resolução da medição atual (instantâneo e médio) é de 156,3uA.
O período de atualização instantânea de CURRENT_NOW é de 3,5 segundos.
O período de atualização CURRENT_AVERAGE é de 28 segundos (não configurável).
A resolução de CHARGE_COUNTER (corrente acumulada, precisão não estendida) é 625uAh.
A resolução CHARGE_COUNTER_EXT (precisão estendida no kernel) é 144nAh.
ENERGY_COUNTER é CHARGE_COUNTER_EXT na tensão nominal de 3,7V.
O período de atualização para todos é de 3,5 segundos.