Изменение цвета свечения ленты (rgb светодиодная лента)
Изменение цвета свечения светодиодной ленты может происходить только с помощью контроллера, который выдает на соответствующие дорожки многоцветной светодиодной ленты сигналы определённой величины напряжения.
RGB светодиодная лента — это многоцветная лента, в каждом диоде которой находится три разных по цвету. R- красный, G- зеленый, B- синий. Набором этих трех цветов можно организовать почти любой оттенок любого цвета. Если Вам нужно менять цвет свечения ленты для освещения, скажем, кафе, то необходимо купить многоцветную RGB светодиодную ленту и все сопутствующее оборудование (блок питания и контроллер).
Также изменение цвета может производить управляемая лента, которая помимо изменения цвета, может создавать эффект бегущей волны. Обычная RGB лента изменяет цвет по всей длине и управление цветом и яркостью таких лент производится исключительно путем изменения мощности выходного сигнала с управляющего устройства (контроллера). Управление же программируемой (управляемо) ленты производится по отдельной шине последовательно или параллельно от чипа к чипу. Поэтому если нужно просто поменять цвет или яркость, то прибегать к использованию программируемых светодиодных лент не стоит, так как это более затратно финансово и занимает больше времени в плане настройки нужного режима.
На картинках выше можно увидеть, что установленная в нишу потолка RGB светодиодная лента меняет цвет: красный, синий, зеленый.
Изменение яркости или цвета свечения ленты производится с помощью контроллера. Как это сделать и какие контроллеры для RGB светодиодной ленты бывают можно найти в отдельной статье.
Источник
Как изменить цвет светодиода
Всем доброго времени суток! Уверен, что многие, у кого есть авто, задумывались о смене подсветки приборной панели. Но, одно дело, когда у тебя стоит обычная подсветка на лампах накаливания, другое — изначально стоит светодиодная подсветка. Эта запись посвящена вопросу о грамотной замене заводской светодиодной подсветки на светодиодную подсветку нужного нам цвета.
Светодиоды применяемые в подсветке приборных панелей — smd, то есть компоненты поверхностного монтажа. Это значит, что размеры данных элементов весьма малы и процесс замены требует внимательности, аккуратности, терпеливости.
Технология замены светодиодов не сложна: снимаем приборную панель с машины. Разбираем, фиксируем (отмечаем) положение стрелок ( это работает на большинстве машин, но на некоторых приборы могут калиброваться компьютером и тогда нужно запомнить значения стрелок пометкой, что бы после включения зажигания установить стрелки ).
Далее:
— снимаем стрелки оч.аккуратно;
— снимаем шкалы;
— отмечаем отрицательные контактные площадки у светодиодов на плате (на корпусах светодиодов отмечены срезанным углом, ставим точки маркером);
— выпаиваем светодоиды, поочередно отпаивая сначала одну контактную площадку, затем вторую;
— проверяем тестером новые светодиоды, тестер в режиме прозвонки ( в таком режиме светодиоды чуть светятся);
— залуживаем контактные площадки новых светодиодов, помним о сильной боязни светодиодов к перегреву, время воздействия температуры не более 1 сек;
— припаиваем новые светодиоды на плату;
— проверяем мультиметром (тестером) каждый впаянный светодиод на предмет перегрева ( при перегреве не светится, не проводит ток);
— проверяем на машине плату.
Если не работает один из светодиодов, но весь ряд горит, значит вы перегрели светодиод.
Если не горит ряд то:
1. не правильно впаяли светодиод (полярность);
2. не пропаяли соединение;
3. светодиод перегрет при пайке.
Для залуживания smd светодиодов лучше применять жидкую канифоль. Выливаем пару капель на листок пластика, берем тонкий пинцет и макаем светодиоды в канифоль, паяльником наносим припой.
Все необходимые компоненты Вы найдете в любом радиомагазине. Для подсветки шкал используются квадратные smd светодиоды (как в светодиодных лентах).
Если комбинация приборов оснащена жк экраном, то:
А) если экран имеет выводы с двух сторон, то одну придется распаять (либо аккуратно качественными кусачками перекусить все ножки и при сборке спаять);
Б). если экран имеет выводы с одной стороны, то отгибаем экран.
Подсветка под такими жк экранами не отличается от подсветки шкал (светодиоды).
Если в комбинации приборов есть отдельные вставки с жк экранами, то скорее всего в таких жк матрицах используют smd светодиоды бокового свечения. Это очень маленькие светодиоды, такие же используют в подсветках жк экранов в мобильных телефонах. Пайка труднее, так как трудно держать. Но, при желании — все делается.
Самый важный совет: берите светодиоды с запасом, так как несколько Вы все-равно убьете. Это будут учебные светодиоды)))
Всем доброго времени суток! Уверен, что многие, у кого есть авто, задумывались о смене подсветки приборной панели. Но, одно дело, когда у тебя стоит обычная подсветка на лампах накаливания, другое — изначально стоит светодиодная подсветка. Эта запись посвящена вопросу о грамотной замене заводской светодиодной подсветки на светодиодную подсветку нужного нам цвета.
Светодиоды применяемые в подсветке приборных панелей — smd, то есть компоненты поверхностного монтажа. Это значит, что размеры данных элементов весьма малы и процесс замены требует внимательности, аккуратности, терпеливости.
Технология замены светодиодов не сложна: снимаем приборную панель с машины. Разбираем, фиксируем (отмечаем) положение стрелок ( это работает на большинстве машин, но на некоторых приборы могут калиброваться компьютером и тогда нужно запомнить значения стрелок пометкой, что бы после включения зажигания установить стрелки ).
Далее:
— снимаем стрелки оч.аккуратно;
— снимаем шкалы;
— отмечаем отрицательные контактные площадки у светодиодов на плате (на корпусах светодиодов отмечены срезанным углом, ставим точки маркером);
— выпаиваем светодоиды, поочередно отпаивая сначала одну контактную площадку, затем вторую;
— проверяем тестером новые светодиоды, тестер в режиме прозвонки ( в таком режиме светодиоды чуть светятся);
— залуживаем контактные площадки новых светодиодов, помним о сильной боязни светодиодов к перегреву, время воздействия температуры не более 1 сек;
— припаиваем новые светодиоды на плату;
— проверяем мультиметром (тестером) каждый впаянный светодиод на предмет перегрева ( при перегреве не светится, не проводит ток);
— проверяем на машине плату.
Если не работает один из светодиодов, но весь ряд горит, значит вы перегрели светодиод.
Если не горит ряд то:
1. не правильно впаяли светодиод (полярность);
2. не пропаяли соединение;
3. светодиод перегрет при пайке.
Для залуживания smd светодиодов лучше применять жидкую канифоль. Выливаем пару капель на листок пластика, берем тонкий пинцет и макаем светодиоды в канифоль, паяльником наносим припой.
Все необходимые компоненты Вы найдете в любом радиомагазине. Для подсветки шкал используются квадратные smd светодиоды (как в светодиодных лентах).
Если комбинация приборов оснащена жк экраном, то:
А) если экран имеет выводы с двух сторон, то одну придется распаять (либо аккуратно качественными кусачками перекусить все ножки и при сборке спаять);
Б). если экран имеет выводы с одной стороны, то отгибаем экран.
Подсветка под такими жк экранами не отличается от подсветки шкал (светодиоды).
Если в комбинации приборов есть отдельные вставки с жк экранами, то скорее всего в таких жк матрицах используют smd светодиоды бокового свечения. Это очень маленькие светодиоды, такие же используют в подсветках жк экранов в мобильных телефонах. Пайка труднее, так как трудно держать. Но, при желании — все делается.
Самый важный совет: берите светодиоды с запасом, так как несколько Вы все-равно убьете. Это будут учебные светодиоды)))
В этой статье будут рассмотрены практические механизмы формирования и изменения параметров цвета светодиодного светильника, проблемы при этом возникающие и способы их решения. Все, что описано в статье – это мой опыт работы со светом при реализации проекта AAL.
Как формируется цвет при помощи светодиодов.
Начнем с самого начала — определимся, как формируется цвет, вообще, в жизни (все знают, но на всякий случай …). Любой оттенок цвета формируется при помощи трех основных цветов. В нашем случае, когда цвет формируют источники света (аддитивный синтез) – это:
— R red красный
— G green зеленый
— B blue синий
Комбинируя всего три основных цвета в разных пропорциях можно получить любой оттенок цвета. Следующую картинку, наверное, видел каждый – она и передает суть вышесказанного
Соответственно, для того чтобы светильник смог сформировать любой оттенок цвета, он тоже должен иметь, как минимум, три источника основных цветов. На практике так и есть. Например, любой RGB-светодиод – это, по факту, три отдельных светодиода (излучающих кристалла) в одном корпусе.
Для управления RGB-светодиодом микроконтроллер должен отдельно управлять каждым из трех основных цветов и иметь три отдельных выхода для каждого цвета.
Управляя светодиодами при помощи цифрового сигнала (включен/отключен) можно получить всего 7 цветов:
— три основных цвета (когда засвечен только один основной цвет)
— три составных цвета (когда засвечено по два основных цвета)
— белый цвет (засвечены все три основных цвета)
Для того чтобы получить множество цветовых оттенков, нужно управлять интенсивностью свечения каждого из основных цветов. Для управления интенсивностью свечения применяется широтно-импульсная модуляции цифрового сигнала (ШИМ или PWM). Изменяя скважность сигнала, для глаза создается иллюзия изменения яркости свечения светодиода. Чтобы глаз не замечал переключений светодиода, частота ШИМ-сигнала должна быть не менее 50-60Гц.
Так как в светильнике три источника излучения, соответственно, светильником нужно управлять тремя ШИМ-сигналами R, G, B. Каждый уровень ШИМ (и яркость светильника) – это определенное значение скважности сигнала.
Чаще всего значение скважности задается числом размером в байт – 8 бит (и мы будет использовать байт). Это 256 градаций каждого из основных цветов и 256*256*256=16777213 оттенков цветов вообще. На самом деле — это не совсем так – ниже я расскажу почему.
Из вышесказанного приходим к тому, что МК должен для светодиодного светильника формировать три ШИМ-сигнала частотой выше 60 Гц и с разрешающей способностью 256 значений (8 бит).
Применяя микроконтроллеры AVR (как, впрочем, и любые другие) – это не является проблемой, так как в большинстве из них есть достаточное количество аппаратных 8-ми битных ШИМ формирователей (таймеров), которые минимально расходуя ресурсы МК могут обеспечить любую частоту формирования ШИМ, вплоть до десятков килогерц. В случае применения программных формирователей ШИМ – количество таких формирователей можно увеличить до количества свободных ножек у МК (частота формирования ШИМ, в этом случае, возможна до нескольких килогерц).
Параметры регулирования LED-светильника.
Определимся с параметрами цвета, которые нам-бы хотелось изменять. Раз мы имеем три значения скважности для основных цветов R, G, B, логично было-бы регулировать именно эти три параметра — то есть интенсивности красной, зеленой и синей составляющей цвета. На практике — это не очень правильный подход, так как не позволяет комфортно выбрать цвет нашего светильника. Например, для того чтобы сделать яркость светильника меньше оставив цвет свечения прежним. Нужно провернуть сразу три регулятора, еще и на разный угол. Фактически, каждое изменение (подстройка) нашего светильника будет выглядеть как настройка его с нуля. Гораздо естественней регулировать яркость (или какой либо другой параметр) одним регулятором.
Вообще, существует множество систем регулирования (выбора цвета) для различных применений
Система RGB — это одна из них, с тремя регуляторами для каждого из основных цветов, как описано выше.
Системы XYZ, LAB и другие, нам не очень подходят.
Наиболее естественно изменяет (задает) параметры освещения — система HSB (и подобные ей HSL, HSV). В HSB палитра цветов формируется путем установки различных значений базовых параметров:
— Hue (оттенок цвета). Задается в градусах от 0 до 360. 0 – красный цвет. 120 – зеленый, 240 – синий. Все что между ними – смешение основных цветов.
Мы будем использовать значение Hue размером в байт (от 0 до 255).
0 – красный цвет. 85 – зеленый, 170 – синий.
— Saturation (насыщенность). Задается в процентах от 0 до 100. 100 – это максимальная насыщенность цвета. При уменьшении к нулю – это потеря цвета вплоть до серого.
Мы будем использовать значение Saturation размером в байт (от 0 до 255).
— Brightness (яркость). Задается в процентах от 0 до 100. 100 – это максимальная яркость цвета (но не белый цвет!). При уменьшении к нулю – это потеря яркости вплоть до черного.
Мы будем использовать значение Brightness размером в байт (от 0 до 255).
Если использовать эту систему при регулировке цвета, то получается все очень удобно. Крутим один регулятор – меняем цветовой тон (оставаясь в той-же яркости), крутим другой – меняем яркость (не меняя цвета) – здорово! Но есть у системы и недостатки. Первый — храня значения в переменных размером в байт, мы теряем часть информации о цвете (например, для хранения всех возможных вариантов для цветового тона нужно 768 значений, а мы все это пытаемся уложить в 256 значений). Второй – все равно, в итоге, конечное значение должно быть в системе RGB для вывода ШИМ-сигналов на светодиоды. И третий – в случае, когда нужно будет еще какое либо преобразование – это будет гораздо сложнее сделать с системой HSB, чем с RGB.
В устройстве AAL я решил реализовать различные преобразования следующим образом:
1 Информация о цвете хранится в трех байтах R_base, G_base, B_base (система RGB). Я назвал это значение базовым. Оно хранит информацию о цвете без потерь.
2 Для преобразований используется значение величины преобразования (сдвига) Shift размером в байт.
3 Нужное преобразование осуществляется в соответствующих процедурах, исходными данными для которых служат базовое значение цвета R_base, R_base, R_base и величина соответствующего преобразования Shift. На выходе мы получаем три значения в системе RGB (R_shift, G_shift, B_shift), которые выдаются на светодиоды в виде ШИМ-сигналов.
При такой схеме, нам удобно управлять различными параметрами света и мы сохраняем максимально точно информацию о начальном (базовом) цвете.
Реализация преобразований цвета в микроконтроллере.
Проблема реализации управления цветом в микроконтроллере заключается в том, что для подавляющего большинства преобразований требуется умножение байта на дробный коэффициент преобразования (число от 0 до 1).
Например, уменьшение яркости вдвое:
R_shift = R_base * 0,5
G_shift = G_base * 0,5
B_shift = B_base * 0,5
С целочисленным умножением в AVR-микроконтроллерах все прекрасно (8-ми битное умножение осуществляется одним оператором всего за 2 такта — до 10 миллионов умножений в секунду!), а вот если мы перейдем в систему чисел с плавающей запятой – это будет на пару порядков медленнее и очень громоздко. В случаях, где нужны будут быстрые пересчеты большого количества значений, микроконтроллер просто не будет успевать.
Еще хуже дело с делением (это как вариант уйти от дробного умножения) — аппаратного его просто нет. Программная реализация деления тоже довольно громоздка.
В идеале, все преобразования цвета желательно реализовать при помощи целочисленного умножения, сдвигов бит, сложения и вычитания. Деление вообще не желательно применять.
Вот этим мы сейчас и займемся!
Проблема умножения на дробный коэффициент решается очень просто! Если в качестве коэффициента использовать значение размером в байт (0 – 255), принимая максимальное значения байта (255) за единицу, то можно обойтись только целочисленным умножением.
Теперь, предыдущий пример будет выглядеть следующим образом:
R_shift = (R_base * 128) / 255
G_shift = (G_base * 128) / 255
B_shift = (B_base * 128) / 255
После умножения двух 8-ми битных значений (R_base*128) мы получаем 16-ти битный результат (два байта). Откидывая младший байт и используя только старший — мы осуществляем деление значения на 256.
Деля на 256, вместо положенных 255, мы вносим в результат небольшую погрешность. В нашем случае, когда результат используется для формирования яркости посредством ШИМ, погрешностью можно пренебречь, так как она не будет заметна для глаз.
В ассемблере реализация такого способа умножения на коэффициент элементарна и трудностей не вызовет (всего пара операторов). В языках высокого уровня, нужно позаботиться о том, чтобы компилятор не стал создавать избыточный код.
Дальше, в самих преобразованиях, а покажу остальные альтернативные решения.
Переходим к самим преобразованиям.
Напомню, в любом преобразовании участвуют:
— базовый цвет, заданный тремя переменными R_base, G_base, B_base (размер Byte)
— коэффициент преобразования Shift (размер Byte)
Результат:
— «сдвинутый» цвет, в виде трех значений R_shift, G_shift, B_shift (размер Byte)
Записи формул ниже могут показаться странными, но я их прописывал таким образом, чтобы, во-первых, было видно последовательность действий, во-вторых, максимально упростить действия, сводя все к 8-битному умножению, сложению, вычитанию и сдвигу бит.
Яркость (Brightness)
— самое простое преобразование.
При:
Shift=0 светодиод погашен
Shift=255 светодиод горит базовым цветом.
Все промежуточные значения Shift – это затемнение базового цвета.
R_shift = (R_base * Shift) / 256
G_shift = (G_base * Shift) / 256
B_shift = (B_base * Shift) / 256
* напоминаю, деление на 256 — это просто откидывание младшего байта результата целочисленного умножения 2-х байт.
Осветление (Tint)
— эта величина не входит в систему HSB, но ее удобно использовать в регулировках. Tint – это, своего рода продолжение регулировки яркости в белый цвет.
При:
Shift=0 – светодиод горит базовым цветом
Shift=255 – светодиод горит белым цветом
Все промежуточные значения Shift – это осветление базового цвета.
R_shift = (R_base*(255 — Shift)) / 256 + Shift
G_shift = (G_base*(255 — Shift)) / 256 + Shift
B_shift = (B_base *(255 — Shift)) / 256 + Shift
* коэффициент (255 — Shift) можно реализовать одним оператором – битовой инверсией (конечно, при условии, что Shift — это Byte|Char)
Светимость (Lightness)
— эта величина тоже не входит в систему HSB. Регулировка осуществляется от выключенного светодиода, через базовый цвет и к белому цвету.
При:
Shift=0 – светодиод погашен
Shift=128 – светодиод горит базовым цветом
Shift =255 – светодиод горит белым цветом.
Реализуется посредством двух предыдущих преобразований.
При Shift =128 применяем Tint c Shift(for Tint) = (Shift-128)*2
Насыщенность (Saturation)
— цветность — переход от серого к цветному
При:
Shift=0 – светодиод горит белым цветом с яркостью, равной среднему значению базового цвета
Shift=255 – светодиод горит базовым цветом
Все промежуточные значения Shift – это «потеря» цвета.
RGB_average= ((R_base + B_base)/2 + G_base) / 2
* правильней, конечно, так (R_base + G_base + B_base)/3, но придется делить на 3, а это сдвигом не сделаешь
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
Изменение тона (Hue)
Круговое изменение оттенка цвета.
Сложное преобразование, которое отличается в каждой из трех зон значений Shift
К примеру, если базовый цвет красный, то при:
Shift=0 – светодиод светится красным
Shift=85 – светодиод светится зеленым
Shift=170 – светодиод светится синим
Shift=255 – светодиод снова светится красным
Все промежуточные значения Shift – это плавные переходы между цветами.
При Shift 85 and 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
Инверсия (Inversion)
— представляет собой переход от одного цвета к его инверсному варианту. Например, инверсный цвет для красного – это голубой.
Shift=0 – светодиод светится базовым цветом
Shift=128 – светодиод горит белым (серым) цветом – средняя точка инверсии
Shift=255 – светодиод светится цветом инверсным базовому
Все промежуточные значения Shift – это плавные переходы между цветами.
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
Пока это все параметры, которые я надумал регулировать. Если придумаю еще чего интересно, то добавлю сюда позже.
Осталась еще одна проблема, которую хотелось бы затронуть в разрезе этой статьи –
Нелинейность восприятия ШИМ человеческим глазом
Оказывается, что человеческий глаз воспринимает яркость свечения светодиода нелинейно. Эта проблема давно известна и с разной степенью успешности ее решают производители разного оборудования. Есть исследования и экспериментальные формулы. Вот, например, график зависимости из этого документа.
Из графика видно, что в начальных областях регулирования, яркость нам кажется в три раза больше чем измеренная прибором.
То есть, если этот фактор не учитывать, то крутя условную ручку регулятора, мы все изменения получим за первую половину оборота, а вторая половина фактически не будет заметно изменять текущего состояния.
Именно из-за эффекта нелинейности я выше писал о том, что, по факту, 3х-байтный (24битный) цвет совсем не дает те 16 миллионов оттенков, как любят писать многие производители. Полноценных оттенков, в лучшем случае, будет на порядок меньше.
Как решить проблему нелинейность восприятия ШИМ человеческим глазом?
В идеале, нужно использовать одну из экспериментально выведенных формул, но, часто, они слишком сложные для вычисления в микроконтроллере.
Еще, можно создать таблицу значений для пересчета ШИМ (уменьшив время вычислений, но пожертвовав частью памяти МК).
В нашем случае, когда нет необходимости в большой точности передачи нюансов яркости, можно применить упрощенную формулу, так называемой, мощности излучения:
R_PWM = (R_shift * R_shift) / 256
G_PWM = (G_shift * G_shift) / 256
B_PWM = (B_shift * B_shift) / 256
* умножаем значение само на себя и откидываем младший байт результата.
Вот это, наверное, и все, о чем я Вам хотел рассказать по LED цвету. Все преобразования, описанные в статье, реализованы мною в устройстве AAL. Кроме того, я сделаю отдельный модуль Color в AB-шаблонах. Демонстрацию алгоритмов на RGB-светодиоде и WS2812-пикселе можно посмотреть здесь.
137-Управление светодиодным RGB-светильником (изменения параметров цвета) средствами микроконтроллера : 5 комментариев
Спасибо. очень познавательно и толково расписано. Я уже несколько лет мучаюсь как удобнее и проще управлять светом. Теперь я удовлетворен ))).
Сам раньше мучался с цветом, пока один раз не сел и не разобрался что к чему.
Прекрасная статья. Спасибо!
Отлично! Все разжевано на уровне математики просто идеально) Огромное спасибо за статью!
Очень жду статью про то самое «несложное устройство», анонсированное в конце статьи
Если принимаются пожелания по функционалу, хотелось бы увидеть что-то вроде устройства из статьи про RGB контроллер на attiny2313, но дополненное энкодером для автономного управления без пульта, и отдельным четвертым каналом под ленту белого цвета
Как будет готова основа AAL, можно будет на этой базе делать различные модификации.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Источник