Как стать автором
Обновить

RGB лампа

Время на прочтение4 мин
Количество просмотров41K
image

Размышляя над подарком девушке на 8 марта, вспомнился проект светодиодной RGB лампы, который и было решено реализовать. Тем более что все необходимое для этого имелось под рукой. Но что бы сделать подарок интересней я добавил управление с помощью оптического ик датчика, что сделало оригинальным обращение с лампой и к тому же не портило дизайн кнопками.





RGB светодиод – это в сущности 3 светодиода разного цвета в одном корпусе. В моем случае светодиод с общим анодом и с 3 катодами, по одному на каждый диод, хотя обозначения на диоде обратные.

Чтобы получить различные цвета свечения нашего светодиода, каждый диод необходимо включать с помощью ШИМ ‘а (широтно-импульсная модуляция), в ином случае светодиоды будут гореть на максимум, что в итоге даст нам белый цвет.

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

image

Оптический датчик – состоит из ик светодиода и ик приемника. Ик светодиод и приемник будет направлены вверх, при проведении рукой над датчиком, свет отразится от руки и будет принят приемником. Так как RGB светодиод обладает сильным паразитным ик излучением то необходимо защитить датчик от ложных срабатываний. Для решения этой задачи используется приемник TSOP1738. В нем предусмотрено срабатывание только на модулированный сигнал на несущей частоте 38кГц, но если импульсы модуляции будут идти постоянно более чем 1 секунду, то приемник их распознает как помехи и не будет на них реагировать. Экспериментальным путем выявлено что для того чтобы приемник не срезал сигнал, его надо прерывать каждые 100мс на 20 мс.

На светодиод должен идти примерно такой сигнал.
image

Микроконтроллер (мк) — это микросхема, предназначенная для управления электронными устройствами. Для осуществления управления необходимо написать программу и прошить её в мк с помощью программатора. В конечном варианте устройства я использовал мк ATMEGA8, а для первых экспериментов я взял ATMEGA32, так как для него у меня была отладочная плата, на которой можно было все быстро собрать.

image

В ATMEGA8 – предусмотрено 3 таймер/счетчика их суть в том, что они могу считать такты с выбранной частотой, которая зависит от частоты тактирования мк. По достижению определенного значение, возникает прерывает, по которому будет выполняться код прерывания.

Таймер/счетчик 0
Этот таймер 8 битный это означает, что он может считать до 255 тактов, после чего будет обнуляться. Этот таймер не обладает аппаратный ШИМ генератором, с его помощью программно будет организована модуляция для ик светодиода.

Таймер/счетчик 1
Таймер/счетчик 1 – 16 битный, он считает до 65 535 тактов. У него есть 2 аппаратных ШИМ генератора, которые и будут использоваться для управления 2-мя диодами из 3-х.

Таймер/счетчик 2
Также 8 битный и имеет 1 ШИМ генератор, который будет управлять 3-им диодо м.

В качестве программатора я использовал USB программатор USBAsp
Чтобы его собрать потребуется прошить один мк, так что есть более простые варианты, которые правда потребуют LPT или COM портов.


Программу я писал на C с помощью CodeVisionAVR и ImageCraft7. Прежде всего, надо настроить таймеры 1 и 2 в режим ШИМ на частоту 1кГц. Затем установить прерывание по таймеру 0, с достаточной частотой для обработки кода прерывания, в моем случае частота вызова прерывания составила 148кГц. Так же надо установить прерывание от внешнего источника, оно необходимо для реагирования на сигнал приемника.

По прерыванию от приемника для индикации срабатывания светодиод будет вспыхивать белым светом на 100мс, и добавлять 1 к переменной режима, в основном цикле в зависимости от переменной будет включаться определенный режим. Смена режимов реализована в цикле посредством изменения скважности с задержкой на каждой итерации.

Сборка


Прежде всего, принципиальная схема.
image

Питание осуществляется от блока питания, выходное напряжение 5 вольт, ток 1А.

Плату я развел в программе Sprint Layout 5
image

Плата делиться на основную и на плату оптического датчика. Это сделано для того чтобы датчик можно было удобно расположить, синяя линия на основной плате это перемычка, остальные синие и черная линии это провода.

Изготавливал методом лазерного утюга.
Замечу, что лучше использовать утюг с парогенератором, благодаря пару бумага легче отходит от платы.

Плата по центру в конечном устройстве использована не была.
image

Предварительная сборка.
image

Лампа
image

В сборе


Так как сам стакан оказался внутри практически зеркальным, пришлось изолировать приемник и ик светодиод с помощью наждачной бумаги и фольги, но изолировать придется в любом случае, иначе будет засветка. Радиатор обязателен к установке, диод будет сильно греться и без радиатора просто перегреться, кроме того в моей прошивке диод работает на 70% от максимальной мощности. В режиме белого света в течение часа температура поднялась до 53 градусов и более не росла, что вполне приемлемо.

Конечный результат


Для реализации замысла понадобилось следующее:

  • RGB светодиод, я взял мощностью 3 ватта.
  • Микроконтроллер ATMEGA 8 — под другие придется модифицировать прошивку.
  • Панельку под ATMEGA 8
  • ИК приемник – например TSOP1736
  • ИК светодиод, например FYL 3014ir
  • 3 транзистора BC337
  • Конденсатор 0,1 мкФ
  • Резисторы:
  • 10 Ом – 2 штуки
  • 3 Ома – 1 штука
  • 1 Ком – 1 штука
  • 10Ком – 1 штук
  • 330 Ом – 1 штука
  • 4,7Ком – 3 штуки
  • AVR программатор
  • Блок питания импульсный — выходное напряжение 5 вольт, ток 1А.
  • Собственно сама лампа
  • Провода, текстолит, радиатор, термопаста и т.д.


Некоторые определения были взяты из Википедии.

Исходник, прошивка и файл разводки.

Upd: Если хотите собрать лампу по данному посту то не забудьте глянуть исходники, фьюзы мк прошиты на 8 МГЦ. Так как мк тактируется от внутреннего резонатора, а его погрешность довольно высока и может составлять 10%, вероятнее всего понадобится настройка модуляции ик-светодида в строке TCNT0=0xCA; чтобы его частота совпадал с частотой приемника. Файл разводки в архиве для программы Sprint Layout 5.0.
Теги:
Хабы:
+110
Комментарии75

Публикации