您可以確定包含電池電量計的 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 電量計 (MAX17050、BC15) 會針對庫侖計數器偏移測量進行校正。對於在短時間內進行的測量(例如功耗計量測試),電量計不會進行校正,因此噹噹前測量值太小時(儘管沒有多少時間可以消除偏移)時,偏移會成為主要的誤差源完全錯誤)。
對於典型的 10mOhm 檢測電阻器設計,偏移電流應優於 1.5mA,這意味著任何測量結果都是 +/-1.5mA(PCB 板佈局也會影響這種變化)。例如,在測量大電流 (200mA) 時,您可能會遇到以下情況:
- 2mA(由於電量計增益誤差導致 200mA 的 1% 增益誤差)
- +2mA(由於檢測電阻誤差,200mA 的 1% 增益誤差)
- +1.5mA(來自電量計的電流感應偏移誤差)
總誤差為 5.5mA (2.75%)。將此與中等電流 (50mA) 進行比較,其中相同的誤差百分比給出 7% 的總誤差或與 +/-1.5mA 給出 10% 的總誤差的小電流 (15mA)。
為獲得最佳結果,我們建議測量大於 20mA。增益測量誤差是系統性且可重複的,使您能夠在多種模式下測試設備並獲得乾淨的相對測量值(1.5mA 偏移除外)。
對於 +/-100uA 相對測量,所需的測量時間取決於:
- ADC 採樣噪聲。 MAX17050 採用正常出廠配置,會因噪聲而產生 +/-1.5mA 的樣本間變化,每個樣本的傳輸時間為 175.8ms。您可以預期 1 分鐘測試窗口的粗略 +/-100uA 和 6 分鐘測試窗口的干淨 3-sigma 噪聲小於 100uA(或 33uA 時的 1-sigma 噪聲)。
- 由於負載變化而導致的樣本混疊。變化會誇大誤差,因此對於加載中固有變化的樣本,請考慮使用更長的測試窗口。
支持的 Nexus 設備
連結 5
模型 | 連結 5 |
---|---|
燃油表 | Maxim MAX17048 電量計(ModelGauge™,無庫侖計) |
特性 | BATTERY_PROPERTY_CAPACITY |
測量 | 電量計不支持除電池充電狀態以外的任何測量,分辨率為 %/256(完全電池容量的 1/256)。 |
連結 6
模型 | 連結 6 |
---|---|
燃油表 | Maxim MAX17050 電量計(帶有 Maxim ModelGauge™ 調整功能的庫侖計)和 10mohm 電流檢測電阻。 |
特性 | BATTERY_PROPERTY_CAPACITY BATTERY_PROPERTY_CURRENT_NOW BATTERY_PROPERTY_CURRENT_AVERAGE BATTERY_PROPERTY_CHARGE_COUNTER BATTERY_PROPERTY_ENERGY_COUNTER |
測量 | CURRENT_NOW 分辨率 156.25uA,更新周期為 175.8ms。 CURRENT_AVERAGE 分辨率 156.25uA,更新周期可配置 0.7s - 6.4h,默認 11.25 秒。 CHARGE_COUNTER(累積電流,非擴展精度)分辨率為 500uAh(原始庫侖計讀數,未通過電量計調整庫侖計偏移量,加上來自 ModelGauge m3 算法的輸入,包括空載補償)。 CHARGE_COUNTER_EXT(內核中的擴展精度)分辨率 8nAh。 ENERGY_COUNTER 在標稱電壓為 3.7V 時為 CHARGE_COUNTER_EXT。 |
連結 9
模型 | 連結 9 |
---|---|
燃油表 | Maxim MAX17050 電量計(帶有 Maxim ModelGauge™ 調整功能的庫侖計)和 10mohm 電流檢測電阻。 |
特性 | BATTERY_PROPERTY_CAPACITY BATTERY_PROPERTY_CURRENT_NOW BATTERY_PROPERTY_CURRENT_AVERAGE BATTERY_PROPERTY_CHARGE_COUNTER BATTERY_PROPERTY_ENERGY_COUNTER |
測量 | CURRENT_NOW 分辨率 156.25uA,更新周期為 175.8ms。 CURRENT_AVERAGE 分辨率 156.25uA,更新周期可配置 0.7s - 6.4h,默認 11.25 秒。 CHARGE_COUNTER(累計電流,非擴展精度)分辨率為500uAh。 CHARGE_COUNTER_EXT(內核中的擴展精度)分辨率 8nAh。 ENERGY_COUNTER 在標稱電壓為 3.7V 時為 CHARGE_COUNTER_EXT。 累計電流更新周期175.8ms。 ADC 以 175ms 量化採樣,採樣週期為 4ms。可以調整佔空比。 |
連結 10
模型 | 連結 10 |
---|---|
燃油表 | Dallas Semiconductor DS2784 電量計(庫侖計),帶有 10mohm 電流檢測電阻。 |
特性 | BATTERY_PROPERTY_CAPACITY BATTERY_PROPERTY_CURRENT_NOW BATTERY_PROPERTY_CURRENT_AVERAGE BATTERY_PROPERTY_CHARGE_COUNTER BATTERY_PROPERTY_ENERGY_COUNTER |
測量 | 電流測量(瞬時和平均)分辨率為 156.3uA。 CURRENT_NOW 瞬時電流更新周期為 3.5 秒。 CURRENT_AVERAGE 更新周期為 28 秒(不可配置)。 CHARGE_COUNTER(累計電流,非擴展精度)分辨率為 625uAh。 CHARGE_COUNTER_EXT(內核中的擴展精度)分辨率為 144nAh。 ENERGY_COUNTER 在標稱電壓為 3.7V 時為 CHARGE_COUNTER_EXT。 全部更新周期為 3.5 秒。 |