Лампа настроения

RGB Modd Lamp
Увидел я как-то в сети интересную конструкцию, цветную лампу на основе трехцветного светодиода мощностью 3Вт, то есть каждый кристалл мощностью в один ватт, с виду лампа медленно переливалась всеми цветами радуги, что очень неплохо выглядело.

Повторять конструкцию не стал, а решил все сделать с нуля и по своему, первым делом я подумал, что 3-х ваттный светодиод это несерьезно, все-таки маловато света, поэтому заказал в одном интернет магазине 10-ти ваттный трехцветный светодиод. На нем видно, что каждый “цвет” составлен из трех последовательно соединенных светодиодов мощностью в один ватт, соответственно падение напряжения для каждого цвета увеличивается, и составляет для красного 6,2В, для зеленого и синего 9,4-9,5В при номинальном токе 0,35А.

RGB Led 10W
В вышеупомянутой конструкции из сети, для задания цвета применялась цветовая модель под аббревиатурой HSV, ну я ничего изобретать не стал, решил применить ту же модель. Она удобна тем, что можно независимо задавать яркость, насыщенность, тон, и на выходе мы получаем значения интенсивности для каждого канала: красного, синего и зеленого. С помощью широтно-импульсной модуляции (ШИМ) значения интенсивности можно передать на светодиоды.

В качестве микроконтроллера был выбран PIC16F676, так как мне нужен был модуль АЦП. Модуль ШИМ в данном микроконтроллере отсутствует, поэтому он реализован программно на обработчике прерываний, итого 3 канала разрядностью 8 бит и частотой 330Гц, чего достаточно, чтобы не было заметно мерцаний светодиодов. На операционных усилителях DA5, DA6 и транзисторах VT1-VT3 собраны стабилизаторы тока для светодиодов. Для примера рассмотрим стабилизатор тока на DA5. На неинвертирующий вход ОУ через делитель напряжения подано стабильное опорное напряжение от стабилизатора DA3 (TL431). Делитель напряжения собран на резисторе R13 и подстроечном резисторе R14, то есть опорное напряжение можно регулировать. Когда на инвертирующем входе ОУ напряжение больше опорного, то стабилизатор тока не работает, светодиод выключен, такое состояние устанавливается при высоком логическом уровне на линии порта RC0 (10-й вывод) микроконтроллера. При низком логическом уровне на этой линии, напряжение на инвертирующем выводе ОУ становится меньше опорного напряжения, в результате транзистор VT1 открывается и светодиод зажигается, тем самым начинается процесс стабилизации тока, ОУ начнет выравнивать напряжение на инвертирующем входе в соответствии с опорным напряжением. То есть имеем стабильное напряжение на резисторе R18, а отсюда и стабильный ток через светодиод, равный отношению опорного напряжения к сопротивлению этого резистора. Диод VD8 установлен для “отсечки” низкого логического уровня со стороны микроконтроллера, иначе стабилизатор тока не будет работать. Переменный резистор R11 установлен для регулировки параметров для разных режимов лампы. Его средний вывод подключен на вход АЦП микроконтроллера.

Схема лампы настроения
Устройство имеет 4 режима работы, переключение между которыми осуществляется кратковременным нажатием кнопки SB1. После подачи питания по умолчанию устанавливается пульсирующий режим, при котором лампа плавно зажигается и гаснет шестью основными цветами, это красный-голубой-фиолетовый-зеленый-желтый-синий. Следующий режим, это плавная смена цветов по всему спектру от красного до фиолетового. В обоих режимах переменным резистором R11 можно менять скорость пульсаций и скорость смены цветов. Крайнему нижнему по схеме положению движка переменного резистора соответствует высокая скорость, крайнему верхнему положению низкая скорость. В третьем режиме при помощи переменного резистора можно выбрать любой постоянный цвет свечения лампы. В четвертом режиме лампа светит белым светом, то есть интенсивность свечения всех трех светодиодов одинакова, насыщенность цвета нулевая. Переменным резистором в этом случае регулируют яркость свечения. При крайнем нижнем положении движка переменного резистора лампа погашена, крайнему верхнему положению соответствует максимальная яркость.

Теперь несколько слов о блоке питания. Трансформаторный блок питания я исключил из-за громоздкости и тяжести. За основу взял импульсный блок питания на микросхеме Viper22a от DVD плеера. Мощность этой микросхемы составляет 20Вт, а для устройства нужен блок питания не менее 10Вт. Итак, я выпаял все детали из родной платы и впаял в плату, которую специально развел и изготовил под самодельный корпус лампы. Сильноточная обмотка импульсного трансформатора была рассчитана на 5В, так что мне пришлось домотать обмотку, и подрегулировать напряжение с помощью резисторов R7, R8. Выходное напряжение установил на 11,3В, сильно увеличивать не стал, так как это приведет только к увеличению нагрева транзисторов.

В устройстве применены постоянные резисторы МЛТ. Транзисторы КТ817А заменимы на КТ815А, их необходимо установить на теплоотвод, причем для транзистора VT1 потребуется теплоотвод с большей площадью поверхности, так как падение напряжения на нем больше чем на остальных транзисторах. Подстроечные резисторы СП3-38а, переменный резистор практически любого типа, с линейной характеристикой изменения сопротивления от угла поворота. Операционные усилители желательно заменять компараторами, так как не все ОУ могут работать в режиме компаратора. Светодиод также необходимо установить на теплоотвод площадью не менее 120 см2. Резисторы R18, R24, R30 должны иметь мощность не менее 0,25-0,5 Вт, так как при протекании через них тока в 0,35 А, на них будет рассеиваться мощность в 0,122 Вт.

Перед первым включением необходимо подрегулировать ток через светодиоды. Для этого исключаем из схемы микроконтроллер, устанавливаем движки подстроечных резисторов в нижнее по схеме положение, включаем последовательно со светодиодом амперметр, и подаем питание на устройство. Вращая движок подстроечного резистора, устанавливаем ток через светодиод в пределах 0,34 – 0,35 А. Такую же процедуру проделываем для остальных светодиодов. После чего, отключаем питание и устанавливаем микроконтроллер.

В качестве корпуса я использовал матовый шарообразный рассеиватель диаметром 20 см. Купил его в магазине светотехники, вместе с основанием для крепления на стену. Рассеиватель весьма добротный, пластиковый, имеет равномерную матовость, и очень легкий. Из крепежного основания я извлек патрон, и установил туда светодиод с теплоотводом. Далее нашел корпус в виде усеченного конуса, установил в него плату и крепежное основание. После чего вкрутил рассеиватель, и вот лампа готова.

Печатная плата Светодиод с радиатором Плафон с корпусом Mood Lamp

У этой записи 10 комментариев

  1. а где же взять прошивку?

  2. Благодарю за оперативный ответ, будем пробовать

  3. здравствуйте
    как вы делали преобразование HSV в RGB?

    1. Здравствуйте, алгоритм преобразования HSV-RGB
      Алгоритм преобразования HSV-RGB

  4. Автору огромнейшее спасибо за интересную, толковую статью, да ещё с выложенным исходником! Не каждый захочет возиться с такой математикой (писать код), а тут – готовое решение! Взял из исходника автора подпрограмму преобразования hsv->RGB, остальное сделал сам на свой вкус… В общем, такая цветовая модель – изумительна. Мне как раз хотелось сделать такую лампу, чтобы при регулировке яркости не “уплывал” цвет – и тут в сети вижу такой подарок в виде данной статьи. Ещё раз огромное спасибо!

    1. Отлично, я рад что статья вам помогла!

  5. Здравствуйте!
    Хочу спросить – а не наблюдались ли в Вашей конструкции странные мерцания яркости? Провёл два эксперимента, на разных контроллерах, с немного разным кодом – и не могу от этого эффекта избавиться. Использую п/п rashet (что такое rashet255 – не понял). Если изменять только цвет (hueH, hueL), то всё в порядке. Стоит только начать изменять яркость (любым способом, хоть вручную, хоть автоматически, в цикле, и в любом месте, хоть в ОЦП, хоть в прерываниях) – начинаются мерцания, причём процесс хаотичный, явно не линейная закономерность. У Вас ничего подобного не наблюдалось?

    1. Приветствую, подпрограмма rashet255 используется при ручном изменении цвета, от переменного резистора. В HSV цвет меняется о 0 до 359, АЦП выдает только числа от 0 до 255, поэтому нужно дополнительно корректировать значения, для этого и нужна подпрограмма rashet255.

      Мерцания происходят во время изменения яркости, или постоянно мерцает? Я у себя мерцания не замечал, были небольшие мерцания при ручном изменении от переменного резистора, но только в процессе вращения переменного резистора.

      1. Насчёт rashet255 понял, спасибо. Хаотичные мерцания могут возникнуть при записи нового значения в переменную val (яркость), то же самое с насыщенностью. Не имеет значения, каков источник – или данные берутся от АЦП переменника (я их очень сильно усредняю, показания стабильные), или от программного изменения величины в цикле (последнее говорит сугубо о софтовом происхождении проблемы). Если, например, установить некоторые значения в val и sat, а hue менять энкодером, то мерцаний нет. Запускаю цикл изменения яркости – появляются. Запускаю отдельно в цикле изменение skvR (а потом G и В) – никаких мерцаний, т.е. обработчик прерываний работает чётко (у меня на него свой код). При этом п/п преобразования вызывается вхолостую, т.е. как замедляющий цикл))) Если бы оттуда улетало на случайные адреса, то мерцание бы не прекратилось. В прошлой инкарнации макета (на 690-м) смотрел лог. анализатором сигналы R, G, B – там что-то вроде прекращения импульсов по одной или двум линиям, в то время как другие цвета отрабатываются нормально. В общем, и тогда не понял, что это было, и сейчас – мистика какая-то…

Имя (обязательно)Email (обязательно)Веб-сайт

Добавить комментарий