Puoi determinare il consumo energetico dei dispositivi Android che includono un indicatore del livello della batteria come Summit SMB347 o Maxim MAX17050 (disponibile su molti dispositivi Nexus). Utilizza la misurazione interna del sistema quando l'apparecchiatura di misurazione esterna non è disponibile o è sconveniente collegarla a un dispositivo (ad esempio per l'utilizzo su dispositivi mobili).
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 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 del livello del carburante e la stessa resistenza di rilevamento di corrente. Assicurati che la carica iniziale della batteria sia la stessa per ogni dispositivo per evitare un comportamento diverso dell'indicatore del carburante in punti diversi della curva di scarica della batteria.
Anche con ambienti di test identici, non è garantita un'elevata accuratezza assoluta delle misurazioni. Tuttavia, la maggior parte delle imprecisioni specifiche dell'indicatore del carburante e della resistenza di rilevamento è coerente tra le esecuzioni del test, il che rende utili i confronti tra dispositivi identici. Ti consigliamo di eseguire più test in configurazioni diverse per identificare differenze significative e il consumo di energia relativo tra le configurazioni.
Leggere il consumo di energia
Per leggere i dati sul consumo di energia, 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 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 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 determinato dispositivo dipendono da:
- Hardware del misuratore del carburante, ad esempio Summit SMB347 o Maxim MAX17050.
- Collegamento del livello del carburante al sistema, ad esempio il valore delle resistenze di rilevamento corrente esterne.
- Configurazione del software del chip del misuratore del carburante, ad esempio 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 del livello del carburante Maxim
Quando si determina lo stato di carica della batteria per un lungo periodo di tempo, l'indicatore del livello di alimentazione Maxim (MAX17050, BC15) corregge le misurazioni dell'offset del contatore di Coulomb. Per le misurazioni effettuate su un breve periodo di tempo (ad esempio i test di misurazione del consumo di energia), l'indicatore del carburante non apporta correzioni, rendendo l'offset la fonte principale di errore quando le misurazioni attuali sono troppo piccole (anche se nessuna quantità di tempo può eliminare completamente l'errore di offset).
Per un tipico progetto di resistenza di rilevamento da 10 mOhm, la corrente di offset deve essere migliore di 1,5 mA, il che significa che qualsiasi misurazione è +/-1,5 mA (anche il layout della scheda PC può influire su questa variazione). Ad esempio, quando misuri una corrente elevata (200 mA), puoi aspettarti quanto segue:
- 2 mA (errore di guadagno dell'1% di 200 mA a causa dell'errore di guadagno dell'indicatore del livello del carburante)
- +2 mA (errore di guadagno dell'1% di 200 mA a causa dell'errore del resistore di rilevamento)
- +1,5 mA (errore di offset di rilevamento corrente dal misuratore del carburante)
L'errore totale è 5,5 mA (2,75%). Confrontalo con una corrente media (50 mA) in cui le stesse percentuali di errore generano un errore totale del 7% o con una corrente ridotta (15 mA) in cui +/-1,5 mA generano un errore totale del 10%.
Per ottenere risultati ottimali, ti consigliamo di misurare una corrente superiore a 20 mA. Gli errori di misurazione del guadagno sono sistematici e ripetibili, il che ti consente di testare un dispositivo in più modalità e ottenere misurazioni relative chiare (ad eccezione dell'offset di 1,5 mA).
Per le misurazioni relative di +/-100 μA, il tempo di misurazione richiesto dipende da:
- Rumore di campionamento dell'ADC. Il MAX17050 con la normale configurazione di fabbrica produce una variazione da campione a campione di circa +/-1,5 mA a causa del rumore, con ogni campione inviato a 175,8 ms. Puoi aspettarti un valore approssimativo di +/-100 μA per una finestra di test di 1 minuto e un rumore pulito di 3 sigma inferiore a 100 μA (o un rumore di 1 sigma a 33 μA) per una finestra di test di 6 minuti.
- Aliasing del campione a causa della variazione del carico. La variazione esagera gli errori, quindi per i campioni con variazioni intrinseche nel caricamento, ti consigliamo di utilizzare 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à | BATTERY_PROPERTY_CAPACITY |
Misurazioni | L'indicatore del livello di carburante non supporta misurazioni diverse dallo stato di carica della batteria con una risoluzione di %/256 (1/256 di un percento della capacità massima della batteria). |
Nexus 6
Modello | Nexus 6 |
---|---|
Indicatore del carburante | Indicatore livello carburante Maxim MAX17050 (un contatore di coulomb con regolazioni Maxim ModelGauge) e una resistenza di rilevamento corrente di 10 mΩ. |
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 μA, periodo di aggiornamento 175,8 ms.Risoluzione CURRENT_AVERAGE 156,25 μA, periodo di aggiornamento configurabile
da 0,7 s a 6,4 h, valore predefinito 11,25 secondi.CHARGE_COUNTER (corrente accumulata, precisione non estesa) è
500 μAh (lettura del contatore di Coulomb non elaborata, non regolata dal misuratore del carburante per l'offset del contatore di Coulomb,
più gli input dell'algoritmo ModelGauge m3, inclusa la compensazione del serbatoio vuoto).CHARGE_COUNTER_EXT (precisione estesa nel kernel) con risoluzione di 8 nAh.ENERGY_COUNTER è CHARGE_COUNTER_EXT a una tensione nominale di 3,7 V. |
Nexus 9
Modello | Nexus 9 |
---|---|
Indicatore del carburante | Indicatore livello carburante Maxim MAX17050 (un contatore di coulomb con regolazioni Maxim ModelGauge) e una resistenza di rilevamento corrente di 10 mΩ. |
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 μA, periodo di aggiornamento 175,8 ms.Risoluzione CURRENT_AVERAGE 156,25 μA, periodo di aggiornamento configurabile
da 0,7 s a 6,4 h, predefinito 11,25 sec.La risoluzione di CHARGE_COUNTER (corrente accumulata, precisione non estesa) è
di 500 μAh.CHARGE_COUNTER_EXT (precisione estesa nel kernel) con risoluzione di 8 nAh.ENERGY_COUNTER è CHARGE_COUNTER_EXT a una tensione nominale di 3,7 V.Periodo di aggiornamento corrente accumulato 175,8 ms. ADC campionato a quantizzazione di 175 ms con un periodo di campionamento di 4 ms. Può regolare il ciclo di lavoro. |
Nexus 10
Modello | Nexus 10 |
---|---|
Indicatore del carburante | Indicatore livello carburante Dallas Semiconductor DS2784 (un contatore di coulomb), con una resistenza di rilevamento corrente di 10 mΩ. |
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 µA.Il periodo di aggiornamento della corrente istantanea CURRENT_NOW è di 3,5 secondi.Il periodo di aggiornamento di CURRENT_AVERAGE è di 28 secondi (non configurabile).La risoluzione di 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 a una tensione nominale di 3,7 V.Il periodo di aggiornamento per tutti è di 3,5 secondi. |