Developing for Arduino
January 2015 27

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

Купив множество китайских фонариков, мощностью от 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.

Обновление 04.02.2015: Подумав немного, добавил возможность моментального включения фонарика на максимальный режим (два быстрых клика), а так же режим стробоскопа (три быстрых клика). Для активации этих режимов необходимо раскомментировать соответствующие дефайны в начале кода.
+9
33.4k 28
Comments 2
Top of the day