Светодиоды

Ответить
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Светодиоды

Сообщение Oleg »

Управление светодиодными индикаторами (LED) - это задача, которая, вероятно, будет в самом начале списка дел у любого электронщика. Разнообразных светодиодов существует невероятное множество: от самых простых до высокомощных, от инфракрасных до ультрафиолетовых.

На рисунке показана подборка светодиодов с самыми разными требованиями к силе тока, причем некоторые вполне нормально работают от цифрового выхода, а для управления другими требуются транзисторы или целые электронные схемы.
Разнообразие светодиодов
Разнообразие светодиодов
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Обычные светодиоды

Сообщение Oleg »

Обычные светодиоды - это те самые разноцветные изделия диаметром 5 мм (реже - 10 мм или 3 мм), которые зажигаются от не очень сильного тока, поэтому ими можно управлять непосредственно с выхода Arduino или Raspberry Pi.

На рисунке показано, как такие светодиоды обычно подключают к цифровому выходу Arduino или Raspberry Pi Резистор здесь нужен для ограничения тока, проходящего через светодиод, и на то есть две причины: во-первых, чтобы не превышать максимальное значение силы тока, на которое рассчитан светодиод (в противном случае он прослужит недолго). и во-вторых, чтобы не превышать предельную величину выходного тока на отдельном контакте платы или суммарно на всех ее выходных контактах.
Подключение светодиода к цифровому выходу
Подключение светодиода к цифровому выходу
Подключение светодиода к цифровому выходу.jpg (12.45 КБ) 2921 просмотр
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Ограничение тока

Сообщение Oleg »

Когда светодиод подключен так, как показано на рисунке "Подключение светодиода к цифровому входу", то во всей цепи установится более или менее постоянное напряжение. Оно называется прямым напряжением светодиода. В зависимости от цвета светодиода прямое напряжение может быть различным: у красных светодиодов оно обычно минимальное, а у синих и белых наивысшее среди всех светодиодов, дающих видимый свет (таблица).

Существуют также инфракрасные (ИК) светодиоды, наподобие тех, что устанавливаются в телевизионных пультах, а также ультрафиолетовые (УФ) светодиоды, которые часто используют на вечеринках для придания фиолетового оттенка белым одеждам либо для проверки подлинности банкнот.

Кроме прямого напряжения у светодиода есть еще одна важная характеристика, которую нужно знать, - это прямой ток, который вы собираетесь через него пропускать. Большинство светодиодов хотя бы немного светятся от тока силой 1 МА или чуть менее, но, как правило, достигают оптимальной яркости при токе около 20 мА. Это достаточно широкий диапазон, поэтому из соображений безопасности используйте резистор на 470 Ом при работе с любым светодиодом, который подключаете к Arduino или Raspberry Pі, хотя светодиод и будет светить не столь ярко, как мог бы.

Для расчета сопротивления последовательного резистора удобно воспользоваться специальным веб-сервисом, который все за вас рассчитает. Подобный сервис находится по адресу led.linear1.org/lled.wiz, его окно показано на рисунке ниже.

Как можно видеть, за напряжение источника питания здесь принято 3,3 В (очевидно, расчет ведется для Raspberry Pi), а максимальная сила тока, допустимая для любого контакта Raspberry Pi, составляет 16 мА. Калькулятор сообщает, что при этих исходных данных для светодиода с прямым напряжением 2,2 В нужно использовать резистор сопротивлением 82 Ом.

Если вы хотите произвести такой расчет сами, то сначала вычтите значение прямого напряжения (2,2 В) светодиода из напряжения источника питания 3,3 В. Получится 1,1 В. Затем рассчитайте сопротивление резистора по закону Ома: R=V/1=1,1 B / 16 мА = 68,75 Ом.

При подборе резистора также можно воспользоваться данными таблицы. В ней указаны и примерные уровни прямого напряжения для светодиодов разного цвета.

Обратите внимание: значения сопротивления откорректированы и приближены к стандартным значениям таких резисторов, которые имеются в свободном доступе.
Онлайн-калькулятор для работы с последовательными резисторами
Онлайн-калькулятор для работы с последовательными резисторами
Резисторы, ограничивающие силу тока, для разных светодиодов
Резисторы, ограничивающие силу тока, для разных светодиодов
Примечание

В столбце ИК для устройства Рі (3,3 В; 3 мА) указан символ х. Дело в том, что инфракрасные светодиоды для пультов дистанционного управления обычно требуют для работы как минимум 10 мА, причем проектируются с расчетом на силу тока 100 мА или более, - только при таких значениях они получаются достаточно «дальнобойными».
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Светофор

Сообщение Oleg »

Имея такой отличный выбор разноцветных светодиодов, возьмем красный, желтый и зеленый излучатели и сделаем светофор, управляемый с Arduino или Raspberry Pi (рисунок ниже).

Светодиоды должны зажигаться в такой последовательности: 1. Красный.

2. Красный с желтым.

3. Зеленый.

4. Желтый.
Светофор на Arduino
Светофор на Arduino
Комплектующие

В этом проекте для работы с Arduino и Raspberry Pi понадобятся следующие комплектующие:

LED1 - Красный светодиод
LED2 - Желтый светодиод
LED3 - Зеленый светодиод
R1-3 - Резисторы на 150 Ом
400-точечная беспаечная макетная плата
Перемычки "папа-папа"
Перемычки "мама-папа" (только для Рі)

Со временем вы, возможно, начнете подбирать резисторы с самыми разными значениями, однако в этом проекте я предлагаю компромиссный вариант резисторы на 150 Ом и для Arduino, и для Raspberry Pi, причем для светодиодов всех трех цветов. Если вы захотите добиться максимальной яркости, то подберите к ним оптимальные резисторы.

Общая конструкция

Каждый из трех светодиодов подключен к отдельному выходному контакту на Arduino или Raspberry Pi.

Подключение к Arduino

На рисунке ниже показана компоновка макетной платы и подключение ее к Arduino.

Не забывайте, что длинные выводы светодиодов положительные. Светодиоды устанавливаются в макетную плату этими выводами влево, и концы их подключаются каждый к своему резистору. Более короткие выводы отрицательные, идут от каждого светодиода к ряду отрицательного питания, идущего по правому краю макетной платы.
Компоновка макетной платы для светофора под управлением Arduino
Компоновка макетной платы для светофора под управлением Arduino
Программа для Arduino

Рассмотрим скетч:

Код: Выделить всё

const int redPin = 11; // 1 
const int orangePin = 10;
const int greenPin = 9;

void setup() { // 2
pinMode (redPin, OUTPUT);
pinMode(orangePin, OUTPUT);
pinMode (greenPin, OUTPUT);
}

void loop() { // 3
set LEDs (1, 0, 0);
delay (3000);
setLEDs (1, 1, 0);
delay(500); 
setLEDs (0, 0, 1);
delay(5000);
setLEDs (0, 1, 0);
delay (500); 
}

void setLEDs (int red, int orange, int green) {// 4 
    digitalWrite(redPin, red);
    digitalWrite(orangePin, orange);
    digitalWrite(greenPin, green);
}
Этот скетч во многом похож на исходный скетч с мигалкой, за тем исключением, что здесь мы управляем не одним светодиодом, а сразу тремя. Рассмотрим его по пунктам, воспользовавшись разметкой строк, сделанной в комментариях:

1. Определяются константы для каждого из контактов Arduino, подключенных к светодиоду.
2. В функции setup() контакты устанавливаются на выход.
3. Функция loop() вызывает функцию setLEDS(), позволяющую включать или выключать три светодиода (задавать для них значения 1 или 0). Задержка перед каждым вызовом setLEDs() определяет, как долго светодиод пребывает в той или иной фазе.
4. Благодаря функции setLEDs() циклическая функция всего лишь укорачивается и становится более удобочитаемой, при этом мы можем уложить все три оператора digitalWrite() в одну строчку.
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Шим и светодиоды

Сообщение Oleg »

Попытка управления яркостью светодиода регулированием напряжения на нем обычно не приносит удовлетворительных результатов, поскольку в начале диапазона напряжений на светодиоде имеет место обширная мертвая зона, и лишь после ее преодоления напряжение достигает такой величины, которое позволяет светодиоду излучать хоть какой-то свет. Для управления яркостью светодиода лучше всего подходят аналоговые выходы с ШИМ (см. далее «Широтно-импульсная модуляция»). Светодиоды могут включаться и выключаться очень быстро гораздо быстрее, чем за миллионную долю секунды, при этом с использованием ШИМ светодиод и мерцает на частоте ШИМ, однако зрительно это воспринимается просто как изменение яркости, пропорциональное тому, как долго светодиод фактически остается во включенном состоянии.

ШИРОТНО-ИМПУЛЬСНАЯ МОДУЛЯЦИЯ

До сих пор мы управляли устройствами очень «по-цифровому» - т. е. включали, а за- тем выключали. Но что, если требуется организовать управление более "аналоговым" образом? Допустим, вы хотите управлять скоростью двигателя или яркостью светодиода. Для этого нужно научиться управлять мощностью, подаваемой на интересующее вас устройство.

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

На рисунке показано, как действует ШИМ. При этом предполагается, что напряжение на СРІО-контакте Raspberry Pi составляет 3,3 В. Вам также понадобится транзистор, подключенный к контакту GPIO, он нужен для подачи тока, достаточного для управления двигателем.

Отношение длительности импульса к периоду его следования называется коэффициентом заполнения. Если импульсы соответствуют включенному состоянию на протяжении лишь 5% всего времени цикла (коэффициент заполнения равен 5%), то на Двигатель будет поступать не слишком много энергии, и он станет вращаться очень медленно (либо светодиод будет светить тускло). Стоит повысить коэффициент заполнения до 50% - и двигатель или светодиод получат половину мощности, соответственно, скорость вращения или яркость составят примерно половину от максимума. Если коэффициент заполнения возрастет до 90%, то двигатель будет вращаться почти с полной скоростью, а светодиод - светить в полную силу.

Чтобы выключить двигатель или светодиод, достаточно лишь снизить коэффициент заполнения до 0, а для разгона на полную мощность - поднять его до 100%. Удержание контакта СРІO постоянно в состоянии high и обеспечит коэффициент заполнения 100%

Как Arduino, так и Raspberry Pi позволяют использовать на выходных контактах широтно-импульсную модуляцию. На Arduino Uno она может включаться только на контактах D3, D5, D6, D9, D10 и D11 - эти контакты на самой плате Arduinо помечены тильдой (~). Частота ШИМ на Arduino Uno для большинства контактов составляет 490 Гц (импульсов в секунду). Исключение представляют контакты 5 и 6, работающие с частотой 980 Гц.

Для управления яркостью светодиода или скоростью двигателя вполне достаточно частоты ШИМ 490 Гц, которая установлена в Arduino по умолчанию.
Широтно-импульсная модуляция
Широтно-импульсная модуляция
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
RGB-светодиоды

Сообщение Oleg »

RGB-светодиод - это единая сборка, в которой на самом деле находятся три светодиода: один синего, один красного, и один зеленого цвета. Используя ШИМ для управления яркостью каждого из этих светодиодов, можно придать RGB-светодиоду любой из трех цветов.

Хотя в RGB-светодиоде содержится три обычных двухвыводных светодиода, это не означает, что корпус светодиода должен иметь шесть выводов, по одному выводу от каждого светодиода можно соединить вместе, придав ему вид обычного вывода.

Если подключить друг к другу отрицательные выводы всех светодиодов, то получившийся вывод будет называться общим катодом, а если проделать то же самое с положительными выводами, получится общий анод.
Схема общего катода RGB-светодиода
Схема общего катода RGB-светодиода
Схема общего катода RGB-светодиода.jpg (9.92 КБ) 2916 просмотров
RGB-светодиод может излучать как направленный свет, так и рассеянный. Если светодиод направленный, то в сборке будут четко различаться красный, зеленый и синий светодиоды, и их цвета почти не станут смешиваться друг с другом. В рассеянных сборках цвета трех светодиодов смешиваются друг с другом гораздо лучше.

Далее мы будем работать с дисплеями, основанными на RGB-светодиодах, имеющих собственную управляющую микросхему, которая ограничивает поступление тока на красный, зеленый и синий светодиоды, и в то же время служит им последовательным интерфейсом передачи данных. Arduino или Raspberry Pi могут управлять через этот интерфейс множеством таких светодиодов, и для этого задей- ствуется всего один их выходной контакт.
Oleg
Сообщения: 186
Зарегистрирован: 12 июл 2023, 12:09
Смешивание цветов

Сообщение Oleg »

В этом эксперименте мы будем управлять цветом RGB-светодиода с Arduino и с Raspberry Pi. В той версии эксперимента, которая выполняется на Raspberry Pi для управления цветом мы воспользуемся графическим пользовательским интерфейсом с тремя ползунками. На рисунках показаны вариант эксперимента для Raspberry Pi и схема эксперимента.
Подключение макетной платы для смешивания цветов при помощи aspberry Pi
Подключение макетной платы для смешивания цветов при помощи aspberry Pi
Схема эксперимента с RGB-светодиодом
Схема эксперимента с RGB-светодиодом
Комплектующие

В этом эксперименте для работы с Arduino и Raspberry Pi понадобятся следующие комплектующие:

LED1 - RGB-светодиод
R1-3 - Резистор 470 Ом 0,25 Вт
400-точечная беспаечная макетная плата
Перемычки «папа-папа»
Перемычки мама-папа (только для Рі)


Напомню, что перемычки «мама-папа» понадобятся только для подключения к макетной плате контактов GPIO Raspberry Pi (если вы планируете провести этот эксперимент с Raspberry Pi тоже).

Достичь оптимальной яркости и наилучшего цветового баланса можно лишь при внимательном подборе резисторов соответствующих сопротивлений. Однако при обретать комплектующие проще, если на всех трех каналах использовать резисторы с одним и тем же значением. В нашем случае я рекомендую в качестве универсальных применить резисторы на 470 Ом - они будут работать и с Raspberry Pi, и с Arduino.

Кстати, яркость и эффективность RGB-светодиода таковы, что даже при токе силой всего 3 мА (на Arduino - 6 мА) светодиод будет сиять весьма ярко.

Подключение к Arduino

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

Программа для Arduino
В скетче организуются три ШИМ канала, при помощи которых осуществляется управление яркостью каждого из трех цветов.

Код: Выделить всё

const int redPin = 11;
const int greenPin = 10;
const int bluePin = 9;

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);  
  Serial.begin(9600);
  Serial.println("Enter R G B (E.g. 255 100 200)");
}

void loop() {
  if (Serial.available()) {
    int red = Serial.parseInt();   // (1)
    int green = Serial.parseInt();
    int blue = Serial.parseInt();
    analogWrite(redPin, red);     // (2)
    analogWrite(greenPin, green);
    analogWrite(bluePin, blue);
  }
}

Уточним некоторые моменты скетча по пунктам, воспользовавшись разметкой строк, сделанной в комментариях:
1. Каждое из трех значений ШИМ, которые должны находиться в диапазоне от 0 до 255, считывается в переменные.
2. Затем для каждого канала задается ШИМ-вывод.

Загружаем и выполняем программу

Загрузив скетч, откройте в Arduino IDE окно монитора порта. Затем введите три числа в диапазоне от 0 до 255 каждое, разделив их пробелами, и нажмите кнопку Отправить (Send) светодиод должен изменить цвет так, чтобы значения красного, зеленого и синего соответствовали тем числам, которые вы только что ввели.

Можно по отдельности проверить каждый из каналов, введя по отдельности 255 0 0 (красный), затем 0 255 0 (зеленый) и, наконец, 0 0 255 (синий).

Ответить