Драйвер из светодиодной лампы для фонарика. Экономическая целесообразность применения "драйвера" в светодиодном фонаре? Какие светодиоды стоят в китайских фонариках

Наверняка у многих имеются фонари фирмы Convoy, они давно зарекомендовали себя как недорогие и качественные источники света. Но мало кто знает, что с помощью программатора за $3 и клипсы за $3 можно залить в некоторые фонари кастомную прошивку, которая будет иметь больше функций или будет удобнее в использовании. Сразу оговорюсь, что в статье речь пойдет о прошивке фонарей с драйверами на базе микроконтроллера Attiny13a, такие драйвера стоят во всех конвоях S серии (кроме нового S9), а так же в Convoy M1, M2, C8. Многие другие производители так же ставят в свои фонари драйвера с Attiny, к ним данный мануал тоже применим, но следует уделять внимание фьюзам и используемым портам Attiny.

Краткий ликбез

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

  • Кнопка выключения - у «тактических» EDC фонариков типа Конвоев обычно располагается в хвосте
  • Аккумулятор - обычно это Li-ion банка
  • Драйвер - самая важная часть фонаря, его мозги
  • Светодиод - говорит сам за себя

Из всего этого безобразия нас, как вы уже поняли, интересует в первую очередь драйвер. Он отвечает за работу фонаря в различных режимах яркости, запоминание последнего включенного режима и прочую логику. В одноаккумуляторных фонарях чаще всего встречаются ШИМ-драйвера. В качестве силового ключа в таких драйверах обычно используется либо полевой транзистор, либо куча линейных регуляторов AMC7135. Например, так выглядит довольно популярный драйвер Nanjg 105D:


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

Предыстория

Сейчас на рынке представлено поистине огромное количество карманных EDC фонариков, и, что характерно, каждый производитель норовит изобрести свою собственную прошивку с собственным уникальным™ управлением. Из всех существующих решений мне больше всего нравилась прошивка, с которой до недавних пор поставлялись фонари Convoy с драйвером Nanjg 105D. Она имела 2 группы режимов (1 группа: Мин-Средний-Макс, 2 группа: Мин-Средний-Макс-Строб-SOS). Смена групп в ней осуществлялась интуитивно просто: включаем минимальный режим, спустя пару секунд фонарь моргнёт - кликаем кнопкой, и группа режимов переключена. С недавних пор Convoy начал поставлять свои фонари с новой прошивкой biscotti. Она имеет больше возможностей (12 групп режимов, возможность включения-отключения памяти последнего режима, запоминание режима в выключенном состоянии (т.н. off-time memory)), но у нее есть несколько жирных минусов, которые лично для меня перечеркивают все достоинства:

  • Сложное управление. Чтобы сменить группу режимов нужно помнить наизусть шаманскую последовательность кликов кнопкой
  • Off-time memory не работает при использовании светящихся кнопок (например, таких)
  • Много бесполезных групп режимов, отличающихся лишь порядком следования

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

Встречайте Quasar v1.0

Взяв за основу прошивку luxdrv 0.3b от DrJones , я сваял собственную с блекджеком и лунапарками. Я постарался сделать ее максимально похожей на стоковую прошивку Nanjg 105D и более масштабируемой. Что может мой Quasar:

  • 2 группы режимов: (Минимальный - Средний - Максимальный - Турбо) и (Минимальный - Средний - Максимальный - Турбо - Строб - Полицейский строб - SOS)
  • Строб злой (частота вспышек около 12Гц)
  • Новый режим - полицейский строб - делает прерывистые серии по 5 вспышек, режим может быть полезен велосипедистам, т.к. повышает заметность
  • Переключение групп осуществляется как в заводской прошивке: включаем первый режим, ждем пару секунд, кликаем сразу после того, как фонарь моргнет
  • Путем модификации исходников можно добавить до 16 групп, в каждой группе можно задать до 8 режимов
  • Используется традиционная on-time память, можно использовать светящиеся кнопки без потери функциональности
  • При разряде аккумулятора ниже 3В фонарь начинает сбрасывать яркость, но полностью не отключается - используйте аккумуляторы с защитой, если боитесь их убить.
  • Удобная фича для проверки текущего уровня аккумулятора: в любом режиме делаем 10-20 быстрых полу-нажатий кнопкой до тех пор, пока фонарь не перестанет включаться. После этого фонарь сделает от 1 до 4 вспышек, каждая вспышка означает уровень заряда соответственно < 25%, < 50%, < 75% и < 100%.

Исходники, скомпилированный бинарник с двумя группами режимов и проект для Atmel Studio вы можете найти на моем гитхабе . Помните, что исходники распространяются под лицензией CC-BY-NC-SA, и прошивку вы используете на свой страх и риск без каких-либо гарантий.

Принадлежности

Для заливки кастомной прошивки нам понадобятся:

  • SOIC клипса Купить
  • Любой клон Arduino Nano 3.0 для использования в качестве программатора Купить
  • Arduino у меня уже была, поэтому я решил завести отдельный самостоятельный девайс для прошивки фонарей и купил USBISP программатор Купить
  • Dupont провода для подключения клипсы к программатору Купить

Подготовка программатора

Для прошивки драйвера подойдет обычная Arduino Nano 3.0 с залитым скетчем ArduinoISP, но я решил завести отдельный программатор, поэтому купил USBISP. Он имеет форм-фактор флешки в алюминиевом корпусе:


Из коробки этот программатор определяется на компе как HID устройство и работает только с китайским кривым софтом, чтобы использовать его с avrdude можно перепрошить его в USBASP. Для этого нам, как ни странно, понадобится другой рабочий программатор. Здесь нам поможет Arduino Nano, подключаем её к компьютеру, открываем Arduino IDE и открываем стандартный скетч ArduinoISP:


Раскомменчиваем строку #define USE_OLD_STYLE_WIRING:


И заливаем скетч в Nano. Теперь у нас есть AVRISP программатор, которым можно перепрошить наш USBISP в USBASP. Для этого нам в первую очередь понадобится avrdude, он лежит в папке установки Arduino IDE по пути \hardware\tools\avr\bin. Для удобства советую добавить полный путь к avrdude.exe в переменную окружения PATH.

Теперь нам необходимо открыть USBISP и перевести его в режим программирования, установив перемычку UP:



Заодно убеждаемся, что на плате распаян Atmega88 или 88p, как в моем случае:


Другие перемычки, несмотря на советы в инете, трогать не нужно, все прекрасно прошивается и с ними.

Теперь внимательно смотрим на распиновку USBISP программатора, нанесенную на его алюминиевом корпусе, и подключаем его к Arduino Nano:

  • VCC и GND к VCC и GND сответственно
  • MOSI к D11
  • MISO к D12
  • SCK к D13
  • RESET к D10

У меня не оказалось Female-Female проводов, поэтому я заюзал мини-макетку:


Следующий шаг - скачиваем прошивку usbasp.atmega88-modify.hex , подключаем Arduino к компу, запускаем консоль и переходим в папку с сохраненной прошивкой. Для начала выставим фьюзы командой:

Avrdude -p -m88 -c avrisp -b 19200 -U lfuse:w:0xff:m -U hfuse:w:0xdd:m

Затем заливаем прошивку командой:

Avrdude -p m88p -c avrisp -b 19200 -U flash:w:usbasp.atmega88-modify.hex

После этого убираем перемычку на USBISP, подключаем его к компьютеру, и если все сделано правильно, - на нем загорится синий светодиод:


Теперь у нас есть полноценный компактный USBASP программатор в удобном металлическом корпусе.

SOIC клипса

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


Подключаем контакты клипсы к программатору в соответствии с распиновкой микроконтроллера:


Для большей надежности я припаял провода к клипсе и затянул все это термоусадкой:


Заливаем прошивку в фонарь

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


Крепим клипсу, соблюдая ориентацию. Ориентир в данном случае - кругляш на корпусе микросхемы, он обозначает первый её пин (RESET в нашем случае):


Смотрим, чтобы все пины клипсы утопились в корпус. Подключаем программатор к компу, теперь дело осталось за малым - нужно залить прошивку) Для этого идем на гитхаб, качаем бинарник quasar.hex , запускаем консоль, переходим в папку с бинарником и выполняем команду:

Avrdude -p t13 -c usbasp -u -Uflash:w:quasar.hex:a -Ulfuse:w:0x75:m -Uhfuse:w:0xFF:m

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


Просто, да? А вот нифига, с вероятностью 90% вместо загрузки прошивки вы увидите это:


Причина чаще всего кроется в том, что у новых моделей драйверов замкнуты пины 5 и 6 (MISO и MOSI), что делает невозможным программирование. Поэтому если avrdude жалуется на target doesn"t answer, то первым делом вооружаемся скальпелем и внимательно смотрим на плату. Нужно перерезать дорожку, как показано на картинке:


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

Модификация прошивки

Скомпилированная прошивка на гитхабе посути является чуть более продвинутым аналогом оригинальной прошивки, поэтому куда интереснее собрать собственную версию прошивки со своими группами и режимами. Сейчас я расскажу, как это сделать. Первым делом качаем и устанавливаем Atmel Studio с официального сайта. Потом скачиваем все файлы проекта (кто умеет в git - могут просто клонировать всю репу) и открываем Quasar.atsln через установленную студию:


Перечислю наиболее интересные места в коде:

#define LOCKTIME 50

Задает время, через которое текущий режим будет сохранен. Значение 50 соответствует 1 секунде, соответственно поставив 100 можно получить интервал ожидания в 2 секунды

#define BATTMON 125

Задает критический уровень напряжения на аккумуляторе, при достижении которого фонарь начнет сбрасывать яркость. У стандартного Nanjg 105D величина 125 соответствует примерно 2.9 вольтам, но все зависит от величин резисторов делителя напряжения на плате. Если удалить эту строку целиком - фонарь не будет следить за напряжением аккумулятора.

#define STROBE 254 #define PSTROBE 253 #define SOS 252

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

#define BATTCHECK

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

#define MEM_LAST

Задает запоминание последнего режима. Возможны следующие значения: MEM_LAST - фонарь включается в последнем включенном режиме, MEM_FIRST - фонарь всегда включается в первом режиме, MEM_NEXT - фонарь всегда включается в следующем режиме.

#define MODES_COUNT 7 #define GROUPS_COUNT 2

Задают количество режимов в группе и количество групп соответственно. Тесно связаны со следующим массивом groups:

PROGMEM const byte groups = {{ 6, 32, 128, 255, 0, 0, 0 }, { 6, 32, 128, 255, STROBE, PSTROBE, SOS }};

Здесь перечислены сами группы режимов работы. Числа 6, 32, 128, 255 - значения яркости, STROBE, PSTROBE, SOS - обозначения специальных режимов. Нулевые значения яркости игнорируются, поэтому в разных группах можно задавать разные количества режимов (в данном случае в первой группе 4 режима, во второй - 7).

Например, если вы хотите оставить один единственный режим работы со 100% яркостью, то сделать это можно так:

#define MODES_COUNT 1 #define GROUPS_COUNT 1 PROGMEM const byte groups = {{ 255 }};

Если вам нужны 3 группы режимов без мигалок и с обратным следованием (от максимального к минимальному), то можно сделать так:

#define MODES_COUNT 4 #define GROUPS_COUNT 3 PROGMEM const byte groups = {{ 255, 0, 0, 0 }, { 255, 64, 6, 0 }, { 255, 128, 32, 6 }};

При таком раскладе в первой группе всего один режим со 100% яркостью, во второй - 3 режима, в третьей - 4 режима с более плавным уменьшением яркости. Легко и просто, правда? Остается лишь скомпилировать исходник в hex файл с помощью студии, для этого выбираем «Release» в диспетчере конфигураций и жмем «Запуск без отладки»:


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

На этом все, надеюсь сей мануал будет кому-нибудь полезен. Если у кого возникнут вопросы - милости прошу в комменты)

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

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

Долго пылился на полке старый фонарик - ручка «Duracell». Работал он от двух батареек формата ААА, на лампочку накаливания. Очень удобен был, когда нужно посветить в какую-либо узкую щель в корпусе электронного прибора, но всё удобство от применения перечеркивал «жор» батареек. Можно было бы выкинуть этот раритет и поискать в магазинах что-то современнее, но… Это не наш метод... © Потому на Али была куплена микросхема светодиодного драйвера, которая помогла перевести фонарик на светодиодный свет. Переделка очень простая, которую сможет осилить, даже начинающий радиолюбитель, умеющий держать в руках паяльник… Так что, кому интересно, велком под Кат…

Микросхема драйвер покупалась давно, больше года назад, и ссылка на магазин уже ведет в «пустоту», потому я нашел аналогичный товар, у другого продавца. Сейчас этот драйвер стоит дешевле, чем я покупал его. Что же это за «клоп» с тремя ножками, давайте рассмотрим подробнее.
Для начала ссылка на даташит:
Микросхема представляет собой Led драйвер способный работать от низкого напряжения, к примеру, одной батарейки 1.5В формата ААА. Микросхема драйвера имеет высокую эффективность (КПД) 85% и способна «высосать» батарейку практически полностью, до остаточного напряжения 0,8В.
Характеристики микросхемы драйвера

под спойлером


Схема драйвера очень проста…


Как вы видите, кроме этой микросхемы «клопа» нужна всего одна деталь - дроссель (индуктор), и именно индуктивностью дросселя задается ток светодиода.
Для фонарика в место лампочки, я подобрал яркий белый светодиод, потребляющий ток 30мА, соответственно мне нужно было намотать дроссель индуктивностью 10мкГн. Эффективность драйвера составляет 75-92% в диапазоне 0.8-1.5В, что очень неплохо.

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


Дроссель можно намотать, или взять готовый. Я намотал на гантельке, которая попалась под руку. При самостоятельном изготовлении необходимо контролировать индуктивность при помощи LC метра. В качестве корпуса для платы драйвера был использовать двух кубовый одноразовый шприц, внутри которого вполне достаточно места, что бы разместить все необходимые компоненты. С одной стороны шприца -резиновая пробка с светодиодом и контактной площадкой, с другой стороны вторая контактная площадка. Размер отрезка шприца подбирается по месту и приблизительно равен размеру батарейки ААА (мизиньчиковой, как её называют в народе)


Собственно собираем фонарик


И видим, что светодиод ярко светит от одной батарейки…


Ручка-фонарик в сборе выглядит вот так


Светит хорошо и вес фонарика стал меньше, потому как используется всего одна батарейка, а не две, как было изначально…

Вот такой получился коротенький обзор… При помощи микросхемы драйвера, вы можете переделать почти любой раритетный фонарик, на питание от одной батарейки 1.5В. Если есть вопросы спрашивайте…

Планирую купить +73 Добавить в избранное Обзор понравился +99 +185