Ремонт налобного фонаря
Поработав около года, мой налобный фонарь LED Headlight XM-L T6 стал включаться через раз, а то и вообще отключаться без команды. Вскоре перестал включаться совсем.
Первым делом я подумал, что отходит аккумулятор в батарейном отсеке.
Сам бокс рассчитан на литий-ионные аккумуляторы типоразмера 18650 с платой защиты. А я использовал аккумуляторы без защиты и заряжал их универсальной зарядкой Turnigy Accucell 6 (аналог IMAX B6).
Поэтому пришлось нарастить контакты каплей припоя. Как известно, припой сплав мягкий и со временем напайка на контакте могла поистереться, а соединение с аккумулятором нарушиться.
Но, после проверки выяснилось, что причина неисправности кроется вовсе не в плохом контакте, а электронной начинке фонаря.
Любой ремонт начинается с диагностики и разборки. Разбирается фонарь легко. Вынимаем литиевый аккумулятор из батарейного отсека. Далее выкручиваем четыре шурупа.
Под поддоном для аккумуляторов смонтирована небольшая печатная плата.
На печатке всего десять элементов. Функцию управления выполняет миниатюрная микросхема в корпусе SOT-23-6 с маркировкой 819L 24 (U1). Как оказалось, это микросхема FM2819 — специализированный контроллер (не драйвер!) для светодиодов. Называть эту микросхему драйвером как-то язык не поворачивается.
Данная микросхема поддерживает четыре режима управления светодиодом, в том числе строб, от которого все хотят избавиться. Режимы переключаются циклически по команде с тактовой кнопки без фиксации.
Если бы мой фонарь не сломался, то о четвёртом режиме SOS, который активируется долгим нажатием кнопки (около 3 секунд), я бы и не узнал. Когда покупал, на странице продажи упоминалось только три режима.
Когда же стал изучать даташит на FM2819, то оказалось, что эта микросхема поддерживает четыре режима.
О микросхеме FM2819 я расскажу чуть позднее, а пока разберёмся, за что отвечают остальные элементы схемы.
Жёлтый керамический конденсатор запаян вместо родного, который отвалился, когда я разбирал корпус батарейного отсека. Судя по фото аналогичных фонарей ёмкость конденсатора, который установлен между выводом KEY и минусом "-" питания, может быть в довольно больших пределах. В моём был установлен чип-конденсатор на 10pF (100), а в других фонарях могут быть запаяны и на 10nF (103), и на 100nF (104), а то и вовсе отсутствовать.
Функцию силового ключа, который подаёт напряжение питания от литиевого аккумулятора на мощный светодиод, выполняет P-канальный MOSFET транзистор FDS9435A в корпусе SO-8. На фото видно, что на его корпусе указана сокращённая маркировка 9435A.
Плюс питания со стока транзистора FDS9435A подаётся на мощный светодиод не напрямую, а через три токоограничивающих резистора (R200 — 0,2 Ом; R500 — 0,5 Ом; 2R0 — 2 Ом). Они соединены параллельно. Их общее сопротивление меньше наименьшего сопротивления в цепи (т.е. меньше 0,2 Ом). Если посчитать, то оно равно 0,13 Ом.
О том, как соединять резисторы и рассчитывать их общее сопротивление я рассказывал тут.
Для подсветки тылового индикатора LED HEADLIGHT используется обычный SMD-светодиод красного цвета свечения. На плате обозначен, как LED. Он подсвечивает пластину из белого пластика.
Так как батарейный отсек находится с тыльной части головы, то в ночное время суток такой индикатор хорошо заметен.
Явно не помешает при велопрогулках и ходьбе вдоль дорожных трасс.
Через резистор в 100 Ом плюсовой вывод красного SMD-светодиода подключается к стоку MOSFET-транзистора FDS9435A. Таким образом, при включении фонаря напряжение поступает и на основной светодиод Cree XM-L T6 XLamp, и на маломощный SMD-светодиод красного цвета свечения.
С основными детальками разобрались. Теперь расскажу, что же сломалось.
При нажатии на кнопку включения фонаря было видно, что красный SMD светодиод начинает светить, но очень тускло. Работа светодиода соответствовала штатным режимам работы фонаря (максимальная яркость, низкая яркость и стробоскоп). Стало ясно, что управляющая микросхема U1 (FM2819) скорее всего исправна.
Раз она штатно реагирует на нажатие кнопки, то, возможно, проблема кроется в самой нагрузке – мощном белом светодиоде. Отпаяв провода, идущие на светодиод Cree XM-L T6, и подключив его к самодельному блоку питания, я убедился в его исправности.
Далее решил замерить напряжение на самой плате, чтобы узнать, где потерялись драгоценные вольты от аккумулятора.
При замерах оказалось, что в режиме максимальной яркости, на стоке транзистора FDS9435A всего 1,2V. Естественно, этого напряжения не хватало для питания мощного светодиода Cree XM-L T6, а вот красному SMD-светодиоду его было достаточно, чтобы его кристалл начал тускло светиться.
Стало ясно, что неисправен транзистор FDS9435A, который задействован в схеме как электронный ключ.
В замену транзистору ничего подбирать не стал, а купил оригинальный P-канальный PowerTrench MOSFET FDS9435A фирмы Fairchild. Вот его внешний вид.
Как видим, на этом транзисторе присутствует полная маркировка и отличительный знак фирмы Fairchild (F), выпустившей данный транзистор.
Сравнив оригинальный транзистор с тем, что установлен на плате, мне в голову закралась мысль о том, что в фонаре установлена подделка или менее мощный транзистор. Возможно, даже брак. Всё-таки фонарь не успел отслужить и года, а силовой элемент уже "отбросил копыта".
Цоколёвка транзистора FDS9435A выглядит следующим образом.
Как видим, внутри корпуса SO-8 находится всего лишь один транзистор. Выводы 5, 6, 7, 8 объединены и являются выводом стока (Drain). Выводы 1, 2, 3 также соединены вместе и являются истоком (Source). 4-ый вывод – это затвор (Gate). Именно на него приходит сигнал с управляющей микросхемы FM2819 (U1).
В качестве замены транзистору FDS9435A можно использовать APM9435, AO9435, SI9435. Всё это аналоги.
Выпаять транзистор можно как привычными методами, так и более экзотическими, например, сплавом Розе. Также можно применить метод грубой силы – подрезать ножом выводы, демонтировать корпус, а затем отпаять оставшиеся на плате выводы.
После замены транзистора FDS9435A налобный фонарь стал работать исправно.
На этом рассказ о ремонте закончен. Но, не будь я любопытным радиомехаником, то так и оставил бы всё, как есть. Работает и ладно. Но мне не давали покоя некоторые моменты.
Так как изначально я не знал, что микросхема с маркировкой 819L (24) это FM2819, то вооружившись осциллографом, я решил посмотреть, какой сигнал подаёт микросхема на затвор транзистора при разных режимах работы. Интересно же.
При включении первого режима на затвор транзистора FDS9435A с микросхемы FM2819 подаётся -3,4. 3,8V, которое практически соответствует напряжению на аккумуляторе (3,75. 3,8V). Естественно, на затвор транзистора подаётся отрицательное напряжение, так как он P-канальный.
При этом транзистор полностью открывается и напряжение на светодиоде Cree XM-L T6 достигает 3,4. 3,5V.
В режиме минимального свечения (1/4 яркости) на транзистор FDS9435A с микросхемы U1 приходит около 0,97V. Это если проводить замеры рядовым мультиметром без наворотов.
На самом же деле в этом режиме на транзистор приходит сигнал ШИМ (широтно-импульсная модуляция). Подключив щупы осциллографа между "+" питания и выводом затвора транзистора FDS9435A, я увидел вот такую картину.
Картинка ШИМ-сигнала на экране осциллографа (время/деление — 0,5; V/деление — 0,5). Время развёртки — mS (миллисекунды).
Так как на затвор поступает отрицательное напряжение, то "картинка" на экране осциллографа переворачивается. То есть сейчас на фото в центре экрана показан не импульс, а пауза между ними!
Сама пауза длится около 2,25 миллисекунд (mS) (4,5 деления по 0,5mS). В этот момент транзистор закрыт.
Затем транзистор открывается на 0,75 mS. При этом на светодиод XM-L T6 поступает напряжение. Амплитуда каждого импульса составляет 3V. А, как мы помним, мультиметром я намерил всего лишь 0,97V. В этом нет ничего удивительного, так как мультиметром я мерил постоянное напряжение.
Вот этот момент на экране осциллографа. Переключатель время/деление установил на 0,1, чтобы лучше определить длительность импульса. Транзистор открыт. Не забываем про то, что на затвор приходит минус "-". Импульс перевёрнут.
Теперь можно посчитать скважность импульсов (S).
S = (2,25mS + 0,75mS) / 0,75mS = 3mS / 0,75mS = 4. Где,
S — скважность (безразмерная величина);
Τ — период следования (миллисекунды, mS). В нашем случае период равен сумме включения (0,75 mS) и паузы (2,25 mS);
τ- длительность импульса (миллисекунды, mS). У нас это 0,75mS.
Также можно определить коэффициент заполнения (D), который в англоязычной среде называют Duty Cycle (часто встречается во всяких даташитах на электронные компоненты). Обычно он указывается в процентах %.
D = τ/Τ = 0,75/3 = 0,25 (25%). Таким образом, в режиме пониженной яркости светодиод включен лишь на четверть периода.
Когда делал подсчёты первый раз, то коэффициент заполнения у меня вышел 75%. Но потом, увидев в даташите на FM2819 строчку про режим 1/4 яркости, понял, что где-то облажался. Я просто перепутал паузу и длительность импульса местами, поскольку по привычке принял минус "-" на затворе за плюс "+". Поэтому и вышло всё наоборот.
В режиме "STROBE" мне не удалось посмотреть ШИМ сигнал, так как осциллограф аналоговый и довольно старый. Синхронизировать сигнал на экране и получить чёткое изображение импульсов мне не удалось, хотя было видно его наличие.
Типовая схема включения и цоколёвка микросхемы FM2819. Может, кому пригодится.
Не давали мне покоя и некоторые моменты, связанные с работой светодиода. Со светодиодными фонарями я раньше, как-то не имел дела, а тут захотелось разобраться.
Когда я полистал даташит на светодиод Cree XM-L T6, который установлен в фонаре, то понял, что номинал токоограничительного резистора маловат (0,13 Ом). Да, и на плате одно посадочное место под резистор было свободно.
Когда шерстил по интернетам в поисках информации о микросхеме FM2819, то видел фото нескольких печатных плат аналогичных фонарей. На одних были запаяны четыре резистора по 1 Ому, а на некоторых вообще SMD-резистор с маркировкой "0" (перемычка), что, на мой взгляд, вообще является преступлением.
Светодиод – это нелинейный элемент, и, поэтому, последовательно с ним необходимо включать токоограничивающий резистор.
Если заглянуть в даташит на светодиоды серии Cree XLamp XM-L, то можно обнаружить, что их максимальное напряжение питания составляет 3,5V, а номинальное 2,9V. При этом ток через светодиод может достигать величины в 3А. Вот график из даташита.
Номинальным током для таких светодиодов считается ток в 700 mA при напряжении в 2,9V.
Конкретно в моём фонаре ток через светодиод составил 1,2 A при напряжении на нём в 3,4. 3,5V, что явно многовато.
Чтобы уменьшить прямой ток через светодиод я запаял вместо прежних резисторов четыре новых номиналом в 2,4 Ом (типоразмер 1206). Получил общее сопротивление в 0,6 Ом (мощность рассеивания 0,125W * 4 = 0,5W).
После замены резисторов прямой ток через светодиод составил 800 mA при напряжении в 3,15V. Так светодиод будет работать при более мягком тепловом режиме, и, надеюсь, прослужит долго.
Поскольку резисторы типоразмера 1206 рассчитаны на мощность рассеивания в 1/8W (0,125 Вт), а в режиме максимальной яркости на четырёх токоограничивающих резисторах рассеивается мощность около 0,5Вт, то от них желательно отвести излишнее тепло.
Для этого зачистил от зелёного лака медный полигон рядом с резисторами и напаял на него каплю припоя. Такой приём частенько применяется на печатных платах бытовой электронной аппаратуры.
После доработки электронной начинки фонаря покрыл печатную плату лаком PLASTIK-71 (электроизоляционный акриловый лак) для защиты от конденсата и влаги.
При расчётах токоограничительного резистора я столкнулся с некоторыми тонкостями. За напряжение питания светодиода стоит принимать напряжение на стоке MOSFET транзистора. Дело в том, что на открытом канале MOSFET-транзистора теряется часть напряжения из-за сопротивления канала (R(ds)on).
Чем выше ток, тем большее напряжение "оседает" по пути Исток-Сток транзистора. У меня при токе в 1,2А оно составило 0,33V, а при 0,8А – 0,08V. Также часть напряжения падает на соединительных проводах, которые идут с клемм аккумулятора на плату (0,04V). Казалось бы, такая мелочь, а в сумме набегает 0,12V. Так как под нагрузкой напряжение на Li-ion аккумуляторе проседает до 3,67. 3,75V, то на стоке MOSFET’а уже 3,55. 3,63V.
Ещё 0,5. 0,52V гасит цепь из четырёх параллельных резисторов. В итоге на светодиод приходит напряжение в районе 3-ёх с небольшим вольт.
На момент написания этой статьи в продаже появилась обновлённая версия рассмотренного налобного фонаря. В нём уже встроена плата контроля заряда/разряда Li-ion аккумулятора, а также добавлен оптический датчик, который позволяет включать фонарь жестом ладони.
Сгорел элемент в драйвере фонарика
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Объявления
- Ответов 55
- Создана 6 г
- Последний ответ 6 г
Топ авторов темы
ROMMo 6 постов
aRtecheR 6 постов
sanya110 6 постов
elki_palki 16 постов
Популярные посты
sanya110
КТ315 поставьте, если С945 нет. Но подозреваю, что и КТ315 тоже нет, а также нет представления о том, какова цоколевка выпаянного транзистора и как правильно впаять новый .
минздрав
Нет, не значит, успокойтесь, это значит, что его близко к ремонту РЭА нельзя подпускать. Он изуродует даже рабочую плату, не говоря о нерабочей.
o_l_e_g
Это NPN транзистор, ставь любой с током коллектора не менее 100 мА. Такая же плата, завелась с С945.
TinyFL — драйвер фонарика на микроконтроллере
Хочу рассказать историю о том, как мне в руки попал китайский налобный фонарик на светодиоде Cree XM-L и что дальше с ним стало.
Предыстория
Когда-то давно я заказал с одного китайского сайта фонарик с ярким светодиодом. Фонарик оказался довольно эргономичным (хотя он мог быть и полегче), но вот его драйвер оставлял желать лучшего.
Светил он достаточно ярко, но у драйвера было только 3 режима — очень яркий, яркий и стробоскоп, переключение между которыми производилось нажатием кнопки. Для того, чтобы просто включить и выключить фонарь, требовалось каждый раз перебирать эти 3 режима. Вдобавок, этот фонарик, будучи включенным, разряжал батарею до последнего – так пара моих банок 18650 ушли в глубокий разряд.
Все это было неудобно и надоедало, поэтому в какой-то момент я решил сделать для него свой драйвер, о чем и будет дальнейшее повествование.
Вот такой фонарик, наверняка многие имели дело с подобными
Так выглядит оригинальный драйвер
Техническое задание
Как известно, для достижения хорошего результата любая разработка должна иметь хорошее ТЗ, поэтому постараюсь сформулировать его для себя. Итак, драйвер должен:
- Уметь включаться/отключаться по короткому нажатию кнопки (кнопка без фиксации). Пожалуй, это основная причина, по которой все это затеялось.
- Иметь плавную (бесступенчатую) регулировку яркости, от самого яркого — «турбо», до «мунлайта», когда диод еле светится. Яркость должна изменяться равномерно.
- Запоминать установленную яркость на время выключения.
- Контролировать заряд батареи, предупреждая когда она почти разряжена (примерно 3.3В) и отключаясь, когда разряжена полностью (примерно 2.9В). Для разных АКБ эти параметры могут быть иными. Соответственно, рабочее напряжение должно быть в диапазоне 2.7
Ну и если фонарик подвергается моддингу, почему бы не встроить в него зарядное устройство с micro-USB разъемом? У меня под рукой всегда есть такой кабель и USB зарядка, а родной блок питания приходится искать.
Железо
У меня есть кое-какой опыт работы с Arduino, поэтому было решено делать драйвер на МК семейства AVR. Они широко доступны, легко программируются и имеют режимы пониженного энергопотребления (сна).
В качестве «мозга» драйвера был выбран микроконтроллер Attiny13a — это один из самых дешевых МК фирмы Atmel (ныне поглощенной компанией Microchip), он имеет на борту все необходимое — GPIO для подключения кнопки и светодиода, таймер для генерации ШИМ-сигнала, АЦП для измерения напряжения и EEPROM для сохранения параметров. Доступно всего 1 КБ флеш-памяти (но много ли надо для фонарика), а так же 64 Б RAM и столько же EEPROM.
Attiny13 выпускается в нескольких вариантах корпуса, в частности в DIP-8, который можно воткнуть прямо в обычную макетную плату с шагом 2.54мм.
Поскольку от задней части к голове фонаря идет всего 3 провода, кнопка вынуждена замыкаться на землю (о невозможности замыкать на плюс — позже), придется коммутировать светодиод по плюсу — а значит, нужен P-канальный полевик. В качестве такого транзистора я взял AO3401, но можно взять SI2323, он дороже, но имеет меньшее сопротивление открытого канала (40 мОм, тогда как у AO3401 60 мОм, при 4.5 В), следовательно драйвер будет меньше греться.
От слов к делу, собираю на макетке предварительную версию
Питается оно пока что напрямую от программатора, напряжением 5 В (на самом деле меньше из-за потерь в кабеле USB). Вместо светодиода XM-L пока воткнул обычный светодиод на ножках и поставил слабый транзистор с высоким пороговым напряжением.
Затем в программе Altium Designer была начерчена схема, которую я дополнил защитой от переполюсовки и ESD.
Обязательные компоненты:
U1 – микроконтроллер Attiny13a в корпусе 8S1 (индекс SSU)
С1 — развязывающий конденсатор по питанию микроконтроллера, должен быть в районе 0.1 мкф, корпус 1206 или 0805, температурный коэффициент X7R
R1-R2 — резисторный делитель для измерения напряжения батареи, номиналы можно ставить любые, тут главное соотношение (750К/220K, коэффициент деления 4.41) и ток утечки, который будет больше, если увеличить номиналы (при текущих он порядка 4 мкА). Поскольку используется внутренний ИОН (1.1 В, согласно даташиту он может быть в пределах 1.0 В — 1.2 В), максимальное напряжение на выходе делителя не должно быть более 1 В. При делителе 750/220 максимально допустимое напряжение на входе делителя будет 4.41 В, что более чем достаточно для всех типов литиевых аккумуляторов.
Делитель я рассчитывал при помощи вот этого калькулятора .
R3 — защита вывода порта микроконтроллера от замыкания (если вдруг PB1 окажется притянуто к VCC, через пин потечет большой ток и МК может сгореть)
R4 — подтяжка RESET МК к питанию, без него возможны перезагрузки от наводок.
Q1 — P-канальный полевой транзистор в корпусе SOT-23, я поставил AO3401, но можно и любой другой с подходящей распиновкой (например SI2323)
R7 — токоограничительный резистор затвора. Поскольку затвор транзистора имеет некоторую емкость, при зарядке этой емкости через пин может проходить большой ток и пин может выйти из строя. Можно ставить в районе 100-220 Ом (больше не следует, транзистор начнет долго находиться в полузакрытом состоянии, и, как следствие, будет сильнее греться).
R6 — резистор подтяжки затвора к питанию. На случай, если PB0 перейдет в высокоимпедансное состояние, через этот резистор на затворе Q1 установится логическая 1 и транзистор будет закрыт. Такое может произойти из-за ошибки в коде или в режиме программирования.
D2 — «запирающий» диод — позволяет при «проседании» напряжения (когда светодиод включается на короткий период на полную яркость) питаться МК от конденсатора какое-то время, так же защищает от переполюсовки.
Можно ставить любой диод шоттки в корпусе SOD323 с минимальным падением напряжения, я поставил BAT60.
Изначально, защита от неправильной полярности питания была сделана на полевом транзисторе (это можно увидеть на платах, изготовленных лутом). После распайки вылезла неприятная особенность — при включении нагрузки возникала просадка напряжения и МК перезагружался, поскольку полевик не ограничивает ток в обратном направлении. Сначала я припаял между VCC и GND электролитический конденсатор на 200 мкФ, но мне не понравилось такое решение из-за его размеров. Пришлось отпаивать транзистор и на его место ставить диод, благо SOT-23 и SOD-323 имеют похожие размеры.
Итого, в схеме всего 10 компонентов, обязательных для установки.
Необязательные компоненты:
R5 и D1 отвечают за заднюю подсветку (LED2). Минимальный номинал R5 — 100 Ом. Чем больше номинал, тем слабее светится задний светодиод (он включается в постоянном режиме, без ШИМ). D1 — любой светодиод в корпусе 1206, я поставил зеленый, т.к. визуально они ярче при тех же токах, чем прочие.
D3 и D4 — защитные диоды (TVS), я использовал PESD5V0 (5.0В) в корпусе SOD323. D3 защищает от перенапряжения по питанию, D4 — по кнопке. Если кнопка закрыта мембраной, то в нем нету особого смысла. Защитные диоды наверное имеет смысл использовать двунаправленные, иначе при переполюсовке через них пойдет ток и они выгорят (см. ВАХ двунаправленного защитного диода).
C2 — танталовый конденсатор в корпусе А (похож на 1206), имеет смысл ставить при нестабильной работе драйвера (напряжение питания мк может просаживаться при больших токах коммутации светодиода)
Все резисторы типоразмера 0603 (для меня это адекватный предел для пайки вручную)
С компонентами все ясно, можно делать печатную плату по вышеприведенной схеме.
Первым делом для этого нужно построить 3D модель будущей платы, вместе с отверстиями — имхо, в Altium Designer это самый удобный способ определить геометрию ПП.
Измерил размеры старого драйвера и его посадочных отверстий — плата должна крепиться к ним же, но иметь меньшие габариты (для универсальности, вдруг куда-то еще придется встроить).
Разумный минимум здесь получился где-то 25х12.5мм (соотношение сторон 2:1) с двумя отверстиями диаметром 2мм для крепления к корпусу фонаря родными винтами.
3D-модель я сделал в SolidWorks, затем экспортировал в Altium Designer как STEP.
Затем я разместил компоненты по плате, контакты сделал по углам (так паять удобнее и проще разводить землю), Attiny13 поставил по центру, транзистор поближе к контактам LED.
Развел силовые дорожки, разместил остальные компоненты как получится и развел сигнальные дорожки. Для удобства подключения ЗУ я вывел под него отдельные контакты, которые дублируют контакты батареи.
Всю разводку (за исключением одной перемычки) я сделал на верхнем слое — для того, чтобы была возможность изготовить плату в домашних условиях ЛУТом.
Минимальная ширина сигнальных дорожек — 0.254 мм / 10 mil, силовые имеют максимальную ширину там, где это возможно.
Так выглядит разведенная плата в Altium Designer
В Altium Designer есть возможность посмотреть, как будет выглядеть плата в 3D (для этого необходимо наличие моделей для всех компонентов, некоторые пришлось строить самому).
Возможно, кто-то тут скажет, что 3D режим для трассировщика не нужен, но лично для меня это удобная функция, которая облегчает размещение компонентов для удобства пайки.
На момент написания статьи было сделано 3 версии платы — первая под ЛУТ, вторая для промышленного изготовления и 3-я, финальная с некоторыми исправлениями.
Изготовление плат
Самодельный способ
ЛУТ — лазерно-утюжная технология, способ производства плат при помощи травления по маске, полученной переводом тонера с бумаги на медь. Этот способ отлично подходит для несложных односторонних плат — таких как этот драйвер.
В сети достаточно много статей по этой технологии, поэтому я не буду углубляться в подробности, а лишь расскажу вкратце про то, как это делаю я.
Для начала нужно подготовить шаблон, который будет распечатан на термобумаге. Экспортирую в PDF слой top_layer, получаю векторное изображение.
Поскольку плата маленькая, есть смысл брать кусок текстолита с габаритами в несколько раз больше и делать то, что в промышленности называют панелизацией.
Для этих целей весьма удобен CorelDraw, но можно пользоваться и любым другим векторным редактором.
Размещаю копии шаблонов на документе, между платами делаю промежутки в 0.5-1мм (зависит от способа разделения, об этом позже), платы должны быть расположены симметрично — иначе будет сложно их разделить.
Подбираю кусок одностороннего текстолита размерами чуть больше, чем скомпонованная панель, зачищаю и обезжириваю (предпочитаю тереть ластиком и потом спиртом). Печатаю на термобумаге шаблон для травления (тут важно не забыть отзеркалить шаблон).
При помощи утюга и терпения, аккуратно поглаживая по бумаге, перевожу на текстолит. Жду пока остынет и осторожно отдираю бумагу.
Свободные участки меди (не покрытые тонером) можно покрыть лаком или заклеить скотчем (чем меньше площадь меди, тем быстрее идет реакция травления).
Такая вот домашняя панелизация — большое количество плат позволяет компенсировать брак производства
Я травлю платы лимонной кислотой в растворе перекиси водорода, это самый доступный способ, хотя и довольно медленный.
Пропорции такие: на 100мл перекиси 3% идет 30г лимонной кислоты и примерно 5г соли, это все перемешивается и выливается в емкость с текстолитом.
Подогревание раствора ускорит реакцию, но может привести к отслаиванию тонера.
Начинается неведомая химическая магия: медь покрывается пузырями, а раствор приобретает синий оттенок
Через какое-то время достаю протравленую плату, очищаю от тонера. У меня его не получается смывать какими-либо растворителями, поэтому я удаляю его механически — мелкозернистой наждачной бумагой.
Теперь остается залудить плату — это поможет при пайке и защитит медь от окисления и облегчит пайку. Лудить я предпочитаю сплавом Розе — этот сплав плавится при температуре около 95 градусов, что позволяет лудить им в кипящей воде (да, возможно не самый надежный состав для лужения, но для самодельных плат годится).
После лужения я сверлю плату (для контактов использую твердосплавные сверла ф1.0, для перемычек — ф0.7), сверлю дремелем за неимением другого инструмента. Пилить текстолит я не люблю из-за пыли, поэтому после сверления разрезаю платы канцелярским ножом — с двух сторон делаю несколько надрезов по одной линии, затем разламываю по надрезу. Это напоминает метод V-cut, используемый в промышленности, только там надрез делается фрезой.
Так выглядит плата, готовая к пайке
Когда плата готова, можно приступать к распайке компонентов. Сначала я запаиваю мелочь (резисторы 0603), затем все остальное. Резисторы примыкают вплотную к МК, поэтому в обратной последовательности запаять может быть проблематично. После пайки я проверяю, нет ли КЗ по питанию драйвера, после чего уже можно приступать к прошивке МК.
Драйверы, готовые к загрузке прошивки
Промышленный способ
ЛУТ — это быстро и доступно, но технология имеет свои недостатки (как и почти все «домашние» методы изготовления ПП). Проблематично сделать двухсторонную плату, дорожки могут быть перетравлены, а о металлизации отверстий остается только мечтать.
Благо, предприимчивые китайцы давно предлагают услуги изготовления печатных плат промышленным способом.
Как ни странно, однослойная плата у китайцев будет стоить дороже, чем двухслойная, поэтому я решил добавить второй (нижний) слой к печатной плате. На этом слое продублированы силовые дорожки и земля. Так же, появилась возможность сделать теплоотвод от транзистора (медные полигоны на нижнем слое), что позволит драйверу работать на более высоких токах.
Нижний слой платы в Altium Designer
Для этого проекта я решил заказать печатную плату на сайте PcbWay. На сайте есть удобный калькулятор расчета стоимости плат в зависимости от их параметров, размеров и количества. После расчета стоимости я загрузил gerber-файл, созданный ранее в Altium Designer, китайцы его проверили и плата отправилась на производство.
Изготовление комплект из 10 плат TinyFL обошлось мне в $5. При регистрации нового пользователя дается скидка $5 на первый заказ, поэтому я оплачивал только доставку, которая тоже стоит где-то в районе $5.
На этом сайте есть возможность выложить проект в общий доступ, поэтому если кто-то захочет заказать эти платы, можно просто добавить в корзину этот проект.
Спустя пару-тройку недель мне пришли те же самые платы, только красивенькие изготовленные промышленным способом. Их остается только распаять и залить в них прошивку.
Программа (прошивка)
Основная трудность, которая возникла при написании прошивки драйвера, связана она с крайне малым размером flash-памяти — у Attiny13 ее всего-навсего 1024 байта.
Так же, поскольку изменение яркости плавное, нетривиальной задачей оказалось равномерное ее изменение — для этого пришлось делать гамма-коррекцию.
Алгоритм управления драйвером
Драйвер включается по короткому нажатию на кнопку, выключается по нему же.
Выбранный режим яркости сохраняется на время выключения.
Если во время работы сделать двойное короткое нажатие кнопки (двойной клик), будет включен/выключен дополнительный светодиод.
При длинном нажатии во время работы начнет плавно изменяться яркость фонаря. Повторное длинное нажатие изменяет направление (сильнее/слабее).
Драйвер периодически проверяет напряжение батареи, и если оно ниже установленных значений, предупреждает пользователя о разряде, а затем отключается во избежание глубокого разряда.
- При подаче питания на МК производится настройка периферии и МК погружается в сон (если STARTSLEEP определено). При подаче питания на драйвер оба светодиода мигают некоторое количество раз, если STARTBLINKS определено.
- Сон. Attiny13 засыпает в режиме power-down (это самый экономичный режим, по даташиту потребление МК составит
- Инвертируется направление изменения (больше/меньше) и изменяется % заполнения ШИМ, пока нажата кнопка.
- Если достигнуто максимальное/минимальное значение (RATE_MAX / RATE_MIN), светодиод начинает мигать;
- Если прошло n-миганий (AUXMODES_DELAY) и кнопка все еще нажата, включается дополнительный режим. Таких режимов два — стробоскоп ( включается на 25 мс, частота 8 Гц) и аварийный маячок (включается на полную яркость на 50мс, частота 1 Гц). В этих режимах не происходит проверки заряда батареи, а для выхода нужно какое-то время держать нажатой кнопку.
- Если значение АЦП больше значения BAT_WARNING – все нормально
- Если меньше BAT_WARNING – пользователь предупреждается о разряде, драйвер мигает основным светодиодом. Кол-во вспышек будет пропорционально степени разряда. Например, с дефолтными значениями при полном разряде фонарь мигнет 5 раз.
- Если меньше BAT_SHUTDOWN — МК переходит в п.2 (сон).
Управление яркостью светодиода
Как известно, самый простой способ управлять яркостью — изменять скважность ШИМ, при этом светодиод на какое-то время включается на полную яркость, затем выключается. Из-за особенностей человеческого глаза кажется, что светодиод светит менее ярко, чем если бы он был включен постоянно. Поскольку светодиод подключен через P-канальный полевой транзистор, для его открытия необходимо притянуть затвор к земле, а для закрытия — наоборот, к питанию. Время открытия транзистора по отношению ко времени его закрытого состояния будет коррелировать с заполнением ШИМ.
За скважность шим отвечает переменная rate, 255 rate = 100% ШИМ.
При частоте тактирования 1.2 МГц и предделителе таймера в 1, частота ШИМ будет равна 1200000/256 = 4.7 КГц. Поскольку это частота звуковая (воспринимаемая человеческим ухом), на некоторой скважности ШИМ драйвер может начать пищать (точнее, пищит не драйвер, а провода, либо элементы питания). Если мешает, можно увеличить рабочую частоту до 9.6 (CKSEL[1:0]=10, CKDIV8=1) или 4.8 МГц (CKSEL[1:0]=01, CKDIV8=1), тогда частота ШИМ будет в 8 или в 4 раза больше, но энергопотребление МК так же вырастет пропорционально.
Считается, что диод нужно питать путем стабилизации тока через него, а в таком режиме он быстро выйдет из строя. Тут я соглашусь и скажу, что у меня в фонаре (да и во многих налобниках аналогичной конструкции) светодиод не подключается напрямую к драйверу, а до него идут достаточно длинные и тонкие провода, сопротивление которых, а так же внутреннее сопротивление батареи и сопротивление драйвера ограничивают максимальный ток в районе 1.5 А, что в 2 раза меньше максимального тока для данного светодиода (максимальный ток для Cree XM-L согласно документации — 3 А).
Если у Вас драйвер подключен к светодиоду короткими проводами и у держателя батареи хорошие контакты, ток при максимальной яркости (rate=255) может превышать значение в 3А. В этом случае данный драйвер Вам скорее всего не подойдет, так как есть риск выхода светодиода из строя. Тем не менее, можно скорректировать параметр RATE_MAX до получения приемлемых значений тока. К тому же, хоть по спецификации транзистора SI2323DS его максимальный ток и превышает 4 А, лучше выставить порог в 2 А, иначе драйверу может потребоваться охлаждение.
Гамма-коррекция
Человеческий глаз воспринимает яркость объектов нелинейно. В случае с этим драйвером, разница между 5-10% ШИМ будет восприниматься как многократное увеличение яркости, тогда как разница между 75-100% будет практически не будет заметна глазу. Если увеличивать яркость светодиода равномерно, со скоростью n процентов в секунду, будет казаться, что в начале яркость очень быстро растет от нуля до среднего значения, затем очень медленно увеличивается от середины до максимума.
Это весьма неудобно, и для компенсации этого эффекта пришлось сделать упрощенный алгоритм гамма-коррекции. Его суть в том, что шаг изменения яркости увеличивается от 1 при минимальных значениях ШИМ до 12 при максимальных значениях. В графическом представлении это выглядит как кривая, точки которой сохранены в массиве rate_step_array. Таким образом, кажется, что яркость изменяется равномерно на всем диапазоне.
Контроль напряжения батареи
Каждые n-секунд (за интервал в миллисекундах отвечает параметр BAT_PERIOD) происходит замер напряжения батареи. Положительный контакт батареи, который подключается к VIN и попадает на резисторный делитель R1-R2, к средней точке которого подключен пин PB4 (он же ADC2 у мультиплексора АЦП).
Поскольку напряжение питания изменяется вместе с измеряемым напряжением, не получится измерить его, использовав в качестве опорного напряжения Vref, поэтому в качестве ИОН я применил внутренний источник на 1.1 В. Как раз для этого и нужен делитель — МК не может измерить напряжение, большее чем напряжение опорного источника (так, напряжению 1.1 В будет соответствовать значение АЦП в 1023 или 255, если использовать 8-битное разрешение). Проходя через делитель, напряжение в средней его точке будет в 6 раз меньше входного, значению 255 будет соответствовать уже не 1.1 В, а целых 4.33 В (делитель на 4.03), что с запасом покрывает диапазон измерений.
В итоге получается некоторое значение, которое дальше сравнивается с предустановленными значениями минимальных напряжений. При достижении значения BAT_WARNING светодиод начинает мигать некоторое количество раз (чем сильнее разряжено, тем больше мигает — за это отвечает BAT_INFO_STEP, подробнее в коде), а при достижении BAT_SHUTDOWN драйвер отключается.
Значение АЦП переводить в милливольты я не вижу смысла, т.к. это тратит лишную память, которой в тиньке и так мало.
Кстати, делитель является основным потребителем питания, когда МК находится в режиме сна. Так, делитель на 4.03 с R1 = 1M и R2 = 330К, будет иметь общее R = 1330K и ток утечки при 4 В = 3 мкА.
На время измерения напряжения нагрузка (светодиод) отключается примерно на 1 мс. Это почти не заметно для глаз, но помогает стабилизировать напряжение, иначе измерения будут некорректные (а делать какие-либо поправки на скважности шим и прочее — слишком сложно).
Внесение изменений в прошивку
Это нетрудно сделать, особенно если был опыт работы с Arduino или просто с C/C++.
Даже если такого опыта не было, можно настроить почти все рабочие параметры путем редактирования определений (defines) заголовочного файла flashlight.h.
Для редактирования исходного кода нужно будет поставить Arduino IDE с поддержкой Attiny13(a) или Atmel Studio – оно не сложнее, чем Arduino IDE, но гораздо удобнее.
Сперва необходимо будет установить поддержку Attiny13 в IDE. Достаточно подробная инструкция имеется в этой статье.
Далее нужно выбрать в меню Tools>Board Attiny13(a) и в меню Tools>Frequency 1.2MHz.
«Скетч» содержится в файле с расширением .ino, он содержит всего одну строчку кода — это включение в проект заголовочного файла. По сути дела, данный скетч — просто способ скомпилировать прошивку через Arduino IDE. Если Вы захотите внести в проект какие-либо изменения, работайте с файлом .cpp.
После открытия проекта нужно нажать на галочку, пойдет компиляция, в случае успеха в логе будет ссылка на файл *.hex. Его нужно залить в микроконтроллер по инструкции ниже.
Проект для этого IDE содержится в файле flashlight.atsln, а исходники — в файлах flashlight.h содержит определения (настройки) и flashlight.cpp содержит собственно код.
Расписывать более подробно содержимое исходников не вижу смысла — в коде полно комментариев.
После внесения изменений в код надо нажать F7, прошивка скомпилируется (или нет, тогда компилятор укажет, где ошибка). В папке debug появляется flashlight.hex, который можно загрузить в микроконтроллер по инструкции ниже.
Для загрузки прошивки и настройки фьюзов я использую программатор USBASP в сочетании с программой AVRDUDEPROG. Программа представляет из себя подобие GUI для программы avrdude, есть удобный встроенный калькулятор фьюзов — достаточно поставить галочки возле нужных битов. В списке контроллеров нужно выбрать подходящий (в данном случае Attiny13(a), зайти на вкладку Fuses и нажать кнопку read. Только после того, как значения фьюзов считаны из МК, можно их изменять. После изменения нужно нажать programm, новые фьюзы будут записаны в МК. Подходящие значения фьюзов записаны в файле flashlight.h
Для заливки прошивки надо перейти на вкладку Program, в строке Flash выбрать скомпилированный файл прошивки в формате HEX (flashlight.hex) и нажать Program. Статус прошивки будет отображаться в окне снизу. Если загрузка неудачна, возможно дело в плохом контакте, так бывает — стоит попробовать еще раз. Кстати, именно для этого был сделан параметр STARTBLINKS — однократное мигание LED2 в момент подачи питания на драйвер служит индикацией контакта драйвера с программатором.
Вместо USBASP для загрузки прошивки можно использовать Arduino, подробнее тут и тут
Программатор USBASP, подключенный к драйверу через клипсу со шлейфом
Для подключения USBASP к тиньке я использую клипсу под 8-контактный SOIC. Не очень удобное приспособление, приходится помучаться минут 10, прежде чем поймаешь контакт (возможно, мне просто попалась бракованная клипса). Бывают так же адаптеры SOIC-DIP, куда вставляется микросхема до пайки и в нее заливается прошивка — этот вариант удобнее, но теряется возможность программировать драйвер внутрисхемно (то есть обновлять прошивку после пайки МК на плату).
Если всего этого нет, то можно просто припаять проводки к выводам МК, которые затем прикрепить к Arduino.
Калибровка
Токи, проходящие через драйвер и светодиод, не должны превышать максимальных значений. Для светодиода XM-L это 3 А, для драйвера оно зависит от используемого транзистора, например для SI2323 максимальный ток около 4 А, но лучше гонять на меньших токах из-за чрезмерного нагрева. Для уменьшения тока на максимальной яркости используется параметр RATE_MAX (#define RATE_MAX xx, где xx — максимальная яркость от 0 до 255).
Калибровка АЦП не является обязательной процедурой, но если хочется, чтобы драйвер точно отслеживал пороговое напряжение, то придется с этим повозиться.
Расчеты не дадут высокой точности измерений, т. к. во-первых, номиналы резисторов могут варьироваться в пределах допуска (обычно 1-5%), а во-вторых, внутренний ИОН может иметь разброс от 1.0 до 1.2 В.
Поэтому, единственный приемлемый способ — выставить значение в единицах АЦП (BAT_WARNING и BAT_SHUTDOWN), экспериментально подбирая его под нужное. Для этого понадобится терпение, программатор и регулируемый источник питания.
Я выставлял в прошивке значение BAT_PERIOD в 1000 (проверка напряжения раз в секунду) и постепенно снижал напряжение питания. Когда драйвер начинал предупреждать о разряде, я оставлял текущее значение BAT_WARNING как нужное.
Это не самый удобный способ, возможно в будущем надо сделать процедуру автоматической калибровки с сохранением значений в EEPROM.
Сборка фонарика
Когда плата была готова и прошивка была залита, можно было наконец ставить ее на место старого драйвера. Я выпаял старый драйвер и припаял на его место новый.
Проверив, нет ли короткого замыкания по питанию, подключил питание и проверил работоспособность. Затем смонтировал плату зарядки (TP4056), для этого пришлось немного дремелем рассверлить отверстие разъема зарядки, и зафиксировал ее термоклеем (тут важно было, чтобы клей не затек в разъем, достать его оттуда будет сложно).
Я не стал прикручивать плату винтами, т. к. резьба в корпусе сорвалась от многократных закручиваний, а просто залил ее клеем, провода тоже заклеил в местах пайки, дабы они не перетирались. Драйвер и ЗУ я решил покрыть акриловым бесцветным лаком, это должно помочь от коррозии.
Тестирование и расчет стоимости изготовления
После всех операций можно было приступать к тестированию драйверов. Ток измерял обычным мультиметром, подключив его в разрыв цепи питания.
Энергопотребление старого драйвера (измерялось при 4.04 В):
- Во время сна — не измерялось
- Максимальный режим: 0.60 А
- Средний режим: 0.30 А
- Стробоскоп: 0.28 А
Энергопотребление нового драйвера (измерялось при 4.0 В):
- В режиме сна потребляет в районе 4 мкА, это намного меньше тока саморазряда литий-ионной батареи. Основной ток в этом режиме протекает через резисторный делитель.
- На минимальном режиме, «мунлайт» — около 5-7 мА, если считать, что емкость одной ячейки 18650 около 2500 мА*ч, то получается около 20 дней непрерывной работы. Сам МК потребляет где-то 1.2-1.5 мА (при рабочей частоте 1.2 МГц).
- На максимальном режиме, «турбо» — потребляет около 1.5 А, в таком режиме проработает около полутора часов. Светодиод на таких токах начинает сильно нагреваться, поэтому данный режим не предназначен для длительной работы.
- Аварийный маячок — потребляет в среднем около 80 мА, в таком режиме фонарь проработает до 30 часов.
- Стробоскоп — потребляет около 0.35 А, проработает до 6 часов.
Цена вопроса
Если покупать компоненты в Чип и Дипе, выйдет около 100р (60р Attiny13,
40р остальная рассыпуха). С китая заказывать имеет смысл, если делается несколько штук — тогда в пересчете на штуку выйдет дешевле, китайцы продают как правило партиями от 10 штук.
Платы выйдут по цене в районе 300р за 10 штук (без доставки), если заказывать их в Китае.
Распайка и прошивка одного драйвера у меня занимает где-то час.
Заключение
Китайский фонарик стал гораздо удобнее, хотя теперь у меня появились претензии к его механике — передняя часть слишком тяжелая, да и фокусировка не особо нужна.
В будущем планирую сделать версию этого драйвера для фонарей с кнопкой по питанию (с фиксацией). Правда, меня смущает обилие подобных проектов. Как вы считаете, стоит ли делать еще один такой?
Драйвер крупным планом (версия 2_t)
Переделка китайского фонарика, часть 2
Очередной фонарик с совершенно другим импульсником и расширенными функциями.
Копия автора:
Основной целью, при разработке данной схемы, было выжимание максимального КПД. Как из драйвера так и из светодиода.
Изюминкой данной схемы является полевик со сказочными характеристиками, ну и шотки с ооочень малым падением. Вот только этот полевик с n-каналом, и ради него пришлось перевернуть классическую понижающую схему.
Краткое описание функций:
1. 4 режима: 40, 170, 680, 2300мА. Переключение режимов осуществляется кратковременным <1сек, отключением питания.
Режим 40мА делается ШИМом, из соображений выжимания максимального КПД светодиода.
2. Контроль разряда аккумулятора — при падении ниже 2.75В, схема переходит в спящий режим.
3. Индикация заряда аккумулятора, 5 уровней. При двойном клике при работе (прерывании питания ) мигает от 1(разряжен) до 5(заряжен полностью) раз.
4. Плавный старт.
5. Возможность включения термоконтроля. Для включения термоконтроля нужно произвести калибровку:
-устанавливаем минимальный режим и выключаем питание,
-устанавливаем напряжения питания 4.5.5В и подаем питание,
-драйвер определяет это состояние, сбрасывает данные предыдущей калибровки и переключается в максимальный режим.
-Греем, греем, греем, измеряя температуру градусником или пальцем. Когда считаем что хватит, напряжение опускаем до 4.2В или ниже.
-драйвер выключает светодиод, выдерживает паузу 2сек для стабилизации напряжения питания и температуры, и сохраняет значение температуры калибровки в EEPROM. Если отключить питание ранее этотого момента, то термоконтроль будет отключен.
-после сохранения на 2 секунды зажигается светодиод, все, калибровка выполнена,
-выключаем питание, немного остужаем, включаем, переводим в максимальный режим, греем, проверяем работу термоконтроля.
Найден светодиод:
CREE XPG BWT EF5 холодный белый
подложка в размер платы
Основные характеристики светодиода CREE XPG BWT EF5: Габаритные размеры: 3,45 х 3,45 х 2,26 мм Рабочий ток: 350…1500 мА Потребляемая мощность: 1 — 4,5 Вт Световой поток: при токе 350 мА — 114 Люмен при токе 700 мА — 213 Люмен при токе 1000 мА — 285 Люмен при токе 1500 мА — 380 Люмен Угол светового потока: 115 градусов Цветовая температура: 4250 К
Подобран ток, в максимальный режим не загоняю, где то процентов на 85. При максимальном начинает ощутимо греться, но даже при токе в 230 ma световой поток достаточно мощный. Радиатор обязательно ставить.
Стал вопрос крепления подложки светодиода и его охлаждения. Для этих целей решено было выточить небольшой переходник подложку которая бы соединяла тепловым контактом подложку светодиода с корпусом фонаря, который алюминиевый. Переходник входит в корпус патрона (алюминий) с небольшим натягом, тем самым создавая хороший тепловой контакт. Низ подложки должен быть посажен вплотную к драйверу через термопасту к микроконтроллеру, т.к. он отслеживает температуру кристалла выставленную заранее и переводит фонарь на пониженную мощность автоматически.
Очередным вопросом стала защита драйвера от переполюсовки по питанию, ну бывает всунули аккумулятор вверх тормашками и прощай драйвер. Надежная и проверенная защита на полевом транзисторе Р канал, сопротивление исток-сток в открытом состоянии имеет сопротивление "гвоздя" 0,02 Ом
плата №2 с контактной площадкой под + аккумулятора и защитой на полевике двусторонняя и выглядит так
плата драйвера со стороны силовой части, видно что напаян поясок проводом1,5мм. для увеличения расстояния между платами, т.к. они касались друг друга