Medindo a potência do dispositivo

Você pode determinar o consumo de energia do dispositivo Android que inclui um medidor de carga da bateria, como 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 para 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 diferentes comportamentos 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 tenham alta precisão absoluta. No entanto, a maioria das imprecisões específicas do medidor de combustível e do resistor de detecção são consistentes entre os testes, tornando úteis comparações entre dispositivos idênticos. Recomendamos a execução de vários testes em configurações diferentes para identificar diferenças significativas e consumo relativo de energia entre configurações.

Leitura do consumo de energia

Para ler dados de consumo de energia, insira chamadas à API no 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 oferece suporte às seguintes propriedades do medidor de carga 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 com nomes semelhantes. No entanto, as propriedades exatas, a resolução dos valores das propriedades e a 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 externos de detecção de corrente.
  • Configuração do software do chip do medidor de combustível, como valores escolhidos para intervalos médios de cálculo 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 durante 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 durante 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 típico de resistor de detecção 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 corrente grande (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,5mA (erro de compensação de detecção 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 testar um dispositivo em vários modos e obter 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 variação de +/-1,5mA amostra a amostra devido ao ruído, com cada amostra entregue a 175,8ms. Você pode esperar um valor aproximado de +/- 100uA para uma janela de teste de 1 minuto e um ruído limpo de 3 sigma inferior a 100uA (ou ruído de 1 sigma a 33uA) para uma janela de teste de 6 minutos.
  • Exemplo de alias 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 nenhuma medição além do estado de carga da bateria com uma resolução de %/256 (1/256 de um percentual da capacidade total da bateria).
Nexus 6
Modelo Nexus 6
Medidor de combustível Medidor de combustível Maxim MAX17050 (um contador 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 Resolução CURRENT_NOW 156,25uA, período de atualização é 175,8ms.
Resolução CURRENT_AVERAGE 156,25uA, período de atualização configurável 0,7s - 6,4h, padrão 11,25 segundos.
A resolução CHARGE_COUNTER (corrente acumulada, precisão não estendida) é 500uAh (leitura do contador coulomb bruto, não ajustada pelo medidor de combustível para deslocamento do contador coulomb, mais entradas do algoritmo ModelGauge m3 incluindo compensação vazia).
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 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 Resolução CURRENT_NOW 156,25uA, período de atualização é 175,8ms.
Resolução CURRENT_AVERAGE 156,25uA, período de atualização configurável 0,7s - 6,4h, padrão 11,25 segundos.
A resolução CHARGE_COUNTER (corrente acumulada, precisão não estendida) é de 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 de 175,8 ms.
ADC amostrado em quantização de 175 ms com um período de amostragem de 4 ms. 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ânea e média) é de 156,3uA.
O período de atualização atual instantânea CURRENT_NOW é de 3,5 segundos.
O período de atualização CURRENT_AVERAGE é de 28 segundos (não configurável).
A resolução 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.