Фонарик мечты: драйвер мощного светодиода

Как известно диод - это токовый прибор, питать его нужно постоянным током, а не напряжением. Светодиоды – тоже диоды, и их тоже нужно питать стабильным током. При стационарной установке светодиода проблема его питания легко решается с помощью резистора, который задает ток через светодиод. Рассчитать номинал резистора помогает закон Ома: R=(Uпит-Uпад)/I, где Uпит – напряжение источника питания в вольтах, Uпад – напряжение, которое падает на светодиоде (примерно 3-3,5В, зависит от тока через светодиод), а I – желаемый ток через светодиод в амперах. Далее подбирается резистор ближайшего номинала, который есть в наличии и все хорошо работает. При больших токах резистор будет сильно греться, так что стоит его брать по мощнее.

схема стабилизатора на резисторе
Минусом стабилизатора на резисторе является неспособность реагировать на изменение напряжения питания (ток через светодиод и как следствие его яркость будут падать по мере разряда батареи), а также никому не нужная рассеиваемая мощность на резисторе. Для решения этой проблемы существуют так называемые драйвера светодиода (стабилизаторы тока). Стабилизаторы тока бывают повышающими (Boost) и понижающими (Buck). Boost стабилизаторы используются, когда напряжение на батареях меньше, чем падение напряжения на светодиоде, а Buck – когда напряжение на батарея больше падения на светодиоде.
При проектировании своего «неубиваемого» фонарика я задумал использовать параллельную связку из литиевых аккумуляторов или 3шт. АА батарейки (т.е. питающее входное напряжение драйвера должно быть в пределах 3-4,5В). Для этой задачи необходимо использовать Buck драйвер, но при этом не используется около 20% запасенной энергии в батареях! Эти 20% можно выжать, вставив в схему еще и Boost драйвер, который будет включаться, когда для Buck драйвера будет слишком низкое напряжения питания. Все это очень муторно и громоздко, 2 драйвера + компаратор или микроконтроллер для переключения. Так дело далеко не зайдет. Почитав раздел светотехники на speleo.ru открыл для себя Boost/Buck стабилизатор LTC3454 с нужным мне диапазоном питающих напряжений и недурной эффективностью (достижимой при вдумчивой намотке индуктивности). Эта микросхема следит за питающим напряжение и автоматически переключает встроенные Boost/Buck драйвера. Силовые ключи в мостовой схеме интегрированы в саму микросхему, и позволяют коммутировать токи до 1А. Схема включения была взята из даташита LTC3454 и немного модифицирована:

Конденсаторы С3,С4 – танталовые в СМД исполнении 68мкФ, С1,С2,С5 – керамические по 0,1мкФ. С намоткой индуктивности я связываться не стал, поэтому купил взял SUMIDA CDRH5D28RNP-5RØN на 5мкГн. Как видно, микросхема драйвера имеет 2 «канала», которые можно включать по отдельности или вместе с помощью высокого логического уровня на выводах EN1, EN2. Токи «каналов» задается с помощью 2-х резисторов R1, R2 которые рассчитывается по формуле R1=3580*0.8/I1, R2=3580*0.8/I2. Главное, чтобы суммарный ток «каналов» был меньше 1А, иначе есть хорошая вероятность спалить внутренние ключи. Далее по задумке, в фонарике будет 2 режима, «ходовой» и «мощный» с соответствующими токами через диод 0,2А и 1А (мощный режим достигается путем включения 2-х «каналов» по 0,2А и 0,8А одновременно). То есть резистор R1, задающий «ходовой» режим должен быть номиналом 15кОм, а R2 – 3,9кОм. Переключатся режимы будут с помощью тактовой кнопки, герметизированной кусочком резины и прижимной пластиной. То есть для этого нужно повесить еще микроконтроллер, который будет считывать нажатия кнопки и переключать режимы свечения диода. Включение/выключение фонаря будет производиться с помощью длительного (2с) удержания кнопки. А переключение «ходового» и «мощного» режима будет с помощью короткого нажатия кнопки (0,5с). Полная схема устройства с микроконтроллером:

Микроконтроллер взял тот, который был ближе всего под рукой. Им оказался микроконтроллер ATtiny24 в SO-14 исполнении. Прошивка его тривиальна, кроме обработки нажатия клавиши, где учитывается время удержания. Когда фонарик выключен – микроконтроллер переходит в Power-Down режим, и потребляет всего 0,1мкА (LTC3454 в SHUTDOWN режиме потребляет тоже всего ничего – 1мкА) и ощутимо подсаживать аккумулятор не будет. Также добавил еще один элемент, конденсатор С6 – 0,1мкФ на питании микроконтроллера.

  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3.  
  4. #define EN1 2
  5. #define EN2 3
  6.  
  7. #define KEY 2
  8.  
  9. unsigned char mode=0;
  10. unsigned char sleep_flag=1;
  11.  
  12. void pause (unsigned int a)
  13. { unsigned int i;
  14.  
  15. for (i=a;i>0;i--)
  16. ;
  17. }
  18.  
  19. void set_mode(void)
  20. {
  21. if (mode==0) PORTA&=~((1<<EN1)|(1<<EN2));
  22. if (mode==1) PORTA=(1<<EN1);
  23. if (mode==2) PORTA=(1<<EN1)|(1<<EN2);
  24. }
  25.  
  26. ISR (INT0_vect)
  27. { int count;
  28.  
  29. count=0;
  30. while ((PINB&_BV(KEY))==0x00)
  31. {
  32. count=count+1;
  33.  
  34. if (count==1000) {
  35.  
  36. if (mode==1) mode=2;
  37. else if (mode==2) mode=1;
  38.  
  39. while ((PINB&_BV(KEY))==0x00)
  40. {
  41. count=count+1;
  42. if (count==9000) {
  43. if (mode==0) mode=1;
  44. else {
  45. mode=0;
  46. sleep_flag=1;
  47. }
  48. set_mode();
  49.  
  50. while ((PINB&_BV(KEY))==0x00)
  51. ;
  52. }
  53. }
  54. set_mode();
  55.  
  56. }
  57. }
  58.  
  59. return;
  60. }
  61.  
  62. int main(void)
  63. {
  64. DDRB=0x04; //PB2 как вход
  65. PORTB=0x04;
  66.  
  67. DDRA=0x0c; //PA2,PA3 как выхода
  68.  
  69. pause(1000); //Пауза
  70.  
  71. GIMSK=(1<<INT0);
  72. MCUCR=(0<<ISC00)|(0<<ISC01); //Прерывание по низкому уровню на PB2
  73. MCUCR|=(1<<SM1)|(0<<SM0)|(1<<SE); //Разрешить power-down режим
  74. sei(); //Разрешить прерывания
  75.  
  76. while(1)
  77. {
  78. if (sleep_flag==1) {
  79. pause(1000);
  80. asm("sleep");
  81. }
  82. }
  83.  
  84. return 1;
  85. }

Еще думал добавить сигнализацию состояния батареи на маломощном RGB светодиоде, но делитель напряжения для АЦП тоже будет кушать ток (например, если делитель сделать из 2-х резисторов номиналом 10кОм, то будет кушать уже 210мкА, что уже нехорошо). Потом мне правда подсказали, что включать делитель можно непосредственно портом микроконтроллера во время измерения АЦП, но было уже поздно и плату решил не переделывать.
Для всего этого методом лазерно-утюжной технологии была вытравлена плата. LTC3454 в виду паскудности корпуса DFN паялась с помощью предварительного подогрева (такой столик, который снизу подогревает плату горячим воздухом до заданной температуры). Процесс паяния DFN корпуса в принципе прост, мажем контактные площадки на плате качественной паяльной пастой, ложим на них микросхему, нагреваем до 215 градусов и наблюдаем, как силы поверхностного натяжения ставят микросхему на посадочное место. Главное не забыть припаять Exposed pad на днище микросхемы, который служит одновременно GND выводом и теплоотводом. Все остальное паяется обычным паяльником.
Вид со стороны LTC3454:
Фото со стороны LTC3454
Вид со стороны tiny24:
Фото со стороны tiny24
На фото виден резистивный делитель напряжения, который я решил не использовать из-за высокого енергопотребления. Стороны платы соединяются с помощью 4-х проводков. 2 для управления и 2 для питания микроконтроллера.
Теперь посчитаем КПД полученного драйвера:
В ходовом режиме потребление от аккумулятора 0,14A при напряжении 4,00В, а ток и напряжение на светодиоде 0,19А и 2,73В соответственно, КПД=92%
В мощном режиме потребление от аккумулятора 1,2А при напряжении 3,65В, а ток и напряжение на светодиоде 1А и 3,06В, КПД=70%
Данные результаты я считая неплохими, но все же хочется повысить КПД в мощном режиме самостоятельной намоткой индуктивности, чем и займусь длинными зимними вечерами.

Скачать исходники и прошивку в виде проекта для AVR Studio 4.
Скачать печатные платы в формате .lay для Sprint layout 5

Неплохо было бы реализовать

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

Легко, но!- КПД резко

Легко, но!
- КПД резко упадет, тут же весь сок именно в том что максимальный КПД.
Как вариант можно использовать тот же IRFZ44 или IRF7105, на будущее думаю будет статейка для сравнения.

Отбой тревоги. Теперь я с

Отбой тревоги. Теперь я с вами...
По поводу повышения КПД фАнаря: по-моему индуктивность в 5мкГн велика, не забывайте, что выше индуктивность -> длиннее провод в дросселе -> выше оммическое сопротивление -> ниже КПД. Если боитесь рипла на выходе, то с уменьшением индуктивности дросселя, примените керамические конденсаторы на выходе. И тогда, возможно, приблизитесь в КПД заявленному производителем. Дальнейший рост КПД, только с применением внешних транзисторов и соотв. МС.

Ребятушки, смотрите в сторону

Ребятушки, смотрите в сторону ATtiny261\461\861. Они могут ШИМ в 250кГц выдавать (правда, разрешение в 8 бит). Неплохие фАнарики получаются. Кстати, как зарегистрироваться? Чем-та у меня не вышло...

А какой диод использовался?

А какой диод использовался?

Cree XP-G R5

Рисунков в данной статье не видно

Видимо, ссылки битые

Спасибо. Только что поправил,

Спасибо. Только что поправил, рисунки потерялись при переносе статьи из блога на главную.