Новое сердце для китайского фонарика

Дмитрий DarkByte Москин

Мой блог, да.
logo

Новое сердце для китайского фонарика

Опубликовано 28.01.2015 автором Дмитрий Москин
Купив множество китайских фонариков, мощностью от 100 до 16000 люмен, так и не остался доволен.

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




В качестве донора был выбран "2500Lm CREE XM-L T6 LED Headlamp" ценой в 12 долларов, у которого через год использования умер ШИМ контроллер CX2812 Данный контроллер имеет три выхода для нагрузки, два входа для настройки режимов работы и один вход для кнопки переключения режимов. Первым неприятным моментом практически любого китайского фонарика для меня оказалось наличие режимов Strobe и SOS. В случае с данным контроллером, достаточно подать на вход OPT1 логическую единицу и из пяти режимов останется только три (High, Low, Off). Если единицу подать на оба OPT входа, то режим Low исчезнет.



Продавец заявляет, что в фонарике используется светодиод Cree XM-L T6 и он жарит аж 2500 люменов на максимальном режиме. На сайте Cree для данного светодиода заявлена светосила 100 люменов на ватт и максимальная мощность 10 ватт. На самом деле используется светодиод XM-L U2, его характеристики не сильно отличаются от T6, но из-за толщины проводов до светодиода доходит только 1.1А, что при напряжении аккумулятора 4.1В составляет 4.51Вт. Получается, что на максимальном режиме фонарик излучает примерно 451 люмен. Люксметр показывает 420 люменов, и это довольно далеко от цифры 2500.



Схема драйвера проще некуда и усложнять её не будем. В качестве нового каменного сердца был выбран микроконтроллер AtTiny85, хотя хватило бы и AtTiny13(a), но в нужном корпусе его под рукой не оказалось. Кнопка переключения режимов удачно попала на ножку PB2/INT0, а вот база транзистора оказалась подключенной к выходу RESET. Имея на борту аппаратный ШИМ, было решено использовать именно его, поэтому дорожка ведущая к RESET была перерезана, а база транзистора подключена перемычкой к выходу PB1/OC0B. Для удобства программирования необходимые пины были вынесены наружу. Провода зафиксированы соплями термоклея. Провода от аккумуляторов до платы заменены на чуть более толстые.



Прошивка собиралась в Arduino 1.0.6, в качестве программатора использовался Arduino Nano. Установлены фьюзы в соответствии со схемой "ATtiny85 @ 1 MHz (internal oscillator; BOD disabled)". Вес прошивки в бинарном виде на данный момент составляет 278 байт. В выключенном состоянии фонарик потребляет 0.3мкА, при кратковременном нажатии на кнопку включается минимальный режим, потребление увеличивается до 7.6мА. Для выключения необходимо кратковременно нажать и отпустить кнопку. Если продолжить удержание кнопку, то яркость плавно увеличится до максимальной. Частичная замена проводов не дала существенного прироста яркости, ибо провода от блока питания до головы остались узким местом. На данный момент на максимальном режиме потребление получилось 1.2А, напряжение АКБ 4.2, получается примерно 500 люменов.

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

P.S. Оригинал опубликован на habrahabr.ru. Но на данный момент недоступен.

UPD: в код добавлены дефайны DOUBLE_CLICK_MAX_LIGHT и TRIPLE_CLICK_STROBE_LIGHT, они добавляют возможность быстрого включения максимального режима и стробоскоп. Ну и 118 байт бинарного кода.