Как поменять цвет светодиода

Nighthorror » 24 дек 2006 02:37
Многоцветная RGB-светодиодная лента. Как управлять цветом с помощью RGB контроллера?









137-Управление светодиодным RGB-светильником (изменения параметров цвета) средствами микроконтроллера
В этой статье будут рассмотрены практические механизмы формирования и изменения параметров цвета светодиодного светильника, проблемы при этом возникающие и способы их решения. Все, что описано в статье – это мой опыт работы со светом при реализации проекта AAL.

![]()

R_shift = (R_base * Shift) / 256
G_shift = (G_base * Shift) / 256
B_shift = (B_base * Shift) / 256
R_shift = (R_base*(255 — Shift)) / 256 + Shift
G_shift = (G_base*(255 — Shift)) / 256 + Shift
B_shift = (B_base *(255 — Shift)) / 256 + Shift
RGB_average= ((R_base + B_base)/2 + G_base) / 2
R_shift = (R_base * Shift) / 256 + (RGB_average * (255 — Shift)) / 256
G_shift = (G_base * Shift) / 256 + (RGB_average * (255 — Shift)) / 256
B_shift = (B_base * Shift) / 256 + (RGB_average * (255 — Shift)) / 256
При Shift < 86:
Shift_a= Shift * 3
R_shift = (G_base * Shift_a) / 256 + (R_base * (255 — Shift_a)) / 256
G_shift = (B_base * Shift_a) / 256 + (G_base * (255 — Shift_a)) / 256
B_shift = (R_base * Shift_a) / 256 + (B_base * (255 — Shift_a)) / 256
При Shift > 85 and Shift < 171:
Shift_a= (Shift-85) * 3
R_shift = (B_base * Shift_a) / 256 + (G_base * (255 — Shift_a)) / 256
G_shift = (R_base * Shift_a) / 256 + (B_base * (255 — Shift_a)) / 256
B_shift = (G_base * Shift_a) / 256 + (R_base * (255 — Shift_a)) / 256
При Shift > 170:
Shift_a= (Shift-170) * 3
R_shift = (R_base * Shift_a) / 256 + (B_base * (255 — Shift_a)) / 256
G_shift = (G_base * Shift_a) / 256 + (R_base * (255 — Shift_a)) / 256
B_shift = (B_base * Shift_a) / 256 + (G_base * (255 — Shift_a)) / 256
R_shift = ((255 — R_base) * Shift) / 256 + (R_base * (255 — Shift)) / 256
G_shift = ((255 — G_base) * Shift) / 256 + (G_base * (255 — Shift)) / 256
B_shift = ((255 — B_base) * Shift) / 256 + (B_base * (255 — Shift)) / 256

R_PWM = (R_shift * R_shift) / 256
G_PWM = (G_shift * G_shift) / 256
B_PWM = (B_shift * B_shift) / 256
Медленно изменяющие цвет RGB светодиоды и их применение для диайвая 😉

Да-да, диайвая, сильно модное нынче слово в интернете. DIY или сделано руками по-нашему.
Жизнь на муське, я смотрю, даже в новый год не затихает, ну и я решил тоже поделиться своим рукоблудием.
Собственно, данные светодиоды я уже упоминал в своем обзоре гирлянд, но крайне удачно (как мне кажется) их применил, так что не грех написать и отдельный обзор.
Сами светодиоды, собственно, ничего сверъестественного из себя не представляют — обычные на вид узконаправленные 5мм светодиоды в прозрачном корпусе. Но внутри там на самом деле три светодиода и микросхема управления, которая плавно их переключает, таким образом изменяя цвет свечения «по всей радуге»


видео как они работают тут:
Собственно, на этом обзор светодиодов закончен 😉 и мы переходим к диайваю.
После покупки 3д принтера я начал интересоваться готовыми моделями для печати. Ну и несомненно первым же делом нашел сайт thingiverse.com. А на нем, в частности, дивный ночник "Magic Mushrooms — a lighted decoration". Ну и в преддверии нового года — решил напечатать пару штук на подарочки. Несомненно, данного обзора бы не было, если б я не допилил слегонца ту модель. Точнее, я напечатал несколько новых деталей и одну взамен использовавшейся — а именно заднюю крышку.
К сожалению, в оригинальной модели крышка сделана как-то по-дурацки и мало того что неудобно закрывается, так еще и плохо держится, более того, в неё и держатель для батареек толком не поставить. А чтобы она не болталась и не проваливалась — я напечатал пару пластиночек 5х10х1мм которые приклеил дихлорэтаном изнутри корпуса чтобы крышка не проворачивалась. Кроме того, так как светодиоды у меня узконаправленные — я напечатал для них из прозрачного пластика колпачки, которые рассеивают свет.
Данные светодиоды можно питать и от 2 и от 3 АА/ААА батареек. Я, собственно, проверил оба варианта — всё работает, но при 2В уже тяжко. Но я не думаю, что данные светильники будут так часто включаться и подолгу работать, что это станет проблемой.
При разработке крышки я ориентировался на купленные в оффлайне держатели для 3*ААА батареек, ну и пришедшие из Китая по ошибке переключатели

Ну и, собственно, приступаем к изготовлению ночника. Печатаем детали:



Пластинки уже вклеены в корпус, они видны в отверстии сверху и снизу. На них лежит крышка, они не дают ей провернуться на выступах которые вставлены в пазы. Крышка получилась забавная, «удивленный мальчик» называется 😉 Цвета немножко неправильные, там что-то коричнево-морковное, более коричневое чем на фото, хотелось бы, конечно, что-то еще более естественное, но и так вполне ничего. Впрочем, была шальная мысль напечатать шляпки из красного пластика 😉 А можно и из белого.
Колпачки для светодиодов: 
По печати: не спрашивайте у меня о настройках принтера, я еще зеленый совсем. 😉 А настройки там могут понадобиться, в частности при печати малых шляпок. Обычно рекомендуют экспериментировать с ретрактом. Но это не точно. Короче, если надумаете печатать — начинайте эксперименты именно с мелких шляпок, остальное без проблем. ножки без поддержек печатаются, пенёк — вверх ногами с поддержками. Крышку я печатал тоже с поддержками, но наверно можно попробовать и без. Теперь самое страшное: в малых шляпках я тонким паяльником тыкал в каждую дырочку, потому что там везде были «паутинки». Наверно нужно настраивать ретракт, а может и что-то еще, но времени уже не хватало.
Ножки грибов к пеньку клеим китайскими соплями термопистолетом (о правильном пистолете с клапаном я тоже писал), может потребоваться расточить отверстия и подобрать расположение, чтобы шляпки не сильно пересекались в пространстве. Предварительно можно фиксировать паяльником.
Далее паяем провода к светодиодам. Провода брать чем тоньше и мягче — тем лучше. Соблюдаем полярность, чтобы потом не путаться. Выводы светодиодов оставляем где-то 3-5мм, на один после пайки натягиваем термоусадку.

Для соединения всех проводов в кучу внутри пенька я использовал тонкую полоску 2-стороннего стеклотекстолита. на одну сторону припаиваем плюсы, на вторую минусы диодов, потом подключаем к батарее через выключатель. Выключатель, кстати, к крышке крепится путём расплавления штырьков.







На батарейки внимания не обращайте, для тестов воткнул что-то дешманское из фикспрайса.



Как видим, светодиоды не работают (да и не обязаны) работать строго синхронно, поэтому они через какое-то время рассинхронизируются, что идет только на пользу. Приятной особенностью является тот факт, что можно не заморачиваться качеством печати большинства деталей, потому что это только придает фактуру, которая тут весьма уместна. Теоретически можно добавить сенсорный выключатель, литиевый акум и зарядку от usb, но это уже каждый сам решает.
Лично я более чем доволен результатом. Рекомендую данные светодиоды для подобных поделок, ну и 3д принтер для подобных поделок 😉 У меня эндер 3, если что.
Светодиод плавно меняет цвет от красного до зеленого
В показанной на Рисунке 1 схеме, позволяющей формировать цвета 32-х оттенков, используются красный и зеленый светодиоды. Постоянный ток делится на две части. Одна течет через красный светодиод, другая – через зеленый. Ток красного светодиода можно изменять в пределах 100%, и соответственно, будет изменяться ток зеленого светодиода, как разность между суммарным током и током красного. Глаз будет воспринимать результирующий свет как смесь оттенков красного и зеленого. Грубо говоря, переход от красного к зеленому цвету будет происходить через оранжевый, янтарный и желтый.


| Кликните для увеличения |
| Рисунок 1. Путем кратковременного замыкания управляющих выводов (Pullup) или (Pulldown) на «землю», эта схема позволяет установить один из 32 оттенков между красным и зеленым цветами. |
| Надписи на схеме | |
| GREEN | ЗЕЛЕНЫЙ |
| RED | КРАСНЫЙ |
| BLUE | СИНИЙ |
| LOGIC CONTROL | ЛОГИЧЕСКИЕ СИГНАЛЫ УПРАВЛЕНИЯ |
Цифровой потенциометр AD5228 (IC3) фирмы Analog Devices имеет 32 положения и, соответственно, определяет разрешение всей схемы. Движок потенциометра можно перемещать вручную кратковременными замыканиями на «землю» управляющих выводов (Pullup) или (Pulldown). Цифровой потенциометр не имеет внутренней памяти, поэтому установку цвета нужно производить после каждого включения питания.
Если выводы и постоянно подключены к «лог. 0», движок непрерывно перемещается со скоростью порядка 0.25 с на шаг, и цвет свечения дискретно изменяется (Рисунок 2). Есть возможность задать начальное положение, в которое будет устанавливаться схема при включении питания. Если вывод PRE (Preset) подключить к напряжению высокого уровня, начальный цвет свечения будет на 100% красный. Если же подключить вывод PRE к «лог. 0», движок будет устанавливаться в среднее положение, а цвет свечения окажется желтым.
![]() |
| Рисунок 2. При постоянном подключении вывода к «земле» цвет свечения квазинепрерывно меняется от красного к зеленому за время равное, приблизительно, 8 с. |
В схеме использован высокоэффективный трехцветный светодиод ASMT-MT00 фирмы Avago Technologies (Рисунок 3). Синий светодиод не используется. Но, безусловно, вы имеете возможность подключить светодиоды прибора в любой, из оставшихся пяти комбинаций: красный/зеленый, красный/синий, синий/красный, зеленый/синий, или синий/зеленый.

Несмотря на то, что сумма токов, протекающих через красный и зеленый светодиоды не превышает одной четверти от номинального тока каждого светодиода, интенсивность светового излучения, все равно, высока, и вам не следует смотреть на зажженный светодиод IC1 с расстояния менее 30 см.
IC2, IC3 и IC4 образуют первичный источник двух комплементарных аналоговых напряжений (Ссылка 1). IC3 заменяет классический механический потенциометр. Комплементарные напряжения являются входными для двух каскадов усиления, каждый из которых сделан на маломощном транзисторе Q1 и транзисторе средней мощности Q2.
Усилительные каскады, в совокупности с операционными усилителями, выполняют функцию преобразователей напряжение-ток. Каждый каскад управляет своим светодиодом. Датчиками тока служат резисторы RE. Резисторы RB предназначены для устранения токов утечки составных транзисторов. В принципе, мощные каскады можно было бы сделать и на одном транзисторе. Составные использованы для того, чтобы повысить точность преобразования напряжение-ток. В однокаскадной схеме относительная ошибка равна, примерно, 1/β, а в двухкаскадной 1/(β1β2), где β1 и β2 – коэффициенты усиления транзисторов по току, для нашей схемы примерно 300 и 100, соответственно. Ошибку вызывает базовый ток транзистора Q1, который суммируется с выходным током на резисторе RE.
Этой схеме можно придумать множество применений, от развлечений и игрушек, до экспериментальной психологии и использующего оптоэлектронику современного искусства.
Соберите низкочастотный генератор на 0.05 Гц со скважностью 50%, и вы сможете получить медленные, плавные, квазинепрерывные переливы цветов от красного к зеленому и обратно.
RGB светодиод и Arduino

RGB светодиоды
RGB светодиоды — это светодиоды способные излучать свет разных цветов. С английского RGB (Red Green Blue) переводится как красный, зеленый и синий. То есть такой светодиод может светиться этими цветами как по отдельности, так и одновременно с разной интенсивностью. Фактически это три разных светодиода под одной линзой и с 1 общим контактом. Это дает возможность излучать свет практически любого цвета. Я уже рассказывал подробнее о том как работает обычный светодиод и как его подключить к Ардуино.
Расчет резисторов для RGB светодиода
Для того что бы светодиод работал и прослужил как можно дольше необходимо правильно подключить его. Для этого нам придется подавать на него «правильный» ток. А что бы понять какой ток нужно подавать нужно знать параметры именно вашего RGB светодиода. Я использую самые популярные 5 мм светодиоды, купленные на алиэкспрессе. По словам продавца эти светодиоды имеют падение напряжения 1.8-2 В на красном светодиоде и по 3-3.2 В на зеленом и синем, а так же требуют силу тока до 20 мА. Еще мы знаем, что подключать светодиод мы будем к Arduino Uno, на пинах которой напряжение составляет 5 В.
Я немного поэкспериментировал и заметил, что при силе тока 20 мА и 15 мА разницы в свечении светодиода не видно, а вот нагрев уже меньше. При таком режиме работы светодиод прослужит гораздо дольше и будет деградировать гораздо медленнее. Поэтому я буду ограничивать силу тока до 15 мА, а падение напряжения округлю до целых. Исходя из этих данных и будем рассчитывать наши токоограничивающие резисторы. О том что такое резисторы я уже рассказывал.
- Vps — напряжение источника питания (5 Вольт)
- Vdf — падение напряжения на светодиоде (2 Вольта для красного и 3 В для зеленого и синего)
- If — номинальный ток светодиода (15 миллиампер или 0.015 Ампера)
Теперь подставим наши данные в формулу закона Ома для расчета сопротивления. Если кто забыл то напомню: R = U / I (сопротивление равно напряжению деленному на силу тока). Подставляем наши данные:
R = (Vps — Vdf) / If = (5В — 2В) / 0.015А = 200 Ом (для красного цвета)
R = (Vps — Vdf) / If = (5В — 3В) / 0.015А = 133 Ом (для зеленого и синего цветов)
Надо сказать, что данные цифры достаточно примерные и можно использовать резисторы близкие по номиналу. Например у меня есть резисторы на 220 Ом и на 147 Ом. Их я и буду использовать. Подключение будет выглядеть примерно так:
Резисторы для RGB светодиода
Подключение RGB светодиода к Arduino
С резисторами определились, теперь подключим это все к нашей Arduino Uno. Мы можем регулировать яркость каждого светодиода для получения широкой палитры цвета при смешении красного, зеленого и синего в разных пропорциях. У меня светодиод с общим катодом, значит я могу подключить аноды к разным пинам ардуинки с поддержкой ШИМ. Для этого я использую пины 3 (синий), 5 (зеленый) и 6 (красный), а также пин GND для катода. Вот схема:
Arduino Uno RGB LED
Управление RGB светодиодом на ардуино
Теперь перейдем к написанию прошивки для управления нашим RGB светодиодом. Отдельно расписывать что происходит в коде я не буду, так как код достаточно простой. Постараюсь добавить объясняющие код комментарии, но если вам что то будет не понятно вы можете воспользоваться справочником по языку программирования Ардуино.
Для того что бы лучше различать оттенки цветов нужно использовать какой-то рассеиватель. Это может быть полупрозрачный пластик или просто лист бумаги. Еще лучше использовать матовые светодиоды. Также вы можете аккуратно наждачной бумагой или напильником сделать прозрачный светодиод матовым. О рассеивании света можете почитать на википедии (англ).
Надеюсь у вас все получилось и вы разобрались как работает RGB светодиод и как управлять им с помощью ардуино. В качестве самостоятельной работы можете попробовать написать функцию так что бы цвет менялся плано.
Железо

Это расширенный стартовый набор. В комплект входит Arduino Mega R3, макетные платы, множество датчиков, управляемые механизмы и необходимые радиоэлектронные компоненты. Полный список.

Arduino Uno — плата на базе микроконтроллера ATmega328P с частотой 16 МГц. На плате есть все необходимое для удобной и быстрой работы.
