[Из песочницы] Красивые точные часы из старого смартфона

v3zbxe4oreekk9jb1bdtkraqdcu.jpeg

Речь в статье пойдёт о том, как старый ненужный мобильник переделать в отличные настенные часы с крупными цифрами, всегда точным временем и резервным питанием.

Я расскажу о некоторых выясненных особенностях сихронизации времени в ОС Андроид, а также о разных электрических хитростях в системе питания смартфона. Опишу пример схемы на несложных аналоговых компонентах, которая осуществляет автоматическое резервное питание. И конечно речь будет о программной части андроид — как и с помощью чего можно самому сделать из смартфона красивые часы на любой вкус.
(традиционный disclaimer — любые упомянутые бренды, трейдмарки и т.п. не являются рекламой, надеюсь это понятно.)

Вторую жизнь старому смартфону


У меня давно лежал без дела старенький Philips Xenium W732. Полностью работающий, с целым экраном. Я решил дать ему вторую жизнь — превратить в настенные часы. Мои старые домашние часы, ещё советские, с мерцающими маленькими цифрами было очень плохо видно уже с пары метров. К тому же они жутко отставали, их то и дело приходилось подводить, а при любом пропадании электричества в доме вообще обнулялись и требовали нудной процедуры тыкания в кнопки и установки времени заново. Всё это мне давно надоело, и я решил сделать из старого мобильника хорошие «умные» часы, лишённые всех этих недостатков.

Что мне было нужно


  1. Большие чёткие цифры любого желаемого цвета, шрифта и яркости.
  2. Максимальная точность и стабильность хода без какого-либо моего вмешательства извне.
  3. Энергонезависимость, т.е. часы должны продолжать работать при временных перебоях с электричеством.
  4. Полностью автономная работа, в смысле — без использования каких-либо оплачиваемых сетей данных, сим-карт, операторов и т.п.
  5. Максимальное соответствие принципу «сделал, включил и забыл». То есть устройство никогда не должно требовать ни обслуживания, ни ещё какого-то интерактива.


Обеспечиваем Android точным временем


Первым делом нужно было получить в смартфоне постоянно точное мировое время. Понятие «точное» для меня вполне укладывается в 1…2 секунды отклонения от мирового.

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

В самом простом случае в андроиде её можно настроить по методу «по сети». При этом не потребуется даже сотовая сеть с неизбежными сим-картами и оплатами тарифов. Достаточно раздать на смартфон домашний вайфай, а роутер настроить на синхронизацию времени от провайдера интернета или ntp-сервера.

Однако есть и второй метод синхронизации — по спутникам GPS, который лично я считаю лучше.

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

Из недостатков GPS — устройство должно видеть хотя бы немного открытого неба. В произвольном месте в глубине комнаты скорее всего ничего не поймается, особенно если в устройстве старый и нечувствительный чип. А так как мои часы располагались именно вдали от окна, мне понадобилась выносная GPS-антенна…

Простейшая внешняя антенна для приёма GPS


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

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

Фото контактов GPS-антенны на плате W732
nnemci1spx4laynkv4kd_fe_syy.jpeg
К этим контактам припаивается оплётка и центральная жила коаксиала


Другой конец кабеля я просто освободил от экранной оплётки, чтобы осталась центральная жила длиной 95 мм — это половина длины волны на частоте L1 стандартного сигнала GPS (1575,42МГц).

Простейшая GPS-антенна. Полуполновой диполь
asa2yk0mwvmd034n7maxcwsexkq.jpeg
Эту антенну нужно расположить как можно ближе к окну.
Я приклеил её к стеклу скотчем.


Телефон унёс подальше от окна, а зачищенный на 95 мм конец провода наоборот поднёс к окну, чтобы ему было побольше видно неба.

И что же — филипс вскоре наловил свои честные 5…7 спутников и зафиксился! Антенна работает!

А я ещё волновался по поводу якобы необходимого в таких случаях согласования волновых сопротивлений кабеля, антенны и приёмника, которым мне запудрили мозги в интернете на антенных форумах. Позже я выяснил, что такое согласование сопротивлений нужно для того, чтобы просто получить максимальную эффективность линии передачи (отсутствие концевых отражений и чрезмерного затухания). А если линия всего 2…3 метра, как у меня, и задача стоит просто доставить хоть какую-то часть сигнала до приёмника, то об этом согласовании можно вообще не задумываться — всё будет работать с любым коаксиалом.

Особенности процесса GPS-синхронизации


Получив работающий GPS, я конечно сразу выставил в настройках андроида метод синхронизации времени «по спутникам GPS» и оставил телефон в таком состоянии на проверку. Каково было моё удивление, когда несколько часов спустя время на телефоне ощутимо «разъехалось» с контрольными часами на компьютере (там windows синхронизирован по ntp). Стал выяснять причину… Оказалось, что андроид, настроенный на синхронизацию времени по GPS, фактически производит эту синхронизацию лишь один единственный раз — в момент фикса координат.
А потом, даже несмотря на то, что смартфон продолжает непрерывно отслеживать спутники, его системное время всё равно определяется только внутренним генератором, то есть никакой синхронизации и не ведётся вовсе! По крайней мере в моём филипсе на андроиде 4.0.3 всё происходит именно так.

Для меня это стало неприятным сюрпризом. Не буду же я то и дело вручную дёргать GPS, чтобы обновить точное время…

Решение было найдено программное. Я использую для навигации программу Locus от Asamm software, в которой можно настроить не постоянное поддержание GPS в активном состоянии, а периодические одноразовые фиксы координат через заданные промежутки времени, то есть именно то, что мне и требовалось. Я выставил интервал 15 минут, и проблема благополучно исчезла — время в мобильнике с этих пор всегда чётко совпадает с мировым! За 15 минут системный таймер любого нормального смартфона не накопит ошибку времени больше 1…2 секунды, что вполне меня устраивает. При желании можно фикситься по-горячему хоть каждые десять секунд.

Организация питания стационарного смартфона


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

Как я уже упоминал, мне требовалось, чтобы часы не отключались и не обнулялись при кратковременных пропаданиях электричества в доме, которые хоть и редко, но случаются.

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

Штатный аккумулятор филипса
p7e6ojfzrl_xu9egovxblz_l6mi.jpeg
Это его нормальное состояние. Плоский и твёрдый…


Как вы понимаете, мне ещё крупно повезло, что швы корпуса батарейки выдержали и не вскрылись, иначе не миновать бы мне литиевого пожара, дыма, вони и испорченного линолеума.

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

Известно, что чем выше напряжение на литий-ионной ячейке, тем быстрее идёт её старение и деградация. Некоторые смартфоны вообще заливают свои аккумуляторы даже выше 4,2В, чтобы максимально увеличить время автономной работы. А результат один — постоянно находясь под максимальным напряжением, батарея значительно быстрее деградирует. Если она к тому же ещё и старая, то тут недалеко до постепенного развития микроскопических внутренних замыканий, теплового разгона и взрыва, как это случилось у меня.

После казуса со взорвавшимся аккумулятором я задумался — как мне одновременно и иметь резервное питание и не допустить постоянного нахождения батареи под полным напряжением?

Перебрал много разных сценариев, в итоге остановился на следующем.

В обычном режиме телефон будет всегда питаться от розетки, то есть 5В через разъём USB.

Резервный аккумулятор с помощью несложной дополнительной схемы автоматически и единовременно заряжается до его нормального максимума 4,2В, после чего полностью отключается от заряда. Далее аккумулятор просто спокойно разряжается саморазрядом, будучи никуда не подключённым. При этом схема постоянно следит за его напряжением и вновь включает единовременный заряд до 4,2 только когда вольтаж ячейки опустится ниже определённого заданного минимума (я принял 3,6B). И так далее, всё на полном автомате. Реальное время между этими подзарядками составляет годы, в течение которых аккумулятор медленно саморазряжается, но тем не менее остаётся вполне способным в любой момент запитать нагрузку, пусть даже и не от полной своей ёмкости.

В случаях пропадания питания от розетки аккумулятор должен быть тут же автоматически подключён к смартфону (как в бесперебойниках), после чего система продолжит работать от него автономно до восстановления сетевого питания, либо до полного исчерпания заряда (и выключения).

При таком подходе литиевая ячейка эксплуатируется в более щадящем режиме, чем при постоянном поддержании на ней максимального напряжения. И уж точно не взорвётся!

Хитрости смартфонной электрики


Теперь о том, как всё это реализовать схемотехнически.

Дело тут осложняется тем, что в смартфоне оказалось не так всё просто организовано в системе питания.

Например, без аккумулятора телефон не включится даже при наличии 5В по USB.

Если вынуть аккумулятор во время работы от USB — тоже сразу всё гаснет. Хотя питание-то при этом явно идёт только от USB-разъёма!

Ещё поначалу была проблема с третьим контактом аккумулятора. Я не хотел быть привязанным к штатной филипсовской батарейке и решил выяснить — что будет, если оставить клемму третьего контакта вообще не подключённой? Оказалось, смартфон при этом не включится… Я даже начал опасаться, что по среднему контакту идёт какая-нибудь мудрёная цифровая шина, типа i2с, которая передаёт телефону не только разную техническую телеметрию, но и всякие заводские коды в стиле «свой-чужой». Это означало бы, что я навсегда привязан к родному аккумулятору филипса, потому что городить тут какие-то обманывающие цифровые интерфейсы я точно не намеревался (помню, подобный сюрприз был у меня при работе с аккумуляторами видеокамеры от всемирно известной и уважаемой японской фирмы).

Я посмотрел осциллографом что там происходит на третьем контакте. На моё счастье у Philips W732 всё оказалось очень просто! Туда выведено обычное постоянное напряжение от внутреннего датчика температуры аккумулятора. Вход третьего контакта в смартфоне высокоимпедансный.

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

График зависимости отображаемой температуры батареи от напряжения 3-го контакта
dc-ggdncroj-gfw1mrxyiltj530.png


Выяснилось, что если на третьем будет менее 153 мВ, начнутся полноэкранные предупреждения о перегреве батареи и через несколько секунд телефон штатно выключится. При напряжении выше 630 мВ андроид начинает считать, что его аккумулятор замёрз до минусовой температуры, но будет продолжать работать (и даже молча!). Дальше мне экспериментировать уже не требовалось — я просто понял, что обмануть третий контакт здесь элементарно — просто подать туда любой потенциал между 155 и 600 мВ.

В итоге у меня оформилось 2 критерия, без соблюдения которых смартфон вообще не заработает:

1. Обязательное наличие напряжения на плюсовой клемме аккумулятора (несмотря на то, что система питается от разъёма USB)

Причём это должна быть не какая-нибудь фейковая обманка потенциала, просто чтобы телефон думал, что в него вставлена батарейка. Требуется именно полноценный низкоимпедансный источник напряжения с током не менее рабочего тока смартфона.

2. Наличие постоянного напряжения на третьем контакте аккумуляторной колодки в диапазоне 155…600 мВ. Здесь уже достаточно простого высокоимедансного потенциала-обманки.


Кстати, до сих пор не понимаю для чего в андроиде выставлено такое высокое значение порога выключения (3,4В), в то время как стандартная литиевая ячейка запросто может безопасно разряжаться до 3 и даже 2,8В! Единственное, что приходит на ум — это наличие в смартфонах внутренних потребителей на 3,3В, которым нужен запас по питанию для их buck-преобразователей. Но можно ведь и SEPIC поставить и использовать аккумулятор более полно! Или в современный век об этом уже никто не думает?

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

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

Во-первых, если на батарейный плюсовой вывод ничего не подключено, контроллер заряда всё равно не спит и периодически «щупает» его проверками.

Осциллограмма напряжения на плюсовой клемме аккумулятора
bihckq8fd_wy5kabjuultdy7oai.png
(реконструкция реальной осциллограммы)


Видите — примерно через каждые 45 миллисекунд телефон выдаёт лесенку из последовательных «прощупываний» — не появилось ли на контакте аккумулятора внешнее напряжение? А между этими проверками держится некий постоянный уровень 4,05В.

Если подключить аккумулятор, система распознаёт его и исправно начинает заливать туда ток. Но, опять же, не постоянно, а периодами по 10 секунд. Через каждые эти 10 секунд заряда смартфон на 2 секунды включает полноценный реверс тока, т.е. отбирает ток от аккумулятора, причём с приличной силой (точные числовые значения всех этих параметров я не измерял, мне был интересен принцип). Во время этого кратковременного отбора тока смартфон измеряет заряд аккумулятора под нагрузкой, получая таким образом честные цифры процентов и вольтажа. Было хорошо видно, как именно после этого реверса в андроиде обновляются значения всех параметров батареи.

Весь этот хитрый механизм заряда мне совершенно не подходил, и даже мешал, потому что я предполагал строить логику зарядных цепей, основываясь на непрерывном аналоговом контроле напряжения на измерительном шунте. И автоматически выключать заряд, когда падение на шунте снижалось бы до заданного минимума, свидетельствуя о достижении зарядным током окончательной стадии заряда. А тут этот реверс совершенно всё портил… Я сначала пытался как-то это обойти или обмануть, но в результате понял, что проще применить внешний источник эталонного зарядного напряжения. Это будет и надёжнее и прозрачнее для последующего понимания.

Я поставил внешний интегральный стабилизатор (обычный, линейный), с помощью которого получал из плохо стабилизированных 5…6В USB-зарядника точные и температурно-стабильные 4,2В. Ими я, во-первых, запитал смартфону плюсовую клемму аккумулятора, чтобы тот всегда думал, что у него 100% заряженная батарейка и никогда ничего по этому поводу не вещал на весь экран. А во-вторых, от этой шины работает система заряда резервного аккумулятора.

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

Так андроид нарисовал график «разряда аккумулятора»
m-_jdcx_h9vkganwg0-nuci6fdc.jpeg
b7y_vvrfjlfd_5teazjmiksc8bi.jpeg


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

Однако как только заряд доходит до 15% (здесь телефон выдаёт предупреждение о разряженной батарее), график перестаёт снижаться и дальше так и идёт горизонтально на 15%… Вот такая хитрость (или глюк).

Была и ещё одна особенность. Оказалось, что если подать одновременно питание по разъёму USB и стабилизированное внешнее питание на клемму аккумулятора, но меньшее, чем 4,2В, то смартфон сначала будет долго и честно показывать неполный процент заряда, а потом вдруг начнёт ругать, в стиле »У вас что-то с батареей! Заряд идёт слишком долго! ». И конечно же всё это опять в полный экран и поверх моих часов!

Ну, а если подать больше 4,2В, то уже где-то с 4,3В он начнёт ругаться про опасное превышение вольтажа батареи, это понятно. Поэтому «диапазон спокойствия» тут довольно узкий — всего 0,1В.

И вот только если ему обеспечить и питание 5В по USB, и полную эмуляцию точных 4,2В по клемме аккумулятора — вот только тогда андроид счастливо замолкает, считая, что он честно зарядил свою батарейку до максимума. И больше он уже, слава богу, ни на что никогда не жалуется!


Сразу успокою тех, кто, возможно, подумал, что я сделал очень плохо, нагрузив два несогласованных низкоимпедансных источника напряжения друг на друга (т.е. внешний 4,2В-стабилизатор и плюсовую клемму аккумулятора, которая сама по себе тоже «питает»). Дело в том, что мой внешний стабилизатор представляет собой обычный линейный LDO и по своей схемотехнике не умеет отводить ток. Только подводить. Поэтому никаких электрических конфликтов тут не возникает, как это может случиться, например, при параллельном соединении нескольких разных батареек.

Схема


Когда ТЗ наконец полностью определилось, можно было приступать к разработке конкретной схемы. Несмотря на кажущуюся простоту задачи, повозился я с ней знатно! Пришлось понавыдумывать и потом забраковать больше десятка разных вариантов, от неприлично простых, до громоздких. Вот что получилось в итоге:

Схема управления питанием
5pav_ru8mahbacmdyz4xxr6covo.png


Несмотря на кажущуюся избыточность, схема несложная. Благодаря SMD, платка размером 35×22 мм легко умещается внутри отсека вынутого штатного аккумулятора. В качестве резервного аккумулятора я применил обычный литий-ион 18650, смонтированный на подставке часов.

Схема обеспечивает следующие функции:

  1. Основное постоянное питание 5В от розетки через разъём USB.
  2. Автоматический перевод смартфона на резервный аккумулятор при пропадании питания от USB.
  3. Подвод стабильных 4,2В в аккумуляторную клемму смартфона (чтобы андроид всегда был спокоен).
  4. Эмуляцию напряжения для третьего аккумуляторного контакта (при любом режиме питания).
  5. Автоматический старт заряда резервного аккумулятора при понижении его вольтажа ниже заданного уровня.
  6. Заряд резервного аккумулятора по упрощённому, но безопасному закону.
  7. Автоматическое прекращение заряда по достижению заданной величины зарядного тока.
  8. Резервный аккумулятор не держится всегда под максимальным напряжением.


Теперь вкратце, как схема работает.

Чтобы получить стабильные и температурно-независимые 4,2В, я применил замечательный интегральный LDO ADM7172 от Analog Devices. Он выдаёт мне нужный и идеально ровный вольтаж 4,22В вплоть до 2А нагрузки. Его я пускаю в смартфон на плюс батарейного разъёма (VBAT), а также использую для заряда резервного аккумулятора системы.

Цепь эмуляции напряжения для третьего контакта батареи (TEMP) сделана на простом диоде D2, запитанном мизерным фоновым током.

P-канальный мосфет Q4 подключает к смартфону резервный аккумулятор сразу, как только на основной питающей шине +5V USB пропадает напряжение. Светодиод LED2 здесь поставлен только с целью сдвига уровня для небольшого ускорения открывания Q4 в процессе просадки шины. Он инфракрасный и никуда не светит.

На остальных деталях сделана схема заряда. Резервный аккумулятор BT1 заряжается через мосфет Q3 и контрольно-ограничивающий резистор R9R10.

Здесь интересна работа ИОУ U2. Он тут так включён, что обеспечивает одновременно контроль и степени разряда и степени заряда. ОУ здесь работает в режиме компаратора, а положительная ОС для него получается сама собой за счёт процессов в управляемых им цепях.

Вот как это происходит: когда всё нормально — есть питание +5В USB и резервный аккумулятор заряжен до вольтажа, выше, чем выставлено точкой делителя R4R5R6 — тогда ОУ выдаёт на выходе потенциал 4,2-вольтовой шины (от которой он питается), и зарядный мосфет Q3 закрыт. Когда аккумулятор по той или иной причине разрядится ниже этой точки (+3,63В на схеме), выход ОУ постепенно «отлипнет» от плюса и тем самым откроет зарядный мосфет Q3. В аккумулятор потечёт ток, напряжение на ячейке сразу же подрастёт хотя бы на несколько милливольт (за счёт ненулевого внутреннего сопротивления) и это послужит надёжной ПОС для ОУ. Здесь можно применить и настоящий компаратор с собственным гистерезисом, но в реальности переключение усилителя происходит надёжно и быстро, никаких дребезжащих дрейфов нет.

Заряд аккумулятора идёт через резистор R9R10 (он составной с целью увеличения мощности рассеяния). Во-первых, он ограничивает зарядный ток, что здесь совершенно необходимо, иначе даже 2-амперный зарядник банально не справится и просядет. Во-вторых, по падению напряжения на этом резисторе схема определяет момент, когда надо выключить заряд.

Происходит это так: как только включается заряд, то одновременно открывается вспомогательный мосфет Q2, который перестраивает контрольный делитель R4R5R6 для инвертирующего входа ОУ, и таким образом ОУ начинает отслеживать уже то напряжение, которое выделяется на зарядном резисторе. В самом начале заряда, когда аккумулятор полностью разряжен, на R9R10 падает около 0,5В, отчего ОУ оказывается надёжно разбалансированным в состоянии режима заряда. И только когда аккумулятор постепенно полностью зарядится, ток через контрольный резистор ослабеет до определённого значения (примерно 20 мА), тогда и потенциалы входов ОУ выравниваются, после чего он тем же внешним механизмом ПОС перебрасывается в противоположное состояние (плюс на выходе), выключая мосфеты Q2 и Q3 и прекращая заряд.

Что касается получаемого такой схемой профиля заряда литий-ионного аккумулятора, то резистор R9R10 здесь автоматически реализует простую зарядную функцию с максимальным начальным током, автоматическим постепенным его снижением и приближением к нулю.

График зарядной функции
yx6ocxkusa2pis2406l_y9jqvrq.png


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

Типовой рекомендуемый профиль заряда для Li-ion
rto0abfgdgab_tlfpkkwdhx2cdu.jpeg


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

Мосфет Q1 применён для того, чтобы при работе только от резервного аккумулятора не тратить напрасно его ток на запитку всей остальной схемы. При пропадании питания от розетки, Q1 закрывается и отсекает всю неиспользуемую часть схемы от общего провода. Благодаря этому собственное потребление всей конструкции падает до ничтожных 3…5 микроампер, и это автоматически предотвращает глубокий разряд аккумулятора в случае, если вообще забыть об обесточенной системе надолго.

Диод Шоттки D1 на входе в стабилизатор U1 выполняет двойную функцию — блокировку обратного тока через U1 (внутри ADM7172 такой блокировки нет) и разгрузку маленькой микросхемки стабилизатора от чрезмерной рассеиваемой мощности. В самом начале заряда аккумулятора зарядный ток достигает 1А, и если весь 1 вольт перепада напряжения от шины +5В USB возложить на крошечную ADM7172 размером 3×3 мм, она будет уж очень горячая, даже несмотря на термопэд, припаянный к плате. Поэтому часть входного напряжения удачно гасится на блокировочном диоде D1, и в итоге обе эти детали разогреваются более равномерно и не так сильно.

Об использованных компонентах


В качестве входного стабилизатора я применил отличный LDO с действительно низким минимальным проходным падением, хотя в данном месте напряжение на нём никогда не опустится менее 0,4В. Просто ADM7172 мне очень нравится по многим его характеристикам. А так тут можно поставить практически любую микросхему линейного стабилизатора, главное, чтобы она выдавала надёжные вольты, не плавающие от температуры, и хотя бы 1,5А тока.

От мосфетов мне здесь были нужны минимальные сопротивления канала в открытом состоянии (RdsON). Особенно это касается разрядного P-канального ключа Q4. Туда я поставил великолепный тошибовский образец TPH1R712MD — лучшее, что нашлось по сопротивлению канала в маленьком плоском корпусе. В открытом состоянии у него реальные 1,3 мОм, что при рабочем токе смартфона в 200…300 мА даёт транзитные потери ценного аккумуляторного напряжения на уровне ничтожных 0,4 мВ!

Низкое RdsON также желательно иметь для Q1, чтобы поточнее привязываться к потенциалу общего провода. У мосфетов FDMC8010 от Fairchild с этим тоже всё хорошо. Есть и более низкоомные экземпляры, но в данной конструкции мне были важны ещё и маленькие размеры деталей.

Остальные мосфеты могут быть любыми, желательно только, чтобы у них было поменьше пороговое напряжение открывания.

В качестве компаратора U2 я использовал микромощный ИОУ MCP6V11 от Microchip, который мне приглянулся прекрасной экономичностью — всего 7 микроампер в фоне. Правда, по сравнению с обычными ИОУ он конечно медленный как черепаха (GBW 80кГц и скорость нарастания всего 0,03В/мкс). Но всё равно прекрасно здесь работает. Я, кстати, пробовал ставить сюда и настоящий компаратор со встроенным гистерезисом. Нашёл отличный образец MCP6541, который потребляет в фоне всего 600 наноампер (!), а при срабатывании умеет дёргать выход с силой до 30 мА… Но, поставив его напрямую вместо MCP6V11 (их распиновка совпадает), я внезапно получил несрабатывание схемы. Оказалось, что MCP6541 переключается настолько быстро, что скоростной фронт его импульса легко проникает через межэлектродную ёмкость затвора Q2 в цепь контрольного делителя R4R5R6 и попадает на свой же инвертирующий вход. Получается такая динамическая обратная связь, и компаратор не переключается, а начинает генерировать.
Проблема устранится простым добавлением высокоомного резистора между выходом компаратора и затвором Q2, но у меня уже была готовая плата, на которой даже для одного дополнительного маленького SMD-резистора совершенно не было места, поэтому я просто оставил здесь MCP6V11.

Светодиод LED1 нужен только для индикации, когда в аккумулятор льётся заряд. По-хорошему это должно происходить раз в несколько лет… Можно применить абсолютно любой, любого цвета, а можно его вообще не ставить.

Резисторы и конденсаторы самые обычные SMD, к ним никаких требований, кроме маленького размера. Конденсаторы я применил танталовые, lowESR, в корпусах 7343H, но сгодятся любые, лишь бы влезли вместе с платой в отсек аккумулятора (у филипса W732 он размером 55×60х8 мм).

В процессе заряда аккумулятора вся плата первые пару часов прилично греется, градусов до 60. Так как места в отсеке ещё хватало, я намеренно увеличил площадь платы и пошире разнёс на ней греющиеся детали, чтобы они зря не перегревали друг друга и остальных своих соседей.

Плата управления питанием в отсеке аккумулятора
btbfjybybqxy0ope5aikbng-efw.jpeg


Делал вручную, фоторезистом. ФР-метод позволяет легко получить «техпроцесс» 0,15 мм, но у меня почему-то весь текстолит такого дурного качества, что тонкие дороги норовят отвалиться при лужении… Если кто-нибудь знает где можно с гарантией купить хороший качественный текстолит — пишите в комментах!

Итак, смартфон наконец нормально запитан, и работает «как часы» во всех смыслах! Стабильно включается как с питанием от розетки, так и от аккумулятора, работает молча. При подключённом заряднике всегда показывает 100% заряд. Если вынуть из розетки — продолжает спокойно работать от резервного аккумулятора, и вскоре начинает отображать реальное напряжение на нём. При восстановлении сетевого питания опять же молча и спокойно показывает 100% заряд. Всё как надо!

В принципе, через подобную схему можно запитать любой мобильник, у которого по третьему контакту аккумулятора передаётся простое постоянное напряжение.

Цифровые часы для Android


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

Вот что мне требовалось:

  1. Максимально крупные цифры! Не люблю щуриться и разглядывать мелкоту издалека.
  2. Возможность поставить любой шрифт любого цвета. От этого тоже зависит удобочитаемость.
  3. Эксклюзивность отображения часов на экране — ничего, кроме цифр времени там быть не должно. Никаких прогнозов погоды, предупреждений, сообщений, строк состояния и прочей ерунды — никогда не должно появляться.
  4. Ясное дело, что экран смартфона никогда больше не должен был гаснуть сам по себе.
  5. Грамотно работающая функция автояркости экрана.
  6. Максимальная надёжность работы (я всё таки живу по этим часам). Зависы, фризы — всё это исключено.


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

Пот

© Habrahabr.ru