137-управление светодиодным rgb-светильником (изменения параметров цвета) средствами микроконтроллера

Настройка программы Arduino IDE

После того как все детали соединены мы готовы снова вернуться к нашей Arduino IDE и создать блок кода для управления платой. Такой блок кода называют скетчем. Но для начала мы должны немного настроить нашу программу.

Сначала выбираем правильную плату с которой будем работать. Переходим в нужное меню и выбираем из списка нашу плату:

Tools → Board → Arduino Nano

Дальше мы обязательно должны выбрать на каком чипе сделана наша плата, т.к. Arduino Nano может идти в двух вариантах – с чипом ATmega168 и ATmega 328 (в нашем случае).

Tools → Processor → ATmega328

После мы убеждаемся, что правильно выбран серийный порт (Serial Port).

Tools → Port → COM8

И последнее – проверяем наш программер:

Что такое RGB-светодиод

Обычные светоизлучающие полупроводниковые приборы имеют один p-n переход в одном корпусе, либо представляют собой матрицу из нескольких одинаковых переходов (COB-технология). Это позволяет в каждый момент времени получить один цвет свечения – непосредственно от рекомбинации основных носителей или от вторичного свечения люминофора. Вторая технология дала разработчикам широкие возможности в выборе цвета свечения, но менять окраску излучения в процессе эксплуатации прибор не может.

RGB светодиод содержит в одном корпусе три p-n перехода с разным цветом свечения:

  • красным (Red);
  • зеленым (Green);
  • синим (Blue).

Аббревиатура из английских названий каждого цвета и дала название этому типу LED.

Срок службы

Период эксплуатации прибора из трех кристаллов определяется временем наработки на отказ самого недолговечного элемента. В данном случае он у всех трех p-n переходов примерно одинаковый. Производители заявляют срок службы RGB-элементов на уровне 25 000-30 000 часов

Но к этой цифре надо относиться осторожно. Заявленное время жизни эквивалентно непрерывной работе в течение 3-4 лет

Вряд ли кто-то из производителей проводил ресурсные испытания (да еще в различных тепловых и электрических режимах) в течение столь долгого периода. За это время появляются новые технологии, испытания надо начинать заново – и так до бесконечности. Гораздо более информативен гарантийный срок эксплуатации. А он составляет 10 000-15 000 часов. Все, что дальше – в лучшем случае математическое моделирование, в худшем – голый маркетинг. Проблема в том, что на распространенные недорогие светодиоды сведения о гарантии производителя, как правило, отсутствуют. Но ориентироваться можно на 10 000-15 000 часов и держать в голове еще приблизительно столько же. А дальше уповать только на везение. И еще один момент – период службы очень сильно зависит от теплового режима во время эксплуатации. Поэтому один и тот же элемент в разных условиях прослужит разное время. Для продления срока жизни LED надо внимательно относиться к проблеме отведения тепла, не пренебрегать радиаторами и создавать условия для естественной циркуляции воздуха, а в некоторых случаях прибегать и к принудительной вентиляции.

Но даже уменьшенные сроки — это несколько лет эксплуатации (ведь LED не будет работать без пауз). Поэтому появление трехцветных светодиодов позволяет дизайнерам широко применять полупроводниковые приборы в их задумках, а инженерам – эти идеи реализовывать «в железе».

Подключение мигающих и многоцветных светодиодов

Внешне мигающие светодиоды ничем не отличаются от обычных аналогов и могут мигать одним, двумя или тремя цветами по заданному производителем алгоритму. Внутреннее отличие состоит в наличии под корпусом ещё одной подложки, на которой расположен интегральный генератор импульсов. Номинальный рабочий ток, как правило, не превышает 20 мА, а падение напряжения может варьироваться от 3 до 14 В. Поэтому перед подключением мигающего светодиода нужно ознакомиться с его характеристиками. Если их нет, то узнать параметры можно экспериментальным путём, подключившись к регулируемому БП на 5–15 В через резистор сопротивлением 51-100 Ом.

https://youtube.com/watch?v=Xkzw3sMrYPk

В корпусе многоцветного RGB-светодиода расположены 3 независимых кристалла зелёного, красного и синего цвета. Поэтому при расчёте номиналов резисторов нужно помнить, что каждому цвету свечения соответствует своё падение напряжения.

Соединяем все детали

На данном этапе у нас:

  • куплены все детали;
  • установлены все нужные программы (Arduino IDE и Fritzing при необходимости);
  • нарисована схема устройства.

Теперь мы начинаем собирать всё вместе. Не забываем заранее подготовить все провода-перемычки и все детали. Внимательно следуйте инструкциям и не спешите, чтобы убедиться, что все соединения выполнены правильно.

Обратите внимание, что зеленый провод подключен к земле. Красный контакт подключен к контакту 13.

Если вы еще не вставили Arduino Nano к макетке — самое время это сделать:

Вставляем перемычки:

Теперь подключаем наше сопротивление:

И наконец вставляем светодиод:

И последнее на данном шаге — вставляем наш USB-кабель, который при покупке часто идет в комплекте с микроконтроллером:

Управление светодиодами

Управление светодиодами на ардуино позволяет реализовать самые разнообразные схемы: включение/отключение по нажатию кнопки, мигание, плавное включение/отключение.

Для работы со светодиодом нам потребуется простейшая программа для управления портами. Для ее написания используем лишь несколько базовых команд:

pinMode (порт, режим) – команда устанавливает режим работы вывода (порта) на плате. Порт – номер вывода, режим – OUTPUT (режим передачи) и INPUT (режим приёма информации).

digitalWrite (порт, значение) – команда объявления состояния порта. Порт – номер вывода, режим – HIGH (включён), LOW (выключен).

Delay (интервал) – задержка между выполнением команд. Интервал – количество миллисекунд.

Сам скетч представляет собой две функциональные части. Объявление переменных находится в модуле void setup () {…}, исполняемый код — void loop () {…}.

Наглядно все можно увидеть на видео:

https://youtube.com/watch?v=6JJ7bi8eAkc

Мигаем светодиодом арудино

Код скетча для мигания светодиода (скетч для ардуино мигание светодиодом находится во встроенном скетче “blink”).

Мигаем с частотой 1 секунда.

Скетч мигание светодиодом на ардуино:

void setup () {pinMode (9, OUTPUT); // устанавливаем вывод 9 в режим передачи}void loop() {digitalWrite (9, HIGH); // подаём сигнал на порт 9 +5Вdelay(1000); // ждем секундуdigitalWrite (9, LOW); // отключаем порт 9delay(1000); // ждем секунду}

Создаем скетч для Arduino Nano

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

Если мы идем по первому пути — мы должны добавить следующий код в наше приложение:

int redPin = 12;

void setup() {
  // initialize Leds
  pinMode(redPin, OUTPUT);
}

void loop() {
  digitalWrite(redPin, HIGH);
  delay(1000);
  digitalWrite(redPin, LOW);
  delay(1000);
}

Второй вариант — это выбор уже готового проекта в нашей IDE. Для этого нужно сделать следующее.

File → Examples → 01. Basics → Blink
(Файл → Примеры → 01. Основы → Моргание)

После чего мы увидим код в нашем окне программы:

И здесь важный момент — нужно нажать стрелку сверху, чтобы скомпилировать скетч. После чего вы увидите надпись «Компиляция скетча» (Compiling sketch…) слева и справа процентную шкалу. В свою очередь стрелка запуска сверху поменяет свой цвет:

После этого светодиод начнет мигать.

Внимательно следите в программе за тем какие цифровые выводы вы указываете, т.к они должны соответствовать схеме подключения деталей.

Загрузка примера “Blink” (мигание) в Arduino IDE

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

Не забудьте настроить оболочку Arduino IDE и выбрать нужный серийный порт, по которому Вы подключили Вашу плату

На этом уроке мы перепрограммируем нашу плату, изменив частоту мигания светодиода. Не забудьте настроить оболочку Arduino IDE и выбрать нужный серийный порт, по которому Вы подключили Вашу плату.

Пришло время проверить Ваше подключение и запрограммировать плату.

В оболочке Arduino IDE существует большая коллекция скетчей, которые уже готовы к использованию. Среди них находится и пример, который заставляет мигать “L” светодиод.

Откройте пример “Blink”, который находится в пункте меню File – Examples – 01.Basics

После открытия, расширьте окно оболочки Arduino IDE, чтобы Вы могли весь скетч в одно окне.

Скетчи из примеров, включенные в Arduino IDE предусматривают режим “только чтение” (“read only”). То есть, загрузить их на плату Вы сможете, но после изменения кода, Вы не сможете их сохранить в том же файле.

Мы будем изменять скетч, так что в первую очередь Вам необходимо сохранить собственную копию, которую Вы сможете изменять.

Из меню “File” выберите опцию “Сохранить как” (“Save As..”) и сохраните скетч под подходящим Вам названием, например, “MyBlink”.

Вы сохранили копию скетча “Blink” в Вашей библиотеке. Теперь открыть этот файл Вы можете в любой момент, перейдя по вкладке File – Scetchbook.

Как подключить светодиод к ардуино

Подключение к ардуино желательно делать через резистор. В arduino подключение возможно и через встроенный резистор, но это требует специальный синтаксис команд и лучше его не использовать. Ограничительный резистор между выходом порта и светодиодом берем на 150 — 200 Ом.

Плавное включение светодиода

Для плавного включения используем новую команду ШИМ-модуляции сигнала.

Что бы понять принцип работы шим-модуляции, представьте резиновую трубку через которую в стакан течет вода. Если мы будем каждую секунду зажимать и отпускать трубку, за равный промежуток количество набранной воды уменьшиться в два раза. Если зажимать на одну секунду один раз в четыре секунды – ограничим объем жидкости на четверть.

В Ардуино модуляция сигнала происходит с частотой около 500 импульсов в секунду.

Команда analogWrite (порт, частота модуляции) подает на заданный порт модулированный сигнал. При частоте 255 выдается 100% мощности, при частоте 127 соответственно 50%. Изменяя частоту модуляции мы можем менять яркость. Для модулированного сигнала используют аналоговые входы-выходы.

void setup() // процедура setup{pinMode (6, OUTPUT); // включаем аналоговый порт 6 на вывод}void loop(){

Цикл увеличения частоты модуляции с 0 до 255

For (int i=0; i<=255;i++){analogWrite(6, i);delay(20); // задержка 20 миллисекунд. Светодиод «разгорится» за 5 сек.}

Цикл уменьшения частоты модуляции с 255 до 0

for(int i=255;i>=0;i—){analogWrite(6, i);delay(20);}

В этом примере светодиод плавно разгорается за 5 сек. потом постепенно гаснет в течении 5 сек.

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

Как узнать падение напряжения?

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

Теоретический метод

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

В состав этих изделий входят различные полупроводниковые металлы. Этот фактор и влияет на падение напряжения на p-n-переходе. Чтобы обозначить такие характеристики, независимо от марок и производителей светодиода, их окрашивают в различные цвета. Но стоит знать, что конкретно утверждать, на сколько вольт светодиод, опираясь только на его окраску, будет неверно. Цвета этих приборов дают приблизительные значения для проведения измерений. Примерные параметры по цветовому признаку приведены в таблице.

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

В корпусе SMD-светодиода последовательно соединяются три кристалла белого цвета. Наиболее часто они применяются в лампах на 220 В китайского производства. Из-за того, что такие светодиоды начинают реагировать только от 9,6 вольт, протестировать их мультиметром не удастся, так как его батарейка питания рассчитана на 9,5 В.

Теоретически можно воспользоваться интернетом, скачав специальную программу datasheet, в поисковике которой вписать известные параметры светодиода, его цвет. Это позволит найти приблизительные характеристики, где падение напряжения и значения тока могут быть неточными.

Практический метод

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

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

При 1,9 вольт может отсутствовать свечение. В этом случае часто проверяется инфракрасный диод. Чтобы это уточнить, необходимо перевести излучатель в телефонную камеру. Если будет видно на экране белое пятно, то это и есть инфракрасный диод.

Если нет возможности применить блок питания на постоянные 12 В, можно использовать батарейку «Крона», рассчитанную на 9 вольт. При отсутствии вышеперечисленных источников питания отлично подойдет стабилизатор сетевого напряжения, который может выдавать необходимое выпрямленное напряжение, только потребуется заново рассчитать номинал сопротивления резистора, задействованного в схеме. В этом случае также нужно повышать напряжение до засвечивания светодиода. Напряжение, при котором произойдет свечение, и будет номинальным, на которое он рассчитан.

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

Основные теоретические вопросы

Вольт-амперная характеристика (сокр. ВАХ) – это график отображающий зависимость величины тока протекающего через любой прибор от напряжения, приложенного к нему. Простая и очень ёмкая характеристика для анализа нелинейных компонентов. С её помощью можно выбрать режимы работы, и определить характеристики источника питания для прибора.

Взгляните на пример линейной и нелинейной ВАХ.

График под номером 1 на рисунке отображает линейную зависимость тока от напряжения, такую имеют все приборы резистивного характера, например:

  • Лампа накаливания;
  • обогреватель;
  • резистор (сопротивление);

График номер 2 – это ВАХ характерная для p-n переходов диодов, транзисторов и диодов.

https://youtube.com/watch?v=7S5owB-pKto

https://youtube.com/watch?v=StyLDWdXF-8

https://youtube.com/watch?v=lsOper-i6aw

Управление яркостью светодиода

Мы можем не только включать или выключать свет, но и управлять его яркостью. Для этого используется специальная технология с красивым названием ШИМ. Подключившись к пинам контроллера, поддерживающим ШИМ, можно регулировать интенсивность свечения с помощью функции analogWrite(). Мы должны указывать ей в качестве параметров номер пина и значение из диапазона от 0 до 255. Чем больше число, тем ярче будет светить лампочка. Например, для пина 3 пример будет выглядеть так: analogWrite(3, 255) или analogWrite(3, 100). В первом случае яркость будет максимально возможная, во втором – гораздо меньше.

Нужно помнить, что далеко не все пины контроллера поддерживают ШИМ. У Arduino Uno, Nano, основанных на ATMEGA328, шим поддерживают пины 3, 5, 6, 9, 10, 11. У платы Mega таких пинов гораздо больше.

Немного о светофорах

Светофор – лучший друга пешеходов и водителей, позволяющий организовать безопасное движение на дорогах. Первое такое устройство для городских дорог было установлено в 1868 году возле здания Британского парламента в Лондоне. Его внешний вид, конечно, сильно отличался от привычного нам сейчас устройств. Первый светофор представлял собой набор семафорных стрелок с подсветкой из газовых фонарей. Его создатель, инженер Джон Пик Найт, проектировал семафоры для железных дорог и первый додумался использовать идею для дорог, по которым в то время перемещались на лошадях.


Первые светофоры

Первый электрический светофор появился в 1912 году в США. Инженер Лестер Вайр придумал устройство с двумя цветами – красным и зеленым. В 1914 году на перекрестке в Кливленде впервые были установлены сразу четыре светофора. Управлялись устройства вручную – полицейские переключали лампочки.


Создатель первого светофора William L Potts

В 1920 году появились трехцветные светофоры – их поставили на улицах Нью-Йорка и Детройта. Первой же европейской страной с электрическими светофорами стала Франция. В Советском Союзе светофор появился в январе 1930 года в Ленинграде. Годом позже  первые устройства поставили и в Москве.


Памятник светофору

Сама идея установить четкую последовательность цветов связана с желанием помочь людям, не отличающим оттенки цветов. Они могут ориентироваться не на цвет, а на местоположение светящегося объекта. Именно поэтому у большинства светофоров в мире цвета выглядят именно так – красный, желтый и зеленый. Но есть и исключения – например, в Ирландии в свое время были вынуждены поменять местами красный и зеленый. Все дело в том, что местные жители не хотели видеть национальный цвет Ирландии (зеленый) в самом низу.

В некоторых странах вместо зеленого используют синий  сигнал светофора. Также сегодня часто можно встретить многосекционные светофоры со стрелками. В Берлине, например, есть светофор с  13 сигналами!

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

Часто используемые термины в RTOS

Задача (Task) – кусок кода, который выполняется в процессоре по расписанию (в определенное время).

Планировщик (Scheduler) – отвечает за выбор и перевод задач из состояния готовности (ready state) в состояние выполнения (running state).

Вытеснение (Preemption) – действие, направленное на временное прерывание выполняющейся задачи с целью удаления ее из состояния выполнения.

Переключение контекста (Context Switching) — процесс переключения процессора на другую задачу (процесс, поток) (например, при обработке прерывания), обычно сопровождающийся операциями сохранения в стеке состояния текущего потока (регистров и другой информации), восстановлением ранее сохранённого состояния другого потока и передачей ему управления. Во время работы в моменты прерывания планировщик сравнивает приоритет задач, которые находятся в состоянии готовности, с приоритетом выполняемой задачи. Если приоритет какой-нибудь задачи, находящейся в состоянии готовности, выше, чем приоритет выполняемой задачи, происходит событие переключения контекста. Состояние задачи, выполнение которой прерывается, обычно сохраняется в стеке.

Типы политики (плана действий) планировщика:

  • приоритетное планирование (Preemptive Scheduling) – в этом случае все задачи выполняются примерно одинаковую часть времени независимо от их приоритетов;
  • планирование на основе приоритетов (Priority-based Preemptive) – задачи с высоким приоритетом выполняются в первую очередь;
  • совместное планирование (Co-operative Scheduling) – операция переключения контекста случается только при взаимодействии (сотрудничестве) выполняемых задач.

Объекты ядра (Kernel Objects) – для информирования задач о том, что они должны выполнить определенную работу, используется процесс синхронизации. Для осуществления этого процесса и используются объекты ядра, такие, к примеру, как события (Events), семафоры (Semaphores), очереди (Queues), флаги/мьютексы (Mutex), почтовые ящики (Mailboxes) и т.д.

Управление RGB светодиодом на Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • RGB светодиод;
  • 3 резистора 220 Ом;
  • провода «папа-мама».

Фото. Схема подключения RGB LED к Ардуино на макетной плате

Модуль «RGB светодиод» можно подключить напрямую к плате, без проводов и макетной платы. Подключите модуль с полноцветным RGB светодиодом к следующим пинам: Минус — GND, B — Pin13, G — Pin12, R — Pin11 (смотри первое фото). Если вы используете RGB LED (Light Emitting Diode), то подключите его по схеме на фото. После подключения модуля и сборки схемы на Ардуино загрузите скетч в плату.

Скетч для мигания RGB светодиодом на Ардуино

#define RED 11  // присваиваем имя RED для пина 11
#define GRN 12 // присваиваем имя GRN для пина 12
#define BLU 13  // присваиваем имя BLU для пина 13
 
void setup() {
   pinMode(RED, OUTPUT);  // используем Pin11 для вывода
   pinMode(GRN, OUTPUT); // используем Pin12 для вывода
   pinMode(BLU, OUTPUT);  // используем Pin13 для вывода
}
 
void loop() {
 
   digitalWrite(RED, HIGH); // включаем красный свет
   digitalWrite(GRN, LOW);
   digitalWrite(BLU, LOW);
 
   delay(1000); // устанавливаем паузу для эффекта
 
   digitalWrite(RED, LOW);
   digitalWrite(GRN, HIGH); // включаем зеленый свет
   digitalWrite(BLU, LOW);
 
   delay(1000); // устанавливаем паузу для эффекта
 
   digitalWrite(RED, LOW);
   digitalWrite(GRN, LOW);
   digitalWrite(BLU, HIGH); // включаем синий свет
 
  delay(1000); // устанавливаем паузу для эффекта
}

Пояснения к коду:

  1. с помощью директивы мы заменили номер пинов 11, 12 и 13 на соответствующие имена , и . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
  2. в процедуре мы поочередно включаем все три цвета на RGB.

Настройка программы Arduino IDE

После того как все детали соединены мы готовы снова вернуться к нашей Arduino IDE и создать блок кода для управления платой. Такой блок кода называют скетчем. Но для начала мы должны немного настроить нашу программу.

Сначала выбираем правильную плату с которой будем работать. Переходим в нужное меню и выбираем из списка нашу плату:

Tools → Board → Arduino Nano

Дальше мы обязательно должны выбрать на каком чипе сделана наша плата, т.к. Arduino Nano может идти в двух вариантах — с чипом ATmega168 и ATmega 328 (в нашем случае).

Tools → Processor → ATmega328

После мы убеждаемся, что правильно выбран серийный порт (Serial Port).

Tools → Port → COM8

И последнее — проверяем наш программер:

Варианты соединений

Чтобы выполнить последовательное соединение светодиодов на 220В, воспользуйтесь схемой ниже.

В данном случае в большей степени ограничивает ток конденсатор С1, он играет роль реактивного сопротивления. Подробнее о расчете конденсатора мы писали в статье. Для получения необходимого значения емкости конденсатора воспользуйтесь онлайн калькулятором:

Так вы можете подключить даже один светодиод.

Если вы хотите собрать схему последовательного соединения светодиодов на 100 вольт постоянного напряжения, в цепь нужно включить порядка 30 светодиодов. Тогда необходимое напряжение будет порядка 90 вольт. Расчёт резистора выполнить по формуле в предыдущих разделах статьи.

Конденсатор нужен для сглаживания пульсаций тока, резистор стоящий параллельно – для разряда конденсатора после отключения прибора, в целях безопасности. Если источник питания достаточно стабилизирован их можно исключить.