題:
在沒有電流傳感器的情況下,Android如何估算電池電量?
Hao Shen
2013-05-27 09:16:44 UTC
view on stackexchange narkive permalink

BatteryManager類沒有當前度量標準: http://developer.android.com/reference/android/os/BatteryManager.html

我發現了這篇文章: https://stackoverflow.com/questions/2439619/getting-the-battery-current-values-for-the-android-phone看來作者也找到了它無法從Linux條目中獲取當前值。

我還將名為CurrentWidget的小部件下載到了Nexus 7中。對於當前值,它顯示為“無數據”。

因此,可能需要使用電流傳感器來獲取當前值,而某些android系統只是沒有這種傳感器。那麼android系統如何知道當前的電池電量?也許只是用電池的電壓來推斷(放電過程中電壓會降低)?但是,那將是非常粗糙的。有人說,在Android中沒有當前值(可能基於電壓?)的情況下,有一些“技巧”用於估算電池電量。有參考嗎?

PS:出於某種原因,我知道當前值可以記錄在iPhone 3GS上

[Android操作系統如何估算剩餘電池時間?](http://android.stackexchange.com/q/45734)
一 回答:
Sergey Vlasov
2013-05-27 10:50:34 UTC
view on stackexchange narkive permalink

電池電量估計通常是通過特殊的“電量表”芯片執行的;不同的手機型號使用不同的芯片。例如,根據內核配置,三星GT-I8150(Galaxy W)使用 Maxim MAX17043芯片,根據其數據表 ,沒有任何測量電流的輸入-它只有一個電池電壓傳感器。根據製造商的描述,該芯片使用“一種先進的Li +電池建模方案,稱為ModelGauge™,可在變化很大的充電/放電曲線上連續跟踪電池的相對充電狀態(SOC)”。數據表中提供了一些信息,但是該“ ModelGauge”方案的詳細信息似乎尚未公開。

三星Galaxy W所用的驅動程序BTW似乎應用了一些更正到MAX17043芯片返回的電荷水平,因此可能由該芯片執行的估算並不理想。

其他電量計芯片(例如, MAX17047)測量兩個電壓和電流,有時還包括電池溫度。這樣的芯片可能可以提供更精確的電池電量估計。同樣,數據表並未提供所用方法的所有詳細信息。

但是,即使特定手機中使用的電量計芯片可以測量電流,也可以從中獲取該信息。 Android可能由於以下幾個原因而無法使用:

  1. 該芯片可能僅在內部使用當前測量值,而不會將其暴露給外界。 MAX17047並非如此-它具有保存電流測量值的寄存器,可以通過I2C總線讀取。

  2. 電量計芯片的內核驅動程序可能沒有代碼將當前的測量信息公開給用戶應用程序。

  3. 即使內核驅動程序提供了當前的測量信息(例如,通過某些sysfs文件),Android也沒有用於此類傳感器的標準API。 BatteryManager傳感器具有適用於電流傳感器的任何東西。因此,您找到的CurrentWidget應用程序可能僅在某些模型上有效,這些模型的開發人員已獲得有關訪問此非標準傳感器的信息。

  4. ol>
嗨,非常感謝。您的信息非常有幫助!我對android源代碼和內核非常陌生。您能指出我Nexus S芯片驅動程序的位置嗎?因此,我可以看看並嘗試找出是否有一種方法可以使電池電量比使用Android API的分辨率更高。這正是我想要實現的目標。 (從您提供的文檔看來,我可以通過讀取芯片的SOC寄存器來完成此操作。)
[CONFIG_BATTERY_MAX17040](https://github.com/CyanogenMod/android_kernel_samsung_crespo/blob/ics/arch/arm/configs/crespo_defconfig#L1497)→[max17040_battery.c](https://github.com/CyanogenMod/android_kernel_samsung_ /ics/drivers/power/max17040_battery.c); [datasheet](http://datasheets.maximintegrated.com/en/ds/MAX17040-MAX17041.pdf)顯示,該芯片僅能測量電壓,而不能像MAX17043一樣測量電流。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...