Давно присматривался к этим микросхемам. Очень часто что-нибудь паяю. Решил взять их для творчества. Эти микросхемы куплены ещё в прошлом году. Но до применения их в деле так и не доходило. Но не так давно моя мать дала мне на починку свой фонарик, купленный в офлайне. На нём и потренировался.
В заказе было 10 микросхем, 10 и пришло.


Оплатил 17 ноября, получил 19 декабря. Пришли в стандартном пупырчатом пакетике. Внутри ещё пакетик. Шли без трека. Был удивлён, когда обнаружил их в почтовом ящике. Даже на почту идти не пришлось.


Не ожидал, что они настолько маленькие.

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


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


Поставил батарейки все четыре штуки. Измерил ток потребления – более 1А! Схема простая. Элементы питания, кнопка, ограничительный резистор на 1,0 Ом, светодиод. Всё последовательно. Ток ограничивается только сопротивлением 1,0 Ом и внутренним сопротивлением элементов питания.
Вот, что имеем в итоге.


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


Первым, что сделал – изготовил пустышку из старой батарейки.


Теперь будет питаться от 4,5В, как все китайские фонарики в основной своей массе.
И самое основное, вместо сопротивления поставлю драйвер AMC7135.
Вот стандартная схема его подключения.

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


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


Кнопку я тоже перебрал и смазал на всякий случай.

Вместо сопротивления теперь стоит микросхема с током стабилизации 360мА.


Всё собрал на место и измерил ток. Подключал и батарейки и аккумуляторы, картина не меняется. Ток стабилизации не меняется.


Слева – напряжение на светодиоде, справа – ток, через него протекающий.
Что же я добился в результате всех переделок?
1. Яркость фонаря практически не меняется при эксплуатации.
2. Разгрузил кнопку включения-выключения фонаря. Теперь через неё протекает мизерный ток. Порча контактов из-за большого тока исключена.
3. Защитил светодиод от деградации из-за большого протекающего тока (если с новыми батарейками).
Вот, в общем, и всё.
Как правильно распорядиться сведениями из моего обзора каждый решает сам. Я же могу гарантировать правдивость своих измерений. Кому что-то неясно по поводу этого обзора, задавайте вопросы. С остальным – кидайте в личку, обязательно отвечу.
На этом ВСЁ!
Удачи!

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

Планирую купить +59 Добавить в избранное Обзор понравился +58 +118

Первая часть про тюнинг и ремонт фонаря, вводная. Тут будут рассмотрены общее устройство среднестатистического фонаря, параметры мощных светодиодов и чуток нудной математики с ними связанные.

Итак, у вас есть светодиодный фонарик, но он сгорел или не устраивает по якости, или вы хотите его переделать в оружейный. Какие у вас есть варианты? Давайте разберёмся.

Конструкция сферического фонаря в вакууме.

Подавляющее большинство фонарей состоят из следующих частей:

  1. корпус - обычная трубка с резьбой на концах;
  2. батарейка - живёт внутри корпуса;
  3. торцевая кнопка - вкручивается в корпус на резьбе служит для включения фонаря. Иногда фонарь может комплектоваться вторым задником с выносной кнопкой;
  4. головка фонаря - вкручивается в корпус, имеет защитное стекло впереди. Иногда эта деталь бывает разборной (как на фото, из двух частей), иногда нет;
  5. светоизлучающий элемент - объединенный в один блок светодиод, формирователь пучка света, теплоотвод светодиода и драйвер светодиода. Иногда выпускается зацело с головкой фонаря.

Светоизлучающй элемент.

Эта самая сборка может быть разного исполнения. Очень распространены головки для фонаря Ultrafire WF-502B, они даже продаются разных видов, разной мощности, с кучей функций и т.п.
Например, на fasttech.com . Фонари с элементом этого типа хороши тем, что можно купить несколько модулей для разных задач и просто менять их.

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

Формирователь пучка света бывает трех видов:

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


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

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

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


Теплоотвод, он же корпус, к которому зачастую прикручивается отражатель и в который монтируется драйвер светодиода. Обычно, рассчитан на установку светодиода на подложке - алюминиевой пластине, к которой припаивается светодиод. На фото показаны все механические компоненты модуля. Слева направо: отражатель, теплоотвод, пружина для отрицательного вывода (контачит с корпусом фонарика) и пружинка для положительного вывода (контачит с плюсом батарейки). Последняя пружинка припаивается к плате драйвера светодиода.

Параметры светодиодов.


Главным параметром с точки зрения качества освещения являются спектр излучения и яркость. , конструктивно это определяется качеством и хитростями люминофора. Увы, этот параметр может очень сильно отличаться даже для разных серий одного производителя. А уж что там намазывает дядюшка Ляо в своём подвале не знает даже сам Ляо. Дешевенькие фонари на сотню с гаком люмен уверенно проигрывают по качеству освещения (тому, насколько хорошо видно детали освещаемого объекта и насколько вообще эти детали разборчивы глазом) даже не очень мощным фонарям с галогенками.

Серьезные дядьки в лице компании Cree приводят следующий график для излучения их светодиодов серии XM-L. Увы, это усреднённые значения, насколько он равномерный, есть ли там провалы, нам не очень известно. По горизонтали длина волны, по вертикали относительная мощность излучения.


На графике приводятся три кривые - для разных цветовых температур. Видно, что светодиоды с меньшей температурой (красный) залезают в инфракрасную область (длина волны больше 740 нм), однако очень-очень мало и недалеко - там реально единицы процента мощности излучаются. Это причина того, что получить из любого белого светодиодного фонаря пристойный ИК фонарь простым добавлением ИК фильтра (как это легко делается с фонарем с лампой накаливания) невозможно. Светить он формально будет, но КПД - никакущий.
Цветовая температура это параметр-компаньон, напрямую связанный со спектром. Цветовая температура определяется как температура абсолютно чёрного тела (такой хитрый фетиш физиков), при которой оно испускает излучение того же цветового тона, что и рассматриваемое излучение. Для дневного света это 6500К, для ламп накаливания 2700-4000К. Чем меньше цветовая температура, тем боее желтый оттенок у света.

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

Второе, что нас интересует - это яркость светодиода. Указывается в документации как яркость при каком-то определенном токе через светодиод. К примеру, для уже упомянутого XM-L указана яркость разных токах. К примеру, XM-L T6 при 700мА (2Вт) имеет световой поток 280 люмен (400 лм/А), при 1А имеет 388 лм (388 лм/А), при 1,5А - 551 лм (367 лм/А), при 2А - 682 лм (341 лм/А). В скобочках указана удельная яркость в зависимости от тока. Она падает на 17% при повышении тока с 700мА до 2А. То есть чем выше ток, тем меньше эта удельная яркость, то есть ниже КПД. По графику, кстати, честно видно.


Еще один важный параметр светодиода - его мощность. Это максимальная мощность, которую можно в него "вдуть". Разумеется, на максимуме он будет жить меньше, чем на меньшей мощности, поэтому лучше его немного "недокормить". В свою очередь мощность определяет максимальный ток через светодиод. Как правило, мощность и ток через светодиод связаны нелинейной зависимостью, так как зависят еще и от падения напряжения на диоде. Вот для XM-L: по горизонтали прямое падение напряжения, по вертикали ток через диод.


Падение напряжения на светодиоде типично порядка 3 вольт для белого светодиода и зависит от тока через светодиод. Смотрим на график: при 200мА имеем падение в 2,7в, при 700мА - 2,9В, при 1А - 2,97В, при 1,5А - 3,1В, при 2А - 3,18В.

Если взять хитрые светодиоды типа MC-E с четыремя кристаллами это будет 350мА - 3,1В, 700мА - 3,5В. Совсем мощные кристаллы на 10-20 Вт будут иметь падение напряжения около 10В, а еще более мощные... ну, могут и еще больше.

Кстати, если перевести удельную светимость в зависимости от тока этих XM-L в светимость в зависимости от мощности, то получим, что у нас при токе I=700мА и падении напряжения U=2,9В потребляется мощность 2,03 Вт, а световой поток 280лм, то есть 138 лм/Вт. Продолжаем дальше и полчаем для 1, 1,5 и 2 А тока соответственно 130, 118,5 и 107 лм/Вт. Разница в 29%. Вот и ломай голову, какой режим выбирать.

Что же нам дают знания? Хотя бы понимание того, какое именно питание должно быть у того или иного светодиода, что от него можно получить, на какой другой светодиод можно заменить сгоревший светодиод фонаря. Но картинка не будет полной без знаний о питании светодиодов.

Питание фонаря.


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

Кстати, аккумуляторы как на фото выше я бы по возможности избегал. Невысокое качество и сильно завышенная емкость (из заявленных 2500мА/ч там хорошо если 1800 будет). Лучше брать фирменные ячейки Samsung и прочих. Неплохие аккумуляторные ячейки можно добыть из их батарей для ноутбуков - даже замучанные нарзаном они получше китайчатских будут. Хотя, даже у китайских бывают "внутри" нормальные ячейки.

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

Драйверы.

Подавляющее большинство фонарей имеют на борту один светодиод мощностью порядка 3 Вт. То есть он имеет падение напряжения около 3 В и ток около 1 А. Для питания таких фонарей вполне достаточно одного Li-Ion (или Li-Po) аккумулятора. В таких фонарях могут стоять любые драйверные схемы, хоть обычные гасящие напряжения источники тока. При установке литиевых батареек их понадобится аж две штуки, причём КПД упадёт катастрофически. Хорошо, что нормальные импульсные драйверы светодиодов уже почти полностью вытеснили дешевенькие источники тока. В фонарях, использующих несколько элементов или аккумуляторов обязательно стоит импульсный драйвер.

Определить, какой драйвер перед вами можно по наличию катушки. Если она есть - наверняка это импульсный драйвер . Насколько он хорош и какие диапазоны входных напряжений терпит? Тут придётся искать документацию на применённую в нём микросхему. Например, для среднего драйвера на фото выше (жаль, плохо вышло) под лупой можно увидеть маркировку микросхемы 2541B и для неё удалось найти документацию (на китайском), у неё входное напряжение от 5 до 40 вольт, но КПД не указан. Итого, если взять топовый светодиод с КПД 30-40% и хороший импульсный драйвер (КПД будет около 90% в идеальном случае) получим КПД фонаря в 27-36 %. Не так уж и плохо.

А пример линейного драйвера на том же фото в правом нижнем углу. Вся электронная начинка сводится к защитному диоду и нескольким параллельно работающим линейным источникам тока. Можно прикинуть его КПД, как отношение напряжения на выходе к напряжению на входе. Если запитать схему от аккумулятора, то получаем максимальное напряжение в 4.2в, номинальное в 3,7в. До минимального скорее всего дело не дойдёт - драйверу нужно минимальное падение напряжения в пол вольта чтобы работать. Итак, считаем 3/4,2=70%. Однако, так как заткнётся он так и не использовав аккумулятор, то применять его надо с парой литиевых батарей (2 по 3В). Тогда КПД будет 3/6=50%. Не очень кучеряво, учитывая КПД кристалла в 20-30% и, как следствие, КПД всего фонаря в 10-15%. Надеюсь, понятно, что линейных драйверов надо избегать?...

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

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

Привет, Habr!


Хочу рассказать историю о том, как мне в руки попал китайский налобный фонарик на светодиоде Cree XM-L и что дальше с ним стало.

Предыстория

Когда-то давно я заказал с одного китайского сайта фонарик с ярким светодиодом. Фонарик оказался довольно эргономичным (хотя он мог быть и полегче), но вот его драйвер оставлял желать лучшего.


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


Все это было неудобно и надоедало, поэтому в какой-то момент я решил сделать для него свой драйвер, о чем и будет дальнейшее повествование.


Фонарик со старым драйвером

Вот такой фонарик, наверняка многие имели дело с подобными


Так выглядит оригинальный драйвер

Техническое задание

Как известно, для достижения хорошего результата любая разработка должна иметь хорошее ТЗ, поэтому постараюсь сформулировать его для себя. Итак, драйвер должен:

  • Уметь включаться/отключаться по короткому нажатию кнопки (кнопка без фиксации). Пожалуй, это основная причина, по которой все это затеялось.
  • Иметь плавную (бесступенчатую) регулировку яркости, от самого яркого - "турбо", до "мунлайта", когда диод еле светится. Яркость должна изменяться равномерно.
  • Запоминать установленную яркость на время выключения.
  • Контролировать заряд батареи, предупреждая когда она почти разряжена (примерно 3.3В) и отключаясь, когда разряжена полностью (примерно 2.9В). Для разных АКБ эти параметры могут быть иными. Соответственно, рабочее напряжение должно быть в диапазоне 2.7~4.5В.
  • Иметь 2 специальных режима - аварийный маячок и стробоскоп (ну а почему бы и нет?)
  • Уметь включать/выключать задний светодиод (это актуально при езде на велосипеде ночью, получается что-то вроде габаритного огня).
  • Иметь защиту от переполюсовки и статического электричества. Не обязательно, но будет приятным дополнением, поскольку в темноте можно по ошибке поставить АКБ неправильной стороной.
  • Быть меньше изначального драйвера по размерам, но при этом иметь те же посадочные места. Китайский драйвер просто огромен, сделать крупнее будет непросто.

Ну и если фонарик подвергается моддингу, почему бы не встроить в него зарядное устройство с 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.



Подробное описание и предназначение всех компонентов

Обязательные компоненты:


С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 байта.
Так же, поскольку изменение яркости плавное, нетривиальной задачей оказалось равномерное ее изменение - для этого пришлось делать гамма-коррекцию.

Алгоритм управления драйвером

Драйвер включается по короткому нажатию на кнопку, выключается по нему же.
Выбранный режим яркости сохраняется на время выключения.


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


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


Более подробное описание алгоритма работы драйвера

  1. При подаче питания на МК производится настройка периферии и МК погружается в сон (если STARTSLEEP определено). При подаче питания на драйвер оба светодиода мигают некоторое количество раз, если STARTBLINKS определено.
  2. Сон. Attiny13 засыпает в режиме power-down (это самый экономичный режим, по даташиту потребление МК составит ~ 1 мкА), выйти из которого оно может только по какому-либо прерыванию. В данном случае это прерывание INT0 - нажатие кнопки (установка PC1 в логическое 0).
    На PC1 при этом должна быть включена внутренняя слабая подтяжка к питанию. АЦП и компаратор являются основным потребителями тока из всей периферии, поэтому их тоже нужно отключить. На время сна содержимое регистров и оперативной памяти сохраняется, поэтому EEPROM не нужен для запоминания яркости.
  3. После сна периферия и ШИМ включается и драйвер входит в бесконечный цикл, в котором отслеживается нажатие кнопки и периодически проверяется напряжение батареи.
  4. Если кнопка нажата - засекается время нажатия.
    4.1. Если нажатие короткое - ожидается двойной клик (если BTN_DBCLICK определено).
    Если он был, переключается дополнительный светодиод LED2
    Если нет, то переход к п.2 (сон)
    4.2. Если нажатие долгое (дольше, чем BTN_ONOFF_DELAY) - включается режим управления яркостью. В этом режиме:
    • Инвертируется направление изменения (больше/меньше) и изменяется % заполнения ШИМ, пока нажата кнопка.
    • Если достигнуто максимальное/минимальное значение (RATE_MAX / RATE_MIN), светодиод начинает мигать;
    • Если прошло n-миганий (AUXMODES_DELAY) и кнопка все еще нажата, включается дополнительный режим. Таких режимов два - стробоскоп (включается на 25 мс, частота 8 Гц) и аварийный маячок (включается на полную яркость на 50мс, частота 1 Гц). В этих режимах не происходит проверки заряда батареи, а для выхода нужно какое-то время держать нажатой кнопку.
  5. Если пришло время проверять напряжение батареи - считываются показания с ADC2, результат сравнивается с предустановленными значениями.
    • Если значение АЦП больше значения BAT_WARNING – все нормально
    • Если меньше BAT_WARNING – пользователь предупреждается о разряде, драйвер мигает основным светодиодом. Кол-во вспышек будет пропорционально степени разряда. Например, с дефолтными значениями при полном разряде фонарь мигнет 5 раз.
    • Если меньше BAT_SHUTDOWN - МК переходит в п.2 (сон).

Управление яркостью светодиода

Как известно, самый простой способ управлять яркостью - изменять скважность ШИМ, при этом светодиод на какое-то время включается на полную яркость, затем выключается. Из-за особенностей человеческого глаза кажется, что светодиод светит менее ярко, чем если бы он был включен постоянно. Поскольку светодиод подключен через P-канальный полевой транзистор, для его открытия необходимо притянуть затвор к земле, а для закрытия - наоборот, к питанию. Время открытия транзистора по отношению ко времени его закрытого состояния будет коррелировать с заполнением ШИМ.
За скважность шим отвечает переменная rate, 255 rate = 100% ШИМ.
При частоте тактирования 1.2 МГц и предделителе таймера в 1, частота ШИМ будет равна 1200000/256 = 4.7 КГц. Поскольку это частота звуковая (воспринимаемая человеческим ухом), на некоторой скважности ШИМ драйвер может начать пищать (точнее, пищит не драйвер, а провода, либо элементы питания). Если мешает, можно увеличить рабочую частоту до 9.6 (CKSEL=10, CKDIV8=1) или 4.8 МГц (CKSEL=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, но гораздо удобнее.


Arduino IDE

Сперва необходимо будет установить поддержку Attiny13 в IDE. Достаточно подробная инструкция имеется в статье.
Далее нужно выбрать в меню Tools>Board Attiny13(a) и в меню Tools>Frequency 1.2MHz.
"Скетч" содержится в файле с расширением.ino, он содержит всего одну строчку кода - это включение в проект заголовочного файла. По сути дела, данный скетч - просто способ скомпилировать прошивку через Arduino IDE. Если Вы захотите внести в проект какие-либо изменения, работайте с файлом.cpp.
После открытия проекта нужно нажать на галочку, пойдет компиляция, в случае успеха в логе будет ссылка на файл *.hex. Его нужно залить в микроконтроллер по инструкции ниже.


Atmel Studio

Проект для этого IDE содержится в файле flashlight.atsln, а исходники - в файлах flashlight.h содержит определения (настройки) и flashlight.cpp содержит собственно код.
Расписывать более подробно содержимое исходников не вижу смысла - в коде полно комментариев.
После внесения изменений в код надо нажать F7, прошивка скомпилируется (или нет, тогда компилятор укажет, где ошибка). В папке debug появляется flashlight.hex, который можно загрузить в микроконтроллер по инструкции ниже.

Для загрузки прошивки и настройки фьюзов я использую программатор USBASP в сочетании с программой AVRDUDEPROG. Программа представляет из себя подобие GUI для программы avrdude, есть удобный встроенный калькулятор фьюзов - достаточно поставить галочки возле нужных битов. В списке контроллеров нужно выбрать подходящий (в данном случае Attiny13(a), зайти на вкладку Fuses и нажать кнопку read. Только после того, как значения фьюзов считаны из МК, можно их изменять. После изменения нужно нажать programm, новые фьюзы будут записаны в МК. Подходящие значения фьюзов записаны в файле flashlight.h



Программатор 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 В):

  1. Во время сна - не измерялось
  2. Максимальный режим: 0.60 А
  3. Средний режим: 0.30 А
  4. Стробоскоп: 0.28 А

Энергопотребление нового драйвера (измерялось при 4.0 В):

  1. В режиме сна потребляет в районе 4 мкА, это намного меньше тока саморазряда литий-ионной батареи. Основной ток в этом режиме протекает через резисторный делитель.
  2. На минимальном режиме, "мунлайт" - около 5-7 мА, если считать, что емкость одной ячейки 18650 около 2500 мА*ч, то получается около 20 дней непрерывной работы . Сам МК потребляет где-то 1.2-1.5 мА (при рабочей частоте 1.2 МГц).
  3. На максимальном режиме, "турбо" - потребляет около 1.5 А, в таком режиме проработает около полутора часов. Светодиод на таких токах начинает сильно нагреваться, поэтому данный режим не предназначен для длительной работы.
  4. Аварийный маячок - потребляет в среднем около 80 мА, в таком режиме фонарь проработает до 30 часов.
  5. Стробоскоп - потребляет около 0.35 А, проработает до 6 часов.

Цена вопроса

Если покупать компоненты в Чип и Дипе, выйдет около 100р (60р Attiny13, ~40р остальная рассыпуха). С китая заказывать имеет смысл, если делается несколько штук - тогда в пересчете на штуку выйдет дешевле, китайцы продают как правило партиями от 10 штук.
Платы выйдут по цене в районе 300р за 10 штук (без доставки), если заказывать их в Китае.
Распайка и прошивка одного драйвера у меня занимает где-то час.

Заключение

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


Драйвер крупным планом (версия 2_t)


UPD : Добавлена поддержка Arduino IDE.

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

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

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

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

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

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

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

Изготовление драйвера

1. Для решения указанных предложений изготовим следующую схему питания светодиодной матрицы.

Ток питания светодиодной матрицы проходит через регулирующий транзистор VT2 и ограничительное сопротивление R5. Ток через управляющий транзистор VT1 задается подбором сопротивления R4 и может изменяться в зависимости от изменения падения напряжения на резисторе R5, также используемом в качестве резистора токовой обратной связи. При увеличении тока в цепочке - светодиоды, VT2, R5, по какой-либо причине, увеличивается падение напряжения на R5. Соответствующее увеличение напряжения на базе транзистора VT1, приоткрывает его, уменьшая этим напряжение на базе VT2. А это прикрывает транзистор VT2, уменьшая и стабилизируя этим, ток через светодиоды. При уменьшении тока на светодиодах и VT2, процессы протекают в обратном порядке. Таким образом, за счет обратной связи, при изменении напряжения на источнике питания (с 17 до 12 вольт) или возможных изменениях параметров схемы (температура, выход из строя светодиода), ток через светодиоды постоянен в течение всего периода разряда аккумулятора.

На детекторе напряжения, специализированной микросхеме DA1, собрано устройство для контроля напряжения. Микросхема работает следующим образом. При номинальном напряжении, микросхема DA1 закрыта и находится в дежурном состоянии ожидания. При уменьшении напряжения на выводе 1, подключенном к контролируемой цепи (в данном случае - источник питания), до определенного значения, вывод 3 (внутри микросхемы) соединяется с выводом 2, подключенным к общему проводу.

Приведенная выше схема имеет различные варианты включения.

Вариант 1. Если к выводу 3 (точка А) подключить индикаторный светодиод (LED1 – R3) соединенный с положительным проводом (см. принципиальную схему), получим индикацию предельного разряда аккумулятора. При снижении напряжения питания до определенного значения (в нашем случае 12 В) светодиод LED1 включится, сигнализируя о необходимости заряда аккумулятора.

Вариант 2. Если точку А соединить с точкой Б, то при достижении низкого напряжения (12 В) на аккумуляторе, получим автоматическое отключение светодиодной матрицы от питания. Детектор напряжения, микросхема DA1, при достижении контрольного напряжения, соединит базу транзистора VT2 с общим проводом и закроет транзистор, отключив светодиодную матрицу. При повторном включении фонаря на низком напряжении (менее 12 В), светодиоды матрицы загораются на пару секунд (за счет заряд/разряд С1) и вновь гаснут, сигнализируя о разряде аккумулятора.

Вариант 3. При объединении вариантов 2 и 3, при отключении светодиодной матрицы включится индикаторный светодиод LED1.
Основные достоинства схем на детекторе напряжения, простота схемного подключения (практически не требуется дополнительных деталей обвязки) и чрезвычайно низкое энергопотребление (доли микроампера) в дежурном состоянии (в режиме ожидания).

2. Собираем схему драйвера на монтажной плате.
Выполняем монтаж VT1, VT2, R4. Подключаем, в качестве нагрузки, светодиодную матрицу, рассмотренную в начале статьи. В цепь питания светодиодов включаем миллиамперметр. С целью возможности проверки и настройки схемы на стабильном и определенной величины напряжении, подключаем ее к регулируемому источнику питания. Подбираем сопротивление резистора R5, позволяющее стабилизировать ток через светодиоды во всем диапазоне планируемой регулировки (с 12 до 17 В). С целью повышения КПД, первоначально был установлен резистор R5 номиналом 3,9 ома (см. фото), но стабилизация тока во всем диапазоне (при фактически установленных деталях) потребовала установки номинала в 20 ом, так как не хватало напряжения для регулировки VT1 из-за малого тока потребления светодиодной матрицы.

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

3. Добавляем на монтажную плату схему индикатора - ограничителя предельного разряда. Микросхемы детектора напряжения выпускаются на различные значения контроля напряжения. В нашем случае, в связи с отсутствием микросхемы на 12 В, использовал имеющуюся в наличии, на 4,5 В (часто встречаются в отработавшей бытовой технике – телевизоры, видеомагнитофоны). По этой причине, для контроля напряжения в 12 В, добавляем в схему делитель напряжения на постоянном резисторе R1 и переменном R2, необходимом для точной настройки на нужное значение. В нашем случае, регулировкой R2, добиваемся напряжения 4,5 В на выводе 1 DA1 при напряжении 12,1…12,3 В на шине питания. Аналогично, при подборе делителя напряжения, можно использовать и другие подобные микросхемы - детекторы напряжения, различных фирм, наименований и контрольных напряжений.

Первоначально проверяем и настраиваем схему на срабатывание, по светодиодному индикатору. Затем проверяем работу схемы, соединив точки А и Б, на отключение светодиодной матрицы. Останавливаемся на выбранном варианте (1, 2, 3).

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

Приступим. Для начала выделю преимущества данного фонарика:

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

Теперь недостатки, которых куда больше:

  • неудобное управление - три режима которые переключаются по циклическому алгоритму (четвёртый режим "выключено"), то есть если нужный режим пропустил, то надо "прощелкивать" все режимы по кругу, пока не "дощелкаешь" до нужного режима;
  • один из режимов - мигающий - вообще бесполезный, только мешает управлению;
  • нет контроля состояния аккумулятора, то есть при каждом цикле разряда портит аккумулятор, сильно разряжая его (если не выключить, может посадить аккумулятор до 1...2 вольт);
  • нет стабилизации тока, то есть с разрядом аккумулятора яркость постепенно падает;
  • заряд аккумулятора идет тупо через резистор, нет никакого контроля зарядного тока и отсутствует правильный алгоритм заряда литий-ионного аккумулятора (при каждом цикле заряда гробит аккумулятор);
  • стоИт китайский светодиод с низкой эффективностью;
  • стоИт китайский аккумулятор с завышенной емкостью на этикетке.

Теперь о том, что бы хотелось получить в итоге:

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

Вскрываем корпус фонарика.

Здесь мы видим, что его "мозги" сделаны на основе БИС микросхемы, поэтому они не поддаются никакой модификации.

При замене светодиода на другой светодиод, выходной ток изменился почти на 50%, что говорит об отсутствии какой либо стабилизации тока. Решено выкинуть родную плату и сделать свою. В качестве управляющего контроллера я выбрал ATtiny13A-SSU ввиду следующих основных преимуществ:

  • малая цена - около 30 рублей (на момент написания статьи, май 2014г.);
  • компактный корпус поверхностного монтажа;
  • в режиме сна потребляет менее 500 наноампер (!!!);
  • возможность работы при низких напряжениях питания (вплоть до 1.8в);
  • возможность работы при температуре ниже 0 градусов.

В качестве драйвера светодиода выбор пал на AMC7135 благодаря следующим характеристикам:

  • возможность работы при низких напряжениях питания;
  • минимальное падение напряжения на микросхеме - всего 0.15в;
  • возможность ШИМ-регулировки яркости светодиода;
  • компактный корпус.

Схема драйвера:

Небольшие пояснения о работе схемы и применяемых компонентах. Для измерения уровня заряда аккумулятора, используется АЦП микроконтроллера и внешний источник опорного напряжения (далее ИОН) REF3125 с выходным напряжением 2,5В. Внешний ИОН используется не просто так - с его помощью достигается измерение напряжения аккумулятора с минимальными погрешностями, так как точность встроенного в микроконтроллер ИОН"а оставляет желать лучшего. Управление AMC7135 производится при помощи ШИМ-сигнала, частотой 500 Гц. При отключении драйвера, микроконтроллер отключает AMC7135, обесточивает ИОН, и переходит в спящий режим "Power Down", потребляя менее 1 мкА . Устройство не требует какой-либо настройки и корректировки, и после сборки и прошивки начинает работать сразу. Чтобы можно было выбрать напряжение отключения драйвера "под себя", в конце статьи прилагается архив с прошивками под напряжения 3,1...3,6 Вольт с шагом 0,1В.

Развожу печатку, травлю, запаиваю, пишу софт в AVR Studio 5, прошиваю микроконтроллер. На этапе изготовления платы нужно просверлить отверстия, и соединить перемычками дорожки с обеих сторон платы. Я взял медную жилу от витой пары, залудил её, и сделал из неё перемычки.

Вот что из этого получилось. Печатку и набор прошивок можно скачать в конце статьи.

На одной стороне платы (двусторонняя диаметром 18 мм) разместились все управляющие мозги, на другой стороне платы расположился драйвер светодиода с полигоном из меди для должного охлаждения. Опционально на плату может быть установлена вторая микросхема-драйвер AMC7135 для увеличения максимального выходного тока с 350 мА до 700 мА. Небольшие размеры платы выбраны не случайно - необходимо было уместить драйвер на родное место в корпусе. Вот фотка для оценки размеров получившейся платки:

Родной контроллер управления давал на светодиод следующий ток в режимах:

  • 1 режим, примерно 200 мА;
  • 2 режим, примерно 60 мА;
  • 3 режим, примерно 60 мА (мигающий).

Родной контроллер управляется по следующему алгоритму. При нажатии на кнопку выполнялся переход на следующий режим. 1 --> 2 --> 3 --> ВЫКЛ и так по циклу. Если нужный режим случайно пропустил, то придётся сидеть и "нащёлкивать" пока не дойдёшь до нужного режима. Также для выключения фонарика нужно "прощёлкать" все режимы. О быстром включении/отключении фонарика можно даже и не мечтать.

Моя плата контроллера с драйвером выдает следующие токи в разных режимах:

  • 1 режим, 30 мА;
  • 2 режим, 130 мА;
  • 3 режим, 350 мА (будет использоваться кратковременно, так как в корпусе фонарика не предусмотрено должного охлаждения для светодиода).

Мой контроллер управляется по следующему алгоритму. Однократное (короткое) нажатие выполняет включение/отключение фонарика (с сохранением последнего выбранного режима). Длительное удерживание кнопки выполняет переключение режима на следующий. Таким образом, мы имеем возможность как быстро включать/отключать фонарик, так и менять режимы. Надоедливого и бесполезного режима "мигалки" теперь нету. При снижении напряжения аккумулятора до заданного в "прошивке" уровня, фонарик переходит на предыдущий режим. Тоесть если стоял режим 3, то сначала контроллер включит режим 2, затем фонарик поработает какое-то время, затем включится режим 1, фонарик поработает ещё какое-то время, и только потом он выключится. В интернете уже есть аналогичные конструкции, но они либо имеют управление при помощи разрыва цепи питания, что не всегда оправданно, либо у них не используется режим сна, а это очень важно!!

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

Также достаём штатный светодиод, будем менять его на эффективный светодиод CREE XPG с тёплым свечением.

Готовим наш новый светодиод:

Собираем оптический блок:

Теперь встраиваем новую плату управляющего контроллера и драйвера светодиода:

Cобираем корпус:

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

Позже был установлен нормальный контроллер заряда аккумулятора на микросхеме MAX1508, а также родной китайский аккумулятор был заменён на внешний блок аккумуляторов, состоящий из 2 оригинальных банок Sanyo UR18650.

В активном режиме микроконтроллер ATtiny13A потребляет менее 500 мкА благодаря работе на тактовой частоте 128 кГц. Также в активном режиме добавляется потребление AMC7135, потребление внешнего ИОН, и потребление внутреннего АЦП микроконтроллера. Суммарный ток потребления в активном режиме зависит от используемого ИОН, и может составлять от 0,1 мА до 1 мА. Я применил ИОН REF3125, суммарное потребление схемы в рабочем режиме составило 0,5...0,8 мА.

ИОН REF3125 можно заменить на аналоги:

  • ADR381
  • CAT8900B250TBGT3
  • ISL21010CFH325Z-TK
  • ISL21070CIH325Z-TK
  • ISL21080CIH325Z-TK
  • ISL60002BIH325Z
  • MAX6002
  • MAX6025
  • MAX6035BAUR25
  • MAX6066
  • MAX6102
  • MAX6125
  • MCP1525-I/TT
  • REF2925
  • REF3025
  • REF3125
  • REF3325AIDB
  • TS6001

Прилагаю небольшое видео, демонстрирующее управление режимами. Видео снято давно, светодиод ещё тогда стоял родной, позже он был заменён на CREE XPG, также стоял родной аккумулятор. Лень было заново снимать видео. Также хочу предупредить, что не каждый программатор поддерживает прошивку микроконтроллеров на частоте 128 кГц. Для прошивки я использовал программатор "USBAsp" со включенной опцией "Slow SCK". Всем удачных самоделок!!

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

Полную версию прошивки можно приобрести .

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
МК AVR 8-бит

ATtiny13A

1 корпус SOIC 208 mil В блокнот
Конденсатор 1 мкФ 1 не менее 1 мкФ В блокнот
Резистор

4.7 кОм

2 или 3...10 кОм