測量裝置電力

您可以為搭載電池燃料計的 Android 裝置 (例如 Summit SMB347 或 Maxim MAX17050,許多 Nexus 裝置都提供這類裝置) 判斷裝置耗電量。如果沒有外部測量設備,或不方便連線至裝置 (例如在行動裝置上使用),請使用系統內建的量測指標。

測量值可能包括瞬時電流、剩餘電量、測試開始和結束時的電池容量,以及其他取決於裝置支援的屬性 (請見下文)。為獲得最佳結果,請在長時間執行的 A/B 版本測試期間,使用相同的裝置類型、相同的油量計和相同的電流感測電阻,執行裝置電源測量。請確保每部裝置的電池初始電量相同,以免在電池放電曲線的不同點上出現不同的油量指示器行為。

即使測試環境相同,測量結果也不保證絕對準確。不過,燃料計和感測電阻的大部分誤差在不同測試之間都一致,因此比較相同裝置的結果很有幫助。建議您在不同設定下執行多項測試,找出設定之間的顯著差異和相對耗電量。

讀取耗電量

如要讀取耗電量資料,請在測試程式碼中插入 API 呼叫。

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

可用的屬性

Android 支援下列電池燃料計屬性:

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

大多數屬性都是從具有類似名稱的核心 power_supply 子系統屬性讀取。不過,特定裝置可用的確切屬性、屬性值解析度和更新頻率取決於下列因素:

  • 油量計硬體,例如 Summit SMB347 或 Maxim MAX17050。
  • 油量計與系統的連線,例如外部電流感測電阻的值。
  • 油量計晶片軟體設定,例如在核心驅動程式中為平均電流計算間隔所選取的值。

詳情請參閱 Nexus 裝置適用的屬性。

Maxim 油量表

在長時間內判斷電池充電狀態時,Maxim 油量計 (MAX17050、BC15) 會修正庫倫計數器偏移量測量值。對於在短時間內進行的測量 (例如耗電量計量測試),油量計不會進行修正,因此當目前的測量值過小時,偏移就會成為錯誤的主要來源 (但無論時間多長,都無法完全消除偏移錯誤)。

對於典型的 10 mΩ 感測電阻設計,偏移電流應高於 1.5 mA,也就是說任何測量值都是 +/-1.5 mA (PC 板版面配置也會影響這個變化)。舉例來說,測量大電流 (200 mA) 時,您可以預期以下情況:

  • 2 mA (燃料計增益誤差為 200 mA,誤差為 1%)
  • +2 mA (感測電阻誤差為 200 mA,增益誤差為 1%)
  • +1.5 mA (油量計的電流感應偏移誤差)

總誤差為 5.5 mA (2.75%)。請將這項結果與中等電流 (50 mA) 進行比較,在相同的誤差百分比下,中等電流的總誤差為 7%;如果是小電流 (15 mA),+/-1.5 mA 的總誤差為 10%。

為獲得最佳結果,建議您測量 20 mA 以上的電流。增益測量錯誤是系統性的且可重複,因此您可以以多種模式測試裝置,並取得清晰的相對測量值 (1.5 mA 偏移除外)。

對於 +/-100 uA 相對測量值,所需的測量時間取決於:

  • ADC 取樣雜訊。在正常的出廠設定下,MAX17050 會因雜訊產生 +/-1.5 mA 的樣本間差異,每個樣本的傳送時間為 175.8 ms。在 1 分鐘的測試期間,您可以預期的值大約為 +/-100 uA,在 6 分鐘的測試期間,您可以預期的值為小於 100 uA 的 3 標準差雜訊 (或 33 uA 的 1 標準差雜訊)。
  • 由於負載變化而產生的取樣異名。變化會誇大錯誤,因此如果樣本在載入時有變化,建議使用較長的測試時間間隔。

支援的 Nexus 裝置

Nexus 5
型號 Nexus 5
油量表 Maxim MAX17048 油量計 (ModelGauge,無庫倫計數器)
屬性 BATTERY_PROPERTY_CAPACITY
測量數據 電量計不支援任何測量值,除了電池電量狀態,且解析度為 %/256 (電池完整容量的 1/256 百分之一)。
Nexus 6
型號 Nexus 6
油量表 Maxim MAX17050 油量計 (含有經過 Maxim ModelGauge 調整的庫倫計數器),以及 10 mΩ 電流感測電阻。
屬性 BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
測量數據 CURRENT_NOW 解析度為 156.25 uA,更新週期為 175.8 ms。
CURRENT_AVERAGE 解析度為 156.25 uA,更新週期可設定為 0.7 秒至 6.4 小時,預設為 11.25 秒。
CHARGE_COUNTER (累積電流,非擴充精確度) 解析度為 500 uAh (原始庫侖計數器讀取值,未經燃料計校正庫侖計數器偏移,加上 ModelGauge m3 演算法輸入值,包括空白補償)。
CHARGE_COUNTER_EXT (核心中的擴充精確度) 解析度 8 nAh。
ENERGY_COUNTERCHARGE_COUNTER_EXT,公稱電壓為 3.7 V。
Nexus 9
型號 Nexus 9
油量表 Maxim MAX17050 油量計 (含有經過 Maxim ModelGauge 調整的庫倫計數器),以及 10 mΩ 電流感測電阻。
屬性 BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
測量數據 CURRENT_NOW 解析度 156.25 uA,更新週期為 175.8 毫秒。
CURRENT_AVERAGE 解析度 156.25 uA,更新週期可設定為 0.7 秒至 6.4 小時,預設為 11.25 秒。
CHARGE_COUNTER (累積電流,非擴充精確度) 解析度為 500 uAh。
CHARGE_COUNTER_EXT (核心中的擴充精確度) 解析度 8 nAh。
ENERGY_COUNTERCHARGE_COUNTER_EXT,額定電壓為 3.7 V。
累積的電流更新週期為 175.8 毫秒。
ADC 以 175 毫秒量化取樣,取樣週期為 4 毫秒。可調整工作週期。
Nexus 10
型號 Nexus 10
油量表 Dallas Semiconductor DS2784 油量計 (庫倫計數器),搭配 10 mΩ 電流感測電阻。
屬性 BATTERY_PROPERTY_CAPACITY
BATTERY_PROPERTY_CURRENT_NOW
BATTERY_PROPERTY_CURRENT_AVERAGE
BATTERY_PROPERTY_CHARGE_COUNTER
BATTERY_PROPERTY_ENERGY_COUNTER
測量數據 電流測量 (瞬時和平均) 解析度為 156.3 uA。
CURRENT_NOW 瞬時電流更新週期為 3.5 秒。
CURRENT_AVERAGE 更新週期為 28 秒 (無法設定)。
CHARGE_COUNTER (累積電流,非擴充精確度) 解析度為 625 uAh。
CHARGE_COUNTER_EXT (核心中的擴充精確度) 解析度為 144 nAh。
ENERGY_COUNTERCHARGE_COUNTER_EXT,公稱電壓為 3.7 V。
所有更新週期為 3.5 秒。