Управление 3W светодиодом

Управлять светодиодом будет МК, реагируя на нажатия кнопок. Питание силовой части 5-6 Вольт.
Из множества вариантов я решил выбрать линейный стабилизатор. И вот почему:
— Прост в реализации, не отнимает много ресурсов МК.
— Падение напряжения на силовых элементах драйвера в моем случае будет не большое: Из шести вольт четыре выпадут на самом диоде, остальное — на шунте и ключе. Потому перегреваться они не должны.
— Вся эта конструкция будет стоять на велосипеде. При движении обдуваться потоками воздуха. Значит, можно заиметь халявное воздушное охлаждение для силовых элементов.
Схема нарисовалась следующая:

Алгоритм регулировки прост до безобразия:
— Настраиваем таймер на ШИМ режим. Он работает независимо от МК и через RC цепочку регулирует напряжение на затворе полевика. В регистр OCR пихаем 0.
— Запускаем АЦП в режиме непрерывного преобразования. Вход АЦП подключен к шунтирующему резистору.
— По таймеру (с небольшой частотой) корректируем ШИМ регистр таким образом, чтобы ток, протекающий через светодиод соответствовал нужному нам значению.
Программу накидал за пол-вечера:
program test;
var
Light: byte;
soft_timer: byte;
const
Light_min=1;
Light_Max=40;
procedure TIMER; org 0x3;
begin
Dec(soft_timer);
if soft_Timer=0 then
begin
if ADCH < Light then if OCR0A < 255 then Inc(OCR0A);
if ADCH > Light then if OCR0A > 0 then Dec(OCR0A);
soft_timer := 255;
end;
end;
begin
Delay_ms(1000);
//Таймер ноль должен быть настроен на PWM режим:
COM0A1_bit := 1;
WGM00_bit := 1;
WGM01_bit := 1;
TCCR0B := 1; //Поехали!
OCR0A := 0;
TOIE0_bit := 1;
Light := 10;
soft_timer := 100;
DDRB.0 := 1; //ШИМ
PORTB.3 := 1; //Кнопка "Больше"
PORTB.4 := 1; //Кнопка "Меньше"
//Простите за "волшебные числа" :)
ADMUX.ADLAR := 1;
ADMUX.MUX0 := 1;
ADCSRA := %11100111;
asm sei end;
while true do
begin
if PinB.3 = 0 then //Кнопка "Больше"
begin
if Light < Light_max then Inc(Light);
Delay_ms(50);
end;
if PinB.4 = 0 then //Кнопка "Меньше"
begin
if Light > Light_min then Dec(Light);
Delay_ms(50);
end;
end;
end.
В итоге получилось вот это:
- 0
- 16 мая 2011, 01:42
- dcoder
Прост в реализации, не отнимает много ресурсов МК.Ну импульсный занимает не больше. Точнее даже, достаточно поменять аналоговую часть — добавить катушку, диод и конденсатор. И выкинуть один лишний кондер. А, немного программного — поменять полярность ШИМ (если ставить P-канальный полевик).
А что за диод? Обычно вроде у трехваттников рабочий ток — 1А.
Импульсному надо либо быстрый ШИМ, либо большой дроссель — а мне мотать в падлу :) Или не так страшно все?
Светодиод Emitter ARPL-3W (вроде-бы, не помню точно :))
chip-nn.ru/doc/all/3029/3029.zip
Светодиод Emitter ARPL-3W (вроде-бы, не помню точно :))
chip-nn.ru/doc/all/3029/3029.zip
О, прикольно! Почти моя схема.
А я-то думал, только у мя выходной транзистор не в ключевом режиме работает))
А я-то думал, только у мя выходной транзистор не в ключевом режиме работает))
Какие вы все ленивые)
Хотя, линейных драйверов СИДов хватает. AMC7135 например, многие MBI (от многоканальных 20-миллиамперных и до одноканальных на 1.4А).
P.S. Скомпилил исходник, почитал листинг, удивился. Код хотя и не содержит выносящих мозг финтов оптимизатора (за которые я их и уважаю, хехе), но вполне пряменький и не особо замусоренный. И без багов. У меня микропаскаль себя хуже вел)
Хотя, линейных драйверов СИДов хватает. AMC7135 например, многие MBI (от многоканальных 20-миллиамперных и до одноканальных на 1.4А).
P.S. Скомпилил исходник, почитал листинг, удивился. Код хотя и не содержит выносящих мозг финтов оптимизатора (за которые я их и уважаю, хехе), но вполне пряменький и не особо замусоренный. И без багов. У меня микропаскаль себя хуже вел)
Для велосипедного фонаря, с питанием от батарей, лучше применить SEPIC, или что-то похожее. Чтобы выходное напряжение, могло быть как больше, так и меньше напряжения питания. Это позволит использовать батареи по-максимуму.
У меня напряжение питания будет всегда на 1.5 — 2 Вольта больше падения на светодиоде (4В). SLA аккумулятор на 6 Вольт.
Что характерно, первая-же реализация SEPIC драйвера на AVR из тех, что я нашел, была построена на тини25. Идеальный МК для всяких драйверов, ибо:
Что характерно, первая-же реализация SEPIC драйвера на AVR из тех, что я нашел, была построена на тини25. Идеальный МК для всяких драйверов, ибо:
Таймер работет на частоте 64МГц, что дает частоту ШИМ ~250кГц, что позволяет использовать не особо здоровые катушки.
А там (в тини25, 45, 85) стоит PLL, которая может подавать на таймер системную тактовую частоту, умножив, ЕМНИП, в 8 раз. Получается, что при частоте МК в 8 Мгц, таймер может работать на 64МГц.
Вообще, эта серия тинек идеально подходит для всякой силовой электроники, потому-что у них есть:
— Шустрый ШИМ
— Аппаратные инверсные выходы для ШИМ.
— Dead Timer генератор
— АЦП с предварительным усилением сигнала
— Встроенный градусник.
Вообще, эта серия тинек идеально подходит для всякой силовой электроники, потому-что у них есть:
— Шустрый ШИМ
— Аппаратные инверсные выходы для ШИМ.
— Dead Timer генератор
— АЦП с предварительным усилением сигнала
— Встроенный градусник.
Комментарии (23)
RSS свернуть / развернуть