Potenza del dispositivo di misurazione

Puoi determinare il consumo energetico del dispositivo per i dispositivi Android che includono un indicatore del livello di carica della batteria come Summit SMB347 o Maxim MAX17050 (disponibile su molti dispositivi Nexus). Utilizzare il misuratore integrato nel sistema quando l'apparecchiatura di misurazione esterna non è disponibile o è scomodo collegarsi a un dispositivo (come nell'utilizzo mobile).

Le misurazioni possono includere corrente istantanea, carica rimanente, capacità della batteria all'inizio e alla fine del test e altro ancora a seconda delle proprietà supportate del dispositivo (vedi di seguito). Per ottenere risultati ottimali, esegui misurazioni della potenza del dispositivo durante test A/B di lunga durata che utilizzano lo stesso tipo di dispositivo con lo stesso indicatore di livello carburante e lo stesso resistore di rilevamento della corrente. Assicurarsi che la carica della batteria di avviamento sia la stessa per ciascun dispositivo per evitare comportamenti diversi dell'indicatore del carburante in punti diversi della curva di scarica della batteria.

Anche con ambienti di test identici, non è garantita la massima precisione assoluta delle misurazioni. Tuttavia, la maggior parte delle imprecisioni specifiche dell'indicatore del carburante e del resistore di rilevamento sono coerenti tra le esecuzioni di prova, rendendo utili i confronti tra dispositivi identici. Si consiglia di eseguire più test in diverse configurazioni per identificare differenze significative e consumo energetico relativo 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à dell'indicatore 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à vengono lette dagli attributi del sottosistema power_supply del kernel con nomi simili. Tuttavia, le proprietà esatte, la risoluzione dei valori delle proprietà e la frequenza di aggiornamento disponibili per un dispositivo specifico dipendono da:

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

Per maggiori dettagli, consulta 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 del livello di carica Maxim (MAX17050, BC15) corregge le misurazioni dell'offset del contatore di Coulomb. Per le misurazioni effettuate in un breve periodo di tempo (come i test di misurazione del consumo energetico), l'indicatore del livello di carburante non apporta correzioni, rendendo l'offset la principale fonte di errore quando le misurazioni correnti sono troppo piccole (sebbene nessuna quantità di tempo possa eliminare l'offset errore completamente).

Per un tipico progetto di resistore di rilevamento da 10 mOhm, la corrente di offset dovrebbe essere migliore di 1,5 mA, il che significa che qualsiasi misurazione è +/- 1,5 mA (anche il layout della scheda PCB può influenzare questa variazione). Ad esempio, quando si misura una corrente elevata (200 mA) è possibile prevedere quanto segue:

  • 2 mA (errore di guadagno dell'1% di 200 mA a causa dell'errore di guadagno dell'indicatore del carburante)
  • +2 mA (errore di guadagno dell'1% di 200 mA dovuto all'errore del resistore di rilevamento)
  • +1,5 mA (errore di offset del rilevamento della corrente dall'indicatore del carburante)

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

Per ottenere i migliori risultati, si consiglia di misurare più di 20 mA. Gli errori di misurazione del guadagno sono sistematici e ripetibili, consentendo di testare un dispositivo in più modalità e ottenere misurazioni relative pulite (con eccezioni per l'offset di 1,5 mA).

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

  • Rumore di campionamento dell'ADC . Il MAX17050 con la sua normale configurazione di fabbrica produce una variazione da campione a campione di +/- 1,5 mA a causa del rumore, con ciascun campione erogato a 175,8 ms. Puoi aspettarti un valore approssimativo di +/- 100 uA per una finestra di test di 1 minuto e un rumore pulito di 3 sigma inferiore a 100 uA (o rumore di 1 sigma a 33 uA) per una finestra di test di 6 minuti.
  • Aliasing di esempio a causa della variazione del carico . La variazione esagera gli errori, quindi per i campioni con variazione inerente al carico, prendere in considerazione l'utilizzo di una finestra di test più lunga.

Dispositivi Nexus supportati

Nexus 5
Modello Nexus 5
Indicatore del carburante Indicatore livello carburante Maxim MAX17048 (ModelGauge™, senza contatore di Coulomb)
Proprietà BATTERIA_PROPERTY_CAPACITY
Misure L'indicatore del livello di carica non supporta misurazioni diverse dallo stato di carica della batteria con una risoluzione di %/256 (1/256 di percentuale della capacità totale della batteria).
Nesso 6
Modello Nesso 6
Indicatore del carburante Indicatore di livello carburante Maxim MAX17050 (un contatore di Coulomb con regolazioni Maxim ModelGauge™) e un resistore di rilevamento della corrente da 10 mohm.
Proprietà BATTERIA_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERIA_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Misure CURRENT_NOW risoluzione 156,25uA, periodo di aggiornamento è 175,8 ms.
CURRENT_AVERAGE risoluzione 156,25uA, periodo di aggiornamento configurabile 0,7 s - 6,4 ore, predefinito 11,25 secondi.
La risoluzione CHARGE_COUNTER (corrente accumulata, precisione non estesa) è 500uAh (lettura grezza del contatore di coulomb, non regolata dall'indicatore del carburante per l'offset del contatore di coulomb, più input dall'algoritmo ModelGauge m3 inclusa la compensazione del vuoto).
CHARGE_COUNTER_EXT (precisione estesa nel kernel) risoluzione 8nAh.
ENERGY_COUNTER è CHARGE_COUNTER_EXT alla tensione nominale di 3,7 V.
Nesso 9
Modello Nesso 9
Indicatore del carburante Indicatore di livello carburante Maxim MAX17050 (un contatore di Coulomb con regolazioni Maxim ModelGauge™) e un resistore di rilevamento della corrente da 10 mohm.
Proprietà BATTERIA_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERIA_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Misure CURRENT_NOW risoluzione 156,25uA, periodo di aggiornamento è 175,8 ms.
CURRENT_AVERAGE risoluzione 156,25uA, periodo di aggiornamento configurabile 0,7 s - 6,4 ore, predefinito 11,25 secondi.
La risoluzione CHARGE_COUNTER (corrente accumulata, precisione non estesa) è 500uAh.
CHARGE_COUNTER_EXT (precisione estesa nel kernel) risoluzione 8nAh.
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 ms con un periodo di campionamento di 4 ms. Può regolare il ciclo di lavoro.
Nesso 10
Modello Nesso 10
Indicatore del carburante Indicatore di livello carburante Dallas Semiconductor DS2784 (un contatore di Coulomb), con un resistore di rilevamento della corrente da 10 mohm.
Proprietà BATTERIA_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERIA_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
Misure La risoluzione della misurazione corrente (istantanea e media) è 156,3uA.
Il periodo di aggiornamento corrente istantaneo 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) è 625uAh.
La risoluzione CHARGE_COUNTER_EXT (precisione estesa nel kernel) è 144nAh.
ENERGY_COUNTER è CHARGE_COUNTER_EXT alla tensione nominale di 3,7 V.
Il periodo di aggiornamento per tutti è di 3,5 secondi.