5 votos

¿Cómo estima el Android el nivel de la batería sin un sensor de corriente?

La clase BatteryManager no tiene la métrica para la corriente: http://developer.Android.com/reference/Android/os/BatteryManager.html

Y entonces he encontrado este post: http://stackoverflow.com/questions/2439619/getting-the-battery-current-values-for-the-Android-phone Parece que el autor también encontró que no era posible obtener el valor actual de la entrada de Linux.

También he descargado el widget llamado CurrentWidget en mi Nexus 7. Para el valor actual, muestra "sin datos".

Así que probablemente se requiera un sensor de corriente para obtener el valor actual y algunos sistemas Android simplemente no tienen tales sensores. Entonces, ¿cómo puede el sistema Android saber el nivel actual de la batería? ¿Tal vez sólo utilice el voltaje de la batería para inferirlo (el voltaje disminuirá durante la descarga)? Pero entonces sería de grano muy grueso. Alguien dice que hay algún "truco" utilizado para estimar el nivel de la batería sin los valores actuales en Android (probablemente basado en el voltaje?). ¿Hay alguna referencia?

PS: por alguna razón, sé que el valor actual se puede grabar en el iphone 3GS

12voto

Sergey Vlasov Puntos 1419

La estimación del nivel de la batería suele realizarse mediante un chip especial de "indicador de combustible"; los distintos modelos de teléfono utilizan diferentes chips. Por ejemplo, el Samsung GT-I8150 (Galaxy W), según el configuración del núcleo utiliza el Maxim MAX17043 chip, que, según su ficha técnica no tiene ninguna entrada para medir la corriente, sólo tiene un sensor de tensión de la batería. Según la descripción del fabricante, este chip utiliza "un sofisticado esquema de modelado de baterías de Li+, llamado ModelGauge™, para hacer un seguimiento continuo del estado de carga (SOC) relativo de la batería a lo largo de un perfil de carga/descarga muy variable". En la hoja de datos hay algo de información, pero los detalles de este esquema "ModelGauge" no parecen estar disponibles públicamente.

Por cierto, el controlador utilizado para el Samsung Galaxy W parece aplicar algunas correcciones al nivel de carga devuelto por el chip MAX17043, por lo que probablemente la estimación realizada por el chip no es ideal.

Otros chips para medir el combustible (p. ej, MAX17047 ) miden tanto la tensión como la corriente, y a veces también la temperatura de la batería. Estos chips probablemente pueden proporcionar una estimación más precisa del nivel de carga de la batería. De nuevo, el hoja de datos no proporciona todos los detalles del método utilizado.

Sin embargo, aunque el chip indicador de combustible utilizado en un teléfono concreto pueda medir la corriente, acceder a esa información desde Android podría ser imposible por varias razones:

  1. Es posible que el chip sólo utilice la medición de la corriente internamente y no la exponga al exterior. Este no es el caso del MAX17047 - tiene registros que mantienen los valores de medición de la corriente, que pueden ser leídos a través del bus I2C.

  2. El controlador del núcleo para el chip del medidor de combustible podría no tener código para exponer la información de la medición actual a las aplicaciones del usuario.

  3. Incluso si el controlador del kernel hace que la información de medición actual esté disponible (por ejemplo, a través de algún archivo sysfs), Android no tiene una API estándar para tales sensores - ni BatteryManager ni Sensor tienen algo apropiado para un sensor de corriente eléctrica. Por lo tanto, la aplicación CurrentWidget que has encontrado puede funcionar sólo en algunos modelos para los que el desarrollador tiene información sobre el acceso a este sensor no estándar.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X