Puedes determinar el consumo de energía de los dispositivos Android que incluyen un medidor de combustible de la batería, como un Summit SMB347 o un Maxim MAX17050 (disponible en muchos dispositivos Nexus). Usa el medidor integrado en el sistema cuando el equipo de medición externo no esté disponible o sea inconveniente conectarlo a un dispositivo (como en el uso de dispositivos móviles).
Las mediciones pueden incluir la corriente instantánea, la carga restante, la capacidad de la batería al comienzo y al final de la prueba, y mucho más, según las propiedades compatibles del dispositivo (consulta a continuación). Para obtener los mejores resultados, realiza mediciones de energía del dispositivo durante pruebas A/B de larga duración que usen el mismo tipo de dispositivo con el mismo medidor de combustible y la misma resistencia de detección de corriente. Asegúrate de que la carga inicial de la batería sea la misma para cada dispositivo para evitar que el comportamiento del medidor de combustible sea diferente en diferentes puntos de la curva de descarga de la batería.
Incluso con entornos de prueba idénticos, no se garantiza que las mediciones sean de alta precisión absoluta. Sin embargo, la mayoría de las imprecisiones específicas del medidor de combustible y la resistencia de detección son coherentes entre las ejecuciones de prueba, lo que hace que las comparaciones entre dispositivos idénticos sean útiles. Te recomendamos que ejecutes varias pruebas en diferentes configuraciones para identificar diferencias significativas y el consumo de energía relativo entre las configuraciones.
Cómo leer el consumo de energía
Para leer los datos de consumo de energía, inserta llamadas a la API en tu código de prueba.
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");
Propiedades disponibles
Android admite las siguientes propiedades del medidor de combustible de la batería:
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
La mayoría de las propiedades se leen de los atributos del subsistema power_supply del kernel con nombres similares. Sin embargo, las propiedades exactas, la resolución de los valores de las propiedades y la frecuencia de actualización disponibles para un dispositivo específico dependen de lo siguiente:
- Hardware del medidor de combustible, como un Summit SMB347 o Maxim MAX17050
- Conexión del medidor de combustible al sistema, como el valor de los resistores de detección de corriente externos
- Configuración de software del chip del medidor de combustible, como los valores elegidos para los intervalos promedio de cálculo de corriente en el controlador del kernel
Para obtener más información, consulta las propiedades disponibles para los dispositivos Nexus.
Medidor de combustible máximo
Cuando se determina el estado de carga de la batería durante un período prolongado, el medidor de combustible Maxim (MAX17050, BC15) corrige las mediciones de compensación del contador de coulomb. En el caso de las mediciones realizadas durante un período breve (como las pruebas de medición del consumo de energía), el medidor de combustible no realiza correcciones, por lo que el desfase es la fuente principal de error cuando las mediciones actuales son demasiado pequeñas (aunque ninguna cantidad de tiempo puede eliminar el error de desfase por completo).
Para un diseño típico de resistencia de detección de 10 mOhm, la corriente de compensación debe ser superior a 1.5 mA, lo que significa que cualquier medición es de +/-1.5 mA (el diseño de la placa de circuito impreso también puede afectar esta variación). Por ejemplo, cuando mides una corriente grande (200 mA), puedes esperar lo siguiente:
- 2 mA (error de ganancia del 1% de 200 mA debido al error de ganancia del medidor de combustible)
- +2 mA (error de ganancia del 1% de 200 mA debido al error de la resistencia de detección)
- +1.5 mA (error de compensación de detección de corriente del medidor de combustible)
El error total es de 5.5 mA (2.75%). Compara esto con una corriente media (50 mA), en la que los mismos porcentajes de error dan un error total del 7%, o con una corriente pequeña (15 mA), en la que +/- 1.5 mA dan un error total del 10%.
Para obtener mejores resultados, te recomendamos que midas más de 20 mA. Los errores de medición de ganancia son sistemáticos y repetibles, lo que te permite probar un dispositivo en varios modos y obtener mediciones relativas claras (con excepciones para la compensación de 1.5 mA).
Para las mediciones relativas de +/-100 µA, el tiempo de medición requerido depende de lo siguiente:
- Ruido de muestreo del ADC: El MAX17050 con su configuración de fábrica normal produce una variación de +/- 1.5 mA de muestra a muestra debido al ruido, con cada muestra entregada a 175.8 ms. Puedes esperar un valor aproximado de +/- 100 µA para una ventana de prueba de 1 minuto y un ruido limpio de 3 sigmas inferior a 100 µA (o un ruido de 1 sigma a 33 µA) para una ventana de prueba de 6 minutos.
- Muestra de alias debido a la variación de carga. La variación exagera los errores, por lo que, para los ejemplos con variación inherente en la carga, considera usar un período de prueba más largo.
Dispositivos Nexus compatibles
Nexus 5
Modelo | Nexus 5 |
---|---|
Medidor de combustible | Medidor de combustible Maxim MAX17048 (ModelGauge, sin contador de coulomb) |
Propiedades | BATTERY_PROPERTY_CAPACITY |
Mediciones | El medidor de combustible no admite ninguna medición que no sea el estado de carga de la batería con una resolución de %/256 (1/256 de un porcentaje de la capacidad total de la batería). |
Nexus 6
Modelo | Nexus 6 |
---|---|
Medidor de combustible | Medidor de combustible MAX17050 de Maxim (un contador de coulomb con ajustes de ModelGauge de Maxim) y una resistencia de detección de corriente de 10 mΩ. |
Propiedades | BATTERY_PROPERTY_CAPACITY BATTERY_PROPERTY_CURRENT_NOW BATTERY_PROPERTY_CURRENT_AVERAGE BATTERY_PROPERTY_CHARGE_COUNTER BATTERY_PROPERTY_ENERGY_COUNTER |
Mediciones | Resolución de CURRENT_NOW : 156.25 uA, período de actualización de 175.8 ms.Resolución de CURRENT_AVERAGE : 156.25 uA, período de actualización configurable de 0.7 s a 6.4 h, predeterminado de 11.25 s.Resolución de CHARGE_COUNTER (corriente acumulada, precisión no extendida): 500 uAh (lectura sin procesar del contador de Coulomb, no ajustada por el medidor de combustible para el desfase del contador de Coulomb, además de las entradas del algoritmo m3 de ModelGauge, incluida la compensación vacía).CHARGE_COUNTER_EXT (precisión extendida en el kernel) resolución 8 nAh.ENERGY_COUNTER es CHARGE_COUNTER_EXT a una tensión nominal de 3.7 V. |
Nexus 9
Modelo | Nexus 9 |
---|---|
Medidor de combustible | Medidor de combustible MAX17050 de Maxim (un contador de coulomb con ajustes de ModelGauge de Maxim) y una resistencia de detección de corriente de 10 mΩ. |
Propiedades | BATTERY_PROPERTY_CAPACITY BATTERY_PROPERTY_CURRENT_NOW BATTERY_PROPERTY_CURRENT_AVERAGE BATTERY_PROPERTY_CHARGE_COUNTER BATTERY_PROPERTY_ENERGY_COUNTER |
Mediciones | Resolución de CURRENT_NOW : 156.25 μA, período de actualización de 175.8 ms.Resolución de CURRENT_AVERAGE : 156.25 μA, período de actualización configurable de 0.7 s a 6.4 h, predeterminado de 11.25 s.Resolución de CHARGE_COUNTER (corriente acumulada, precisión no extendida): 500 μAh.CHARGE_COUNTER_EXT (precisión extendida en el kernel) resolución 8 nAh.ENERGY_COUNTER es CHARGE_COUNTER_EXT a un voltaje nominal de 3.7 V.Período de actualización de corriente acumulada de 175.8 ms. ADC muestreado a una cuantificación de 175 ms con un período de muestreo de 4 ms. Puede ajustar el ciclo de trabajo. |
Nexus 10
Modelo | Nexus 10 |
---|---|
Medidor de combustible | Medidor de combustible DS2784 de Dallas Semiconductor (un contador de coulomb), con un resistor de detección de corriente de 10 mΩ |
Propiedades | BATTERY_PROPERTY_CAPACITY BATTERY_PROPERTY_CURRENT_NOW BATTERY_PROPERTY_CURRENT_AVERAGE BATTERY_PROPERTY_CHARGE_COUNTER BATTERY_PROPERTY_ENERGY_COUNTER |
Mediciones | La resolución de la medición de corriente (instantánea y promedio) es de 156.3 µA.CURRENT_NOW El período de actualización actual instantáneo es de 3.5 segundos.El período de actualización de CURRENT_AVERAGE es de 28 segundos (no se puede configurar).La resolución de CHARGE_COUNTER (corriente acumulada, precisión no extendida) es de 625 uAh.La resolución de CHARGE_COUNTER_EXT (precisión extendida en el kernel) es de 144 nAh.ENERGY_COUNTER es CHARGE_COUNTER_EXT a un voltaje nominal de 3.7 V.El período de actualización para todos es de 3.5 segundos. |