Misurare l'alimentazione del dispositivo

Puoi determinare il consumo energetico dei dispositivi per i dispositivi Android che includono un indicatore del livello di carica della batteria ad esempio Summit SMB347 o Maxim MAX17050 (disponibile su molti dispositivi Nexus). Utilizza l'interfaccia utente misurare i casi in cui le apparecchiature di misurazione esterne non sono disponibili o non sono utili per connettersi a un dispositivo (ad esempio durante l'uso mobile).

Le misurazioni possono includere la corrente istantanea, la carica rimanente, la capacità della batteria all'inizio del test e altro ancora, in base alle proprietà supportate del dispositivo (vedi di seguito). Per il meglio dei risultati, eseguire misurazioni dell'alimentazione del dispositivo durante test A/B a lungo termine che usano lo stesso dispositivo con lo stesso indicatore del livello del carburante e la stessa resistenza di rilevamento di corrente. Assicurati che la batteria di avvio si carichi è lo stesso per ogni dispositivo per evitare un comportamento diverso dell'indicatore del livello del carburante in punti diversi della curva di scarica della batteria.

Anche con ambienti di test identici, non è garantito che le misurazioni siano sempre la precisione. Tuttavia, la maggior parte delle inesattezze specifiche dell'indicatore del carburante e della resistenza di rilevamento sono costanti tra le esecuzioni dei test, rendendo utili i confronti tra dispositivi identici. Ti consigliamo di eseguire più test in diverse configurazioni per identificare differenze significative e potenza relativa il consumo medio tra le configurazioni.

Lettura del consumo energetico

Per leggere i dati sul consumo energetico, inserisci le chiamate all'API nel codice di test.

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

Proprietà disponibili

Android supporta le seguenti proprietà del livello di carica della batteria:

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 maggior parte delle proprietà viene letta dagli attributi del sottosistema kernel power_supply con nomi simili. Tuttavia, le proprietà esatte, la risoluzione dei valori delle proprietà e la frequenza di aggiornamento la disponibilità per un dispositivo specifico dipende da:

  • Hardware per l'indicatore del livello del carburante, ad esempio Summit SMB347 o Maxim MAX17050.
  • Collegamento tra il livello del carburante e il sistema, ad esempio il valore dei resistori esterni per il rilevamento della corrente.
  • Configurazione software del chip dell'indicatore di carburante, ad esempio i valori scelti per il calcolo della corrente media intervalli nel driver del kernel.

Per i dettagli, scopri le proprietà disponibili per i dispositivi Nexus.

Indicatore livello carburante massimo

Quando si determina lo stato di carica della batteria per un lungo periodo di tempo, l'indicatore Maxim (MAX17050, BC15) corregge le misurazioni dell'offset del contatore coulomb. Per le misurazioni effettuate su un per un breve periodo di tempo (ad esempio per misurare il consumo di corrente), l'indicatore di livello del carburante correzioni, rendendo l'offset la fonte principale di errore quando le misurazioni correnti sono troppo piccole (anche se non ci sono periodi di tempo per eliminare completamente l'errore di offset).

Per un tipico design di un resistore da 10 mOhm, la corrente di offset dovrebbe essere migliore di 1,5 mA, vale a dire che la misurazione è +/-1,5 mA (anche il layout della scheda PC può incidere su questo la variante ). Ad esempio, quando misuri una corrente elevata (200 mA), puoi aspettarti che il seguenti:

  • 2 mA (errore di guadagno dell'1% pari a 200 mA a causa di un errore di guadagno dell'indicatore del livello del carburante)
  • +2 mA (errore di guadagno dell'1% di 200 mA a causa di un errore di rilevamento della resistenza)
  • +1,5 mA (errore di offset del rilevamento attuale dall'indicatore del carburante)

L'errore totale è di 5,5 mA (2,75%). Confronta questo valore con una corrente media (50 mA) in cui le stesse percentuali di errore danno un errore totale del 7% o una piccola corrente (15 mA) dove +/-1,5 mA restituisce un errore totale del 10%.

Per risultati ottimali, ti consigliamo di effettuare misurazioni con una tensione superiore a 20 mA. Gli errori di misurazione degli incrementi sistematico e ripetibile, che ti consente di testare un dispositivo in più modalità e ottenere un parente pulito (con eccezioni per l'offset di 1,5 mA).

Per misurazioni relative +/-100 uA, il tempo di misurazione richiesto dipende da:

  • Rumore di campionamento ADC. Il MAX17050 con la normale configurazione di fabbrica produce Variazione di +/-1,5 mA da campione a campione dovuta al rumore, con ogni campione erogato a 175,8 ms. Con una finestra di test di 1 minuto è normale ottenere un valore approssimativo di +/-100 uA e un rumore di 3 sigma più pulito di almeno 100 uA (o rumore di 1-sigma a 33 uA) per una finestra di test di 6 minuti.
  • Alias di esempio a causa della variante del carico. La variante esagera gli errori, quindi per i campioni con una variazione intrinseca al caricamento, ti consigliamo di utilizzare una finestra di test più lunga.

Dispositivi Nexus supportati

Nexus 5
Modello Nexus 5
Indicatore livello carburante Indicatore livello carburante Maxim MAX17048 (ModelGauge, senza contatore coulomb)
Proprietà BATTERY_PROPERTY_CAPACITY
Misurazioni L'indicatore del livello del carburante non supporta misurazioni diverse dallo stato di carica della batteria per un risoluzione massima pari a %/256 (1/256% di carica completa della batteria).
Nexus 6
Modello Nexus 6
Indicatore livello carburante Indicatore livello carburante del Maxim MAX17050 (un contatore del coulomb con regolazioni del modello Maxim ModelGauge) Resistenza con rilevamento di corrente da 10 mohm.
Proprietà BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Misurazioni Risoluzione CURRENT_NOW 156,25 uA, il periodo di aggiornamento è 175,8 ms.
Risoluzione CURRENT_AVERAGE 156,25 uA, periodo di aggiornamento configurabile 0,7 s-6,4 h, valore predefinito 11,25 sec.
La risoluzione CHARGE_COUNTER (corrente accumulata, precisione non estesa) è 500 uAh (lettura contatore Coulomb non elaborato, non regolato dall'indicatore del carburante per la compensazione del contatore Coulomb, più input dell'algoritmo ModelGauge m3, inclusa la compensazione dei vuoti.
Risoluzione CHARGE_COUNTER_EXT (precisione estesa nel kernel) 8 nAh.
ENERGY_COUNTER è CHARGE_COUNTER_EXT alla tensione nominale di 3,7 V.
Nexus 9
Modello Nexus 9
Indicatore livello carburante Indicatore livello carburante del Maxim MAX17050 (un contatore del coulomb con regolazioni del modello Maxim ModelGauge) Resistenza con rilevamento di corrente da 10 mohm.
Proprietà BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Misurazioni Risoluzione CURRENT_NOW 156,25 uA, il periodo di aggiornamento è 175,8 ms.
Risoluzione CURRENT_AVERAGE 156,25 uA, periodo di aggiornamento configurabile 0,7 - 6,4 h, 11,25 sec. predefinito.
La risoluzione CHARGE_COUNTER (corrente accumulata, precisione non estesa) è 500 uAh.
Risoluzione CHARGE_COUNTER_EXT (precisione estesa nel kernel) 8 nAh.
ENERGY_COUNTER è CHARGE_COUNTER_EXT alla tensione nominale di 3,7 V.
Periodo di aggiornamento corrente accumulato: 175,8 ms.
ADC campionato con una quantizzazione di 175 nbsp; ms con un periodo di campionamento di 4 ms. Consente di regolare il ciclo di lavoro.
Nexus 10
Modello Nexus 10
Indicatore livello carburante Indicatore del livello del carburante (un contatore a coulomb) di Dallas Semiconductor DS2784, con rilevamento di corrente da 10 mohm resistenza.
Proprietà BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Misurazioni La risoluzione della misurazione di corrente (istantanea e media) è 156,3 uA.
Il periodo di aggiornamento istantaneo attuale di CURRENT_NOW è di 3,5 secondi.
Il periodo di aggiornamento di CURRENT_AVERAGE è di 28 secondi (non configurabile).
La risoluzione CHARGE_COUNTER (corrente accumulata, precisione non estesa) è 625 uAh.
La risoluzione di CHARGE_COUNTER_EXT (precisione estesa nel kernel) è 144 nAh.
ENERGY_COUNTER è CHARGE_COUNTER_EXT alla tensione nominale di 3,7 V.
Il periodo di aggiornamento complessivo è di 3,5 secondi.