Iphone диагностика по току потребления

Измеряем потребление батарейки на мобильных устройствах. Эксперимент в Яндексе

В наши дни можно утверждать, что телефон перестал быть устройством только для звонков. Он позволяет нам оплачивать покупки, находить правильную дорогу, вызывать такси. Ситуация, в которой у вас садится батарейка, становится одной из самых стрессовых. Остаться ночью на незнакомой улице без телефона довольно неприятно. При этом расход батарейки растет во многом как следствие расширения возможностей.

Производители как железа, так и софта, стараются решить эту проблему. Для Яндекса она тоже актуальна, потому что наши сервисы — это то, что должно быть под рукой у человека в любой момент. Мы по-разному над этим работаем и в рамках эксперимента создали устройство для измерения тока, который потребляется телефоном с батарейки. Теперь мы умеем мерить мгновенные значения тока с батарейки телефона (Nexus, iPhone и др.) в миллиамперах 500 раз в секунду, сохранять эту метрику на диск и считать по ней среднее потребление.

Под катом я расскажу, как у нас это получилось. Будет много фото железок, но заранее прошу прощения за качество — снимки сделаны в боевых условиях.

С самого начала у нас была какая-то тактика

Несколько месяцев назад, когда мы начинали прикручивать нагрузочное тестирование телефонов к Яндекс.Танку (это наш opensource инструмент для тестирования производительности), мы столкнулись с тем, что одну из самых важных метрик — потребление тока с батарейки — мы не можем замерить достоверно, а на некоторых телефонах не можем замерить вообще. Например, вот как выглядит график потребления тока на iPhone, полученный стандартными средствами от Apple:

Все три запуска теста значение потребления вообще не изменялось и было равно 1/20. Удивляет использованная единица измерения — 1/20 означает, что если телефон дальше будет работать с тем же энергопотреблением, то сядет он за 20 часов. То есть, метрика получается очень неточная и не очень интерпретируемая. Кроме того, цифры в сыром виде получить нельзя, только разве что скриншот сделать и приложить его к тикету.

С Android девайсами ситуация выглядит лучше, но все равно далека от идеала. Ток замерять можно, читая из /proc/… циферку, но лучше не делать это слишком часто — опросом значения можно просадить производительность телефона и испортить тесты. На разных девайсах циферка находится в разных местах файловой системы. На части Android телефонов вообще отсутствует железка, измеряющая ток, поэтому на них не получится программными средствами снимать потребление. На Nexus, которые мы взяли как reference, значение в /proc меняется раз в 20 секунд.

В общем, мы решили попробовать измерять потребление хардверно и таким образом убить всех зайцев разом: так можно мерить вообще на всех девайсах, включая ноутбуки и холодильники. Мы знали о существовании Power Monitor, но цена устройства (примерно $800 за штуку, а на каждый телефон потребуется свой девайс), и его несовместимость с Linux (а значит, и сложности с автоматизацией), заставили задуматься о своем велосипеде. Аналогичная ситуация наблюдается с осциллографами и другими измерительными устройствами общего назначения на рынке — покупать дорого, автоматизировать сложно.

Существует еще проект BattOr, по описанию это примерно то, что мы хотим. Сам я не пробовал связаться с авторами, но коллеги говорят, что команду купил Google и с тех пор от них ничего не слышно и на почту они не отвечают. Совпадение? =)

Читайте также:  Iphone gps медленно работает

Для начала, в качестве proof-of-concept, мы собрали схему с шунтом, аналогичную представленной в этой статье. Ток мы измеряли в разрыве провода USB. Поскольку значение силы тока ожидалось небольшое, до 500 мА, пришлось усиливать напряжение с помощью инструментального усилителя, а не снимать его напрямую с шунта ардуинкой.

После еще некоторых танцев с бубном нам удалось получить на экране ноутбука график потребления телефоном тока с USB. Тут мы поняли, что таких измерений нам не хватает — мы мерим не ток с батарейки, а ток с USB, телефон запасает энергию в батарейке, и мы не можем сопоставить график потребления тока с тем, что происходит на телефоне. Решили, что нужно вытаскивать батарейку из телефона и использовать вместо нее внешнее питание, а USB во время тестов вообще не втыкать.

Электроника работает на белом дыме

Как известно, все, чему нас учили на уроках физики и электротехники, — ложь, никаких электронов не существует, а устройства работают на белом дыме. И если этот белый дым выходит, то устройство работать перестает. В очередном эксперименте белый дым вышел из Arduino и мы ее потеряли. Оказалось, что между “0” на входе нашего блока питания и “-“ на его выходе — 88 вольт переменного напряжения. После еще нескольких экспериментов с разными БП мы поняли, что не все они одинаково хороши, но есть такие, которые нам подходят. И мы стали использовать эти подходящие. Также мы решили больше не использовать схему с шунтом и инструментальным усилителем и вместо этого взять готовый модуль измерения тока к Arduino на базе MAX471, которая по сути то же самое, только в виде микросхемы. Еще мы рассматривали вариант на базе датчика Холла (ACS712), но, изучив документацию на этот чип, увидели, что он сильно шумит и решили даже не пробовать.

Для того, чтобы питать современный телефон не от встроенной батареи, а от внешнего источника, мало его разобрать и вытащить батарею — уж слишком умны современные батареи. Поэтому мы вытаскиваем из батареи контроллер и подключаемся уже к нему.

Чтобы вернуть модифицированный таким образом iPhone (или другое устройство) в собранное состояние, мы сверлим корпус и выводим два проводка.

Вот такая коробочка у нас получилась в результате. Правда, в метро ее лучше не возить, телефон, провода, вот это все… могут не понять =)

Что нам это дает

Мы уже начали внедрять тестирование наших приложений на энергопотребление, так что ждите улучшений в этой области. Процитирую коллег, которые пользуются нашей коробочкой.

Для получения релевантного результата теста при прямых замерах батарейки этим устройством достаточно пяти минут. Если же замерять «как раньше», то есть смотреть на скорость уменьшения % заряда батареи — то требуется 6-8 часов, плюс не забывайте про человеческий фактор. То есть, время теста сократили с 8 часов до 5 минут: почти в 100 раз.

Текущий разброс результатов замера ± 15%. Это не идеал и надо погрешность уменьшать. Однако, теперь доверие к результату повысилось за счёт исключения человеческого фактора и существенно меньшего времени на 1 замер. Достаточно выполнить за полдня много-много замеров и отсечь результаты, пострадавшие от внезапных всплесков непонятной активности на телефоне.

Стало возможным кросс-платформенное, и кросс-девайсное сравнение значений. Единица измерения — mA, а не «скорость уменьшения процентов заряда», которая зависит от платформы, объёма батареи, «свежести» батареи, не говоря уже про запущенные процессы… Сравнить только mA при одном и том же запущенном Я.Сервисе на Andoird и на iOS — нельзя. Надо добавить поправочный коэффициент — сколько жрёт каждая платформа, без Я.Сервиса. Но, это опять-таки вопрос на пол дня замеров (и это с кофе-поболтать).

Пара слов про софт

Чтобы собирать данные от Arduino (а она просто 500 раз в секунду шлет их по USB), мы написали простенькую читалку. На Python возникли проблемы с повторным открытием устройства на чтение — во второй раз данные уже не читались. Мы не стали разбираться и просто переписали то же самое на Golang — после этого все заработало.

Читайте также:  Голосовой определитель номера айфон

Тут нас ждали еще небольшие грабли: в буфере устройства с предыдущего запуска остаются старые данные. Поэтому сейчас мы просто отбрасываем первые 500 измерений (1 секунда). Затем собранные в .csv данные обрабатываем скриптом на Python (в котором используются Pandas и Seaborn) и получаем графики, которые вы видели в начале статьи.

Если вам интересны исходники читалки, прошивка и код для обработки данных — могу поделиться, пишите в личку.

Источник

Как узнать состояние аккумулятора iPhone, не разбирая его

После скандала с замедлением iPhone при износе аккумуляторов, Apple сложно доверять. Большинство способов определить износ, а значит, потребовать замену АКБ — программные. Кто знает, может быть и здесь что-то подкрутили?

Как обычно определяют износ аккумулятора iPhone?

Программы сторонних разработчиков из Apple Store вряд ли могут стать точным диагностическим средством. Они работают от начального уровня заряда в аккумуляторе, определяя с помощью встроенных датчиков смартфона напряжение на батарее. Оно пересчитывается в емкость. А вот она уже сопоставляется с табличными данными о модели iPhone.

Но датчикам нужна откалиброванная батарея. Скажете, их давно не нужно калибровать? Да, не нужно. Но это не значит, что данные в системе не могут отличаться от истинных. Скорее даже так — они точно отличаются от реальных.

Со временем батарейка деградирует, ее емкость снижается — а уровни напряжения на ней остаются теми же самыми, что и у здоровой, новой батареи.

В данном случае программы для исследования емкости и качества батареи пользуются данными из эксплуатации смартфонов: данные о напряжении сравниваются с количеством циклов заряда-разряда. Статистика подобного износа ведется и самой Apple, и сервисными центрами. Но это не значит, что мы можем ей доверять, и то, что она верна.

За базу берутся данные, получаемые при испытаниях. Цикл зарядка-разрядка повторяется некоторое число раз с проведением исследования остаточной емкости батареи. При этом уровень заряда и разряда — фиксированное значение. Скажем, 10% от общей емкости.

При реальной эксплуатации они могут оказаться неподходящими. Точный алгоритм вычисления числа циклов довольно сложен, и вряд ли совпадает с реальным профилем использования. Вы же заряжаете смартфон каждый раз с нового уровня? Иногда — полностью разряженный. Иногда — только до 50%. А иногда и эксплуатируете его во время зарядки.

Такие случаи обрабатываются неправильно. А износ — все равно происходит. Причем, у каждого аккумулятора этот процесс свой. Какой-то быстрее, какой-то медленнее. Так устроена вся электроника. Без погрешности не обойтись — особенно если допускать полный разряд.

Все исправимо, если работать с аккумулятором минуя операционною систему.

Тестер как точное доказательство


Для этого потребуется китайский тестер за 400 рублей или 300 рублей (именно такой представлен в статье). И даже Apple не сможет обмануть — а сервисные центры и подавно.

Что из себя представляет искомый тестер? Это небольшой USB-стик с LED-экраном. Устанавливается в разрыв электрической цепи между розеткой и смартфоном.

Если еще точнее: тестер устанавливается в зарядное устройство, кабель смартфона подключается к тестеру. На экране появляются данные, связанные с процессом зарядки смартфона. В зависимости от типа тестера, можно выяснить:

  • силу тока, протекающего через кабель,
  • напряжение тока на входе смартфона,
  • мощность тока, заряжающего смартфон,
  • емкость тока, поступившего в аккумулятор.
Читайте также:  Iphone 12 mini 5 элемент

Некоторые из тестеров умеют хранить предыдущие данные о уже измеренных параметрах. Удобно в тех случаях, когда процесс зарядки приходится прервать, чтобы не разряжать/заряжать с нуля.

Куда важнее поддержка прибором быстрой зарядки. Фактически, все они умеют измерять параметры зарядного тока смартфонов при работе с Qualcomm Quick Charge, Mediatek Pump Express или Apple Quick Charge. Но у некоторых моделей экран обладает ограниченным числом разрядов протекающего тока: единицы, десятые, сотые. Впрочем, при измерении емкости такой проблемы нет.

Не всякий тестер может пропустить через себя повышенное напряжение, используемое в алгоритмах быстрой зарядки. Тогда процесс пройдет, измерение будет верным — но очень долгим.

Методика измерения емкости аккумулятора

Правильная методика измерения с помощью таких тестеров дает результат на порядок точнее любых программных методов. Результаты не зависят от чьей-либо статистики или программных пересчетов. Только точные данные о емкости и токе с погрешностью не больше 10% от емкости аккумулятора.

При правильном применении тестера погрешность будет значительно ниже. Методика измерения такова:

  1. полностью разряжаем смартфон (в ноль),
  2. подключаем к зарядному устройству тестер и кабель,
  3. сбрасываем показания тестера (при наличии),
  4. подключаем выключенный смартфон,
  5. заряжаем до тех пор, пора показания тока на тестере не снизятся до минимальных.


Как определить минимальные показания. Среднестатистический смартфон заряжается током от 1 до 3 А. Оно может меняться в зависимости от типа смартфона, поддержки быстрой зарядки, качества кабеля и зарядного устройства. Текущее значение можно будет увидеть на экране тестера. Когда аккумулятор будет заряжен, ток, протекающий через кабель, упадет до 0,1-0,3 А.

Как правильно использовать данные

Все очень просто. Любой, даже самый китайский тестер, показывает символы на английском. Нам нужны показания рядом с надписью “mAh”. Смотрим, сколько показывает тестер. Смотрим, при каких параметрах тока эти данные были получены.

Внимание: Все батареи смартфонов заряжаются током выше . А ёмкость батареи рассчитывается при 3,7 В. Если данные на экране напугали — нужно сделать пересчет.

Если порядок цифр совпадает с паспортным, принимаемся анализировать данные. Батареи новых смартфонов показывают расхождение с паспортными данными до 3%. То есть, если емкость аккумулятора условного Xiaomi Mi Note 3 официально составляет 3500 мАч, то полученные данные в промежутке от 3400 до 3500 — норма. Не очень хорошо, но и так может быть.

В идеальном случае разница все равно есть, но приближается к 1% (причем, без учета погрешности). “Здоровый” аккумулятор отстает от данных производителя на 10-15%. Спустя год хорошие батарейки сохраняют около 75% емкости, плохие — порядка 50%.

Для чего еще можно использовать такой прибор

Здоровье аккмулятора хорошо показывает состояние устройства — не обязательно смартфона. Описываемый тестер подходит к для проверки любых аккмуляторов, которые можно зарядить через USB-кабель. Главное, чтобы параметры тока укладывались в предел измерений.

При заказе через интернет в Китае первую зарядку точно стоит делать с помощью такого прибора. Большая разница с паспортными данными — повод открыть спор и получить компенсацию. А то и сделать возврат.

Бывшие в употреблении гаджеты так же стоит прогонять через проверку. Если емкость батареи на уровне 60% — стоит отказаться от покупки, либо говорить о необходимости замены.

Но куда чаще приходится использовать USB-тестер для исследования качества USB-проводов и зарядных устройств. В данном случае нас интересуют мгновенные параметры — напряжение и сила тока. Если на руках есть хотя бы 2 проверенных устройства из трех необходимых для замера.

Из практики, после такого исследования половина USB-шнурков уходит в мусорное ведро, поскольку не поддерживают быструю зарядку. О маломощных китайских зарядках и вовсе стоит умолчать — догадаетесь сами. Беспроводные тоже можно проверить.

Невероятно полезная штука за 300 рублей. Нужна в каждый дом.

Источник

Оцените статью