| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| measures [2025/11/23 17:50] – gadmin | measures [2025/11/25 19:52] (current) – [Разъем аккумулятора] gadmin |
|---|
| ==== Разъем аккумулятора ==== | ==== Разъем аккумулятора ==== |
| Самые важные показатели - это ток и напряжение на самом аккумуляторе. Эти показатели могут сильно отличаться от значений на кабеле, преобразованием тока и напряжения занимается BMS (battery management system). BMS должно подавать на аккумулятор напряжение, сопоставимое с напряжением на нём (3.7-4.4V) и допустимый ток. Преобразование входных параметров в целевые - это большая и сложная тема, которая пытается одновременно решить вопрос эффективной передачи большой мощности по кабелю и минимизацию потерь при преобразованию параметров. Для понимания того, как реализовывают быструю зарядку можно посмотреть видео: [[https://www.youtube.com/watch?v=1nx_n-wEtII|Как реализована быстрая зарядка]]. | Самые важные показатели - это ток и напряжение на самом аккумуляторе. Эти показатели могут сильно отличаться от значений на кабеле, преобразованием тока и напряжения занимается BMS (battery management system). BMS должно подавать на аккумулятор напряжение, сопоставимое с напряжением на нём (3.7-4.4V) и допустимый ток. Преобразование входных параметров в целевые - это большая и сложная тема, которая пытается одновременно решить вопрос эффективной передачи большой мощности по кабелю и минимизацию потерь при преобразованию параметров. Для понимания того, как реализовывают быструю зарядку можно посмотреть видео: [[https://www.youtube.com/watch?v=1nx_n-wEtII|Как реализована быстрая зарядка]]. |
| | |
| | Еще одна ожидаемая особенность параметров на аккумуляторе - это то, что там учитывается и процесс заряда и процесс разряда, то есть суммарный ток равен разности токов зарядки и тока потребления сточностью до знака. Потому что знак силы тока может быть положительным для расхода и отрицательным для зарядки. |
| К сожалению, до снятия показаний на аккумуляторе нельзя добраться без вскрытия телефона. Поэтому мы будем смотреть на то, что можно получить из софтверных источников, из логов Андроида. | К сожалению, до снятия показаний на аккумуляторе нельзя добраться без вскрытия телефона. Поэтому мы будем смотреть на то, что можно получить из софтверных источников, из логов Андроида. |
| ==== Лог низкоуровнего драйвера ==== | |
| |
| ==== Лог Андроида ==== | ==== Лог Андроида ==== |
| | Мы немного изменим порядок извлечения данных, потому что для понимания того, что можно извлечь из низкоуровневых логов нужно понять, что не так с высокоуровневыми. Под высокоуровневыми мы понимаем то, что можно получить из штатного BatteryManager API. Это уровень, который используют приложения AccuBattery и Battery guru. При этом данные, которые получает этот уровень могут отличаться от того, что реально измеряется на аккумуляторе. Вот два простых примера |
| | ^Устройство ^Напряжение в API^Напряжение на проводе^Ток в API^Ток на проводе^Детали ^ |
| | |OnePlus 13 | U_battery/2| U_battery|I_battery|I_battery| Напряжение батареи с двумя ячейками показывается в пересчете на ячейку| |
| | |OnePlus Pad 3| U_battery| U_battery*2| I_battery| I_battery/2| Батарея с одной ячейкой, но BMS уменьшает напряжение с увеличением тока| |
| | Видно, что параметры, которые видит BM API подгоняются под правдоподобные значения с точки зрения "ожидаемых" значений. Но эти "ожидаемые" значения могут вызывать вопросы. На 1+13 возвращается напряжение, приведенное к одной ячейке из двух и фактический ток. Это приводит к тому, что приложения вычисляют половину фактической переданной в телефон энергии. То есть в случае 1+13 параметры на проводе у телефона совпадают с параметрами на аккумуляторе (поэтому svooc и не греет телефон) и отличаются от параметров в статистике BM API. |
| | В случае 1+Pad 3 мы получаем другой эффект. С точки зрения принятой энергии вопросов нет, уменьшение напряжения на проводе компенсирует увеличение тока на аккумуляторе. В этом случае параметры на проводе отличаются от параметров в BM API. И мы можем догадываться, что параметры в BM API скорее всего совпадают с тем, что можно измерить на аккумуляторе. |
| | В рамках одного вендора мы можем увидеть два разных подхода к данным, которые получает андроид. У подходов есть общее - напряжение приводится к одной литиевой ячейке, а вот возвращаемый ток всегда честный. Но в случае батареи из двух ячеек это приводит к неправильному учёту энергии. В AccuBattery/BatteryGuru есть опции для коррекции возращаемых значений в случае двухячеечных батарей, но и эти параметры следует выставлять с пониманием фактической конфигурации ячеек батареи. |
| | В 15-16 версиях андроида в логе (adb logcat) есть универсальная запись с параметрами аккумулятора. Эта запись совпадает с тем, что показывают AccuBattery/BatteryGuru и может быть использовано для дальнейшей обработки. |
| | <code>healthd : system healthd: battery l=87 v=4523 t=38.8 h=2 st=2 c=-2931 fc=5920000 cc=122 chg=a</code> |
| | |
| | |
| | ==== Лог низкоуровнего драйвера ==== |
| | На некоторых устройствах есть возможность изучать параметры, которыми оперирует сервис вендора. Эти параметры полезны для понимания того, как коррелируют параметры на аккумуляторе и в логе андроида, а также увидеть дополнительные параметры, которые не транслируются на уровень андроида. |
| | Примером может послужить очень полезная запись из лога 1+13, в котором уровень зарядки и время до 100% присутствует в двух видах: то, что учитывает сервис и то, что он показывает на экране |
| | <code>charge_time: type=svooc,reserve_soc=0,soc=19,ui_soc=21,current=8092,avg=8100,not_chg_cnt=0,stable_cnt=12,fcc=5908,fcc_ratio=99,delta=1,debug=0,region=7,ttf=1912(00:31:52),ui_ttf=2178(00:36:18)</code> |
| | |