Как регулировать яркость светодиода на arduino - Строительный журнал
7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Тема: Автоматическая регулировка яркости светодиодной подсветки

Тема: Автоматическая регулировка яркости светодиодной подсветки.

Администратор Регистрация 08.06.2007 Возраст 51 Сообщений 13,354 Вес репутации 10

Принцип действия Arduino

«Сердце» платы Arduino — микроконтроллер, к которому подключаются датчики, управляющие элементы. Заданная программа (называется «скетч») позволяет управлять электродвигателями, светодиодами в лентах и других осветительных приборах, даже используется для контроля над другой платой Arduino через протокол SPI. Контроль осуществляется при помощи пульта ДУ, Bluetooth-модуля или сети Wi-Fi.

Для программирования используется открытый исходный код на ПК. Для загрузки программ управления можно пользоваться USB-коннектором.

Если вы используете RGB светодиод с общим катодом, то подключите длинный вывод светодиода к GND платы Arduino, а каналы R, G и B – к цифровым портам Arduino. При этом нужно помнить, что светодиоды загораются при подаче на каналы R, G, B высокого уровня (HIGH), в отличие от светодиода с общим анодом.

Схема подключения RGB светодиода с общим катодом к Arduino

Если не менять вышеприведённый скетч, то каждый цвет светодиода в этом случае будет гореть 0,2 секунды, а пауза между ними составит 0,1 секунду.

Полезный совет

Если вы хотите управлять яркостью светодиода, то подключайте RGB светодиод к цифровым выводам Arduino, которые имеют функцию ШИМ (PWM). Такие выводы на плате Arduino обычно помечены знаком тильда (волнистая линия), звёздочкой или обведены кружочками.

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

Давайте рассмотрим простой пример, чтобы узнать, как использовать светодиодный ШИМ-контроллер ESP32 с помощью Arduino IDE.

Схема

Подключите светодиод к ESP32, как показано на следующей схеме. Светодиод должен быть подключен к GPIO 16.

image_4.jpg

(В этой схеме используется версия модуля ESP32 DEVKIT V1 с 30 GPIO — если вы используете другую модель, проверьте схему расположения GPIO используемой платы.)

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

Откройте Arduino IDE и скопируйте следующий код.

Начинаем с определения пина, к которому подключен светодиод. В этом случае светодиод подключен к GPIO 16.

Затем устанавливаем свойства сигнала ШИМ. Определяем частоту 5000 Гц, выбираем канал 0 для генерации сигнала и устанавливаем разрешение в 8 бит. Можно выбрать другие свойства, отличные от этих, для генерации различных сигналов ШИМ.

В setup() необходимо настроить LED PWM со свойствами, которые определили ранее, используя функцию ledcSetup(), следующим образом:

Затем нужно выбрать GPIO, на который будет выводится сигнал. Для этого используем функцию ledcAttachPin(), которая принимает в качестве аргументов GPIO, канал, который генерирует сигнал. В этом примере мы получим сигнал в GPIO ledPin, который соответствует GPIO 16. Каналом, который генерирует сигнал, является ledChannel, который соответствует каналу 0.

Читать еще:  Пластиковое окно дует снизу регулировка

В цикле вы будете изменять рабочий цикл от 0 до 255, чтобы увеличить яркость светодиода.

А затем, между 255 и 0, чтобы уменьшить яркость.

Чтобы установить яркость светодиода, вам просто нужно использовать функцию ledcWrite(), которая принимает в качестве аргументов канал, генерирующий сигнал, и коэффициент заполнения.

Поскольку мы используем 8-битное разрешение, рабочий цикл будет управляться с помощью значения от 0 до 255. Обратите внимание, что в функции ledcWrite () мы используем канал, который генерирует сигнал, а не GPIO.

Тестирование примера

Загрузите код на ESP32. Убедитесь, что выбрали правильную плату и COM-порт. Посмотрите на свою схему. Должен получиться диммер, который увеличивает и уменьшает яркость.

Эксперименты со скважностью

Здесь стоит поговорить о такой характеристике переменного сигнала как скважность. Этим термином обозначается отношение длительности включения и отключения напряжения (T) к отрезку времени, когда напряжение подается (t1).

График прямоугольного импульса и аргументы для расчета скважности

Рис. 4. Аргументы для расчета скважности

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

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

График напряжения на пине Arduino, при котором светодиод горит тусклее

Рис. 5. График напряжения на пине, при котором светодиод горит тусклее

Пример таких значений можно увидеть в приведенном ниже коде (лампочка здесь горит с меньшей яркостью, чем до этого):

Верно и обратное. Если подавать напряжение дольше, а выключать пин на меньшее время, то светодиод станет ярче.

График напряжения на пине Arduino, при котором светодиод горит ярче

Рис. 6. График напряжения на пине, при котором светодиод горит ярче

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

График непрерывной подачи напряжения на пин Arduino

Рис. 7. График непрерывной подачи напряжения на пин

Добавляя паузы, мы снижаем действие напряжения. В изначальном примере, где чередование было задано как 5 мс отключения после 5 мс работы, светодиоду передавалась только половина от максимального напряжения в 5 вольт — то есть 2,5 вольта.

Управляем освещением при помощи датчика освещенности

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

  • Arduino UNO — одна из разновидностей плат ардуино;
  • Блок реле SRD-12VDC-SL-C;
  • Резистор на 10 кОм;
  • Фоторезистор (выступает в роли датчика освещенности);
  • Arduino IDE — программное обеспечение для загрузки микрокода в микроконтроллер Arduino;
  • Лампочка, подключаемая к сети 220 вольт.
Читать еще:  Пластиковые окна снятие и регулировка

Оборудование с адаптивным освещением

Первым делом соберем схему с помощью этих компонентов изображенную ниже.

Схема подключения с адаптивным освещением

Теперь откроем Arduino IDE и внесем в нее такой код:
int s1 = A0; // Выбираем пин для подключения датчика освещенности «Фоторезистора»
int s2; // Переменная, которая будет хранить информацию, получаемую с датчика
void setup() <
Serial.begin(9600); // Устанавливаем последовательный порт для связи
>
void loop() <
// Считываем информацию с датчика:
s2 = analogRead(s1); // Присваиваем значение переменой s2
Serial.println(s2); // Выводим информацию на «Монитор порта» с датчика освещенности
delay(100); // Устанавливаем короткую задержку
>
Этот код не предназначен для включения нашей лампочки. С помощью этого кода мы проверим наш датчик освещенности. Поэтому загрузим этот код в Arduino UNO и откроем «Монитор порта».

Монитор порта

В «Мониторе порта» видно, что мы получаем значения с фоторезистора, а это значит, что он нормально функционирует. Теперь пришло время загрузить основной код для автоматического управления светом. Для этого вставьте этот код в Arduino IDE:
int s1 = A0; // Выбираем пин для подключения датчика освещенности «Фоторезистора»
int s2; // Переменная, которая будет хранить информацию, получаемую с датчика
void setup() <
pinMode(2, OUTPUT); // Подключаем второй пин к реле SRD-12VDC-SL-C
Serial.begin(9600); // Устанавливаем последовательный порт для связи
>
void loop() <
// Считываем информацию с датчика:
s2 = analogRead(s1);// Присваиваем значение переменой s2
Serial.println(s2); // Выводим информацию на «Монитор порта» с датчика освещенности
if(s2 < 700) //Устанавливаем пороговое значение, при котором лампочка будет включаться
digitalWrite(2,HIGH); //Включаем блок реле SRD-12VDC-SL-C
else digitalWrite(2,LOW); // Если показания датчика больше порогового значения, то лампочка не включится или отключится
delay(100); // Устанавливаем короткую задержку
>
Принцип работы этого скетча основан на условном операторе, при котором выполняется условие «s2 < 700». Это условие означает, что при значении датчика меньше 700 лампочка будет включаться, а если значение больше 700, то лампочка отключится. Из примера видно, как легко можно создать адаптивную систему автоматического освещения.

Управление, подключение RGB светодиодов

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

Если импульсы будут маленькие, то светодиоды начнут мигать. Для постоянного свечения требуется частота 60-70 Гц ( старые модели ), в новых типах не менее 100 Гц.

Читать еще:  Механизм слива для бачка унитаза регулировка

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

Как регулировать яркость светодиода на arduino

Делаем бегущие огни из светодиодов на Arduino. В данном случае используется Arduino Mega 2560, который потенциально способен управлять бегущей дорожкой из 54-х светодиодов. Но схема и программа не изменятся, если вы будете использовать другие контроллеры из платформы Arduino такого типа (UNO, Leonardo. )

Схема подключения светодиодов к Ардуино Мега 2560.

Так выглядит скетч в окне стандартного приложения для программирования Ардуино.

Текст программы для реализации бегущих огней на платформе ардуино.

int first_out = 11; //первый дискретный выход

int last_out = 13; //последний дискретный выход

//блок для инициализации входов-выходов и других исходных данных

last_out = last_out + 1; //добавляем единицу для корректного использования в циклах

//определение 11-го, 12-го и 13-го дискретных выводов платы Ардуино как выходы

for (i = first_out; i < last_out; i++)

digitalWrite(t, HIGH); //зажигание следующего светодиода

delay(500); //задержка 500мсек

for (i = first_out; i < last_out; i++) < digitalWrite(i, LOW); >//гасим все светодиоды

Для увеличения количества управляемых светодиодов в гирлянде, в программе нужно будет просто заменить значения переменных first_out и last_out. Первая переменная хранит начальный дискретный выход контроллера, а вторая последний из группы выходов, которые идут подряд. Например, если мы хотим подключить 10 светодиодов в гирлянду, вводим такие значения: first_out = 4, last_out = 13. И Arduino подключить светодиоды к выводам по порядку с 4-го по 13-й. А первый и второй вывод дискретных входов-выходов лучше не трогать, так как им мешает usb-порт, подключенный к компьютеру.

Корпус пластиковый 100x60x25мм

Универсальный бокс из чорного пластика под самодельное электронное устройствоArduino UNO и Leonardo ..

NC-559-ASM флюс гель для пайки

NC-559-ASM флюс гель для пайки

Флюс-гель нейтральный, высокой степени очистки, с высокой температурой кипения, для BGA, SMD и други..

LCD дисплей 4х20 с шиной I2C

LCD дисплей 4х20 с шиной I2C

Довольно крупный по размеру символьный LCD индикатор.4 строки.20 символов в строке.Синяя подсветка.С..

Датчик для измерения напряжения сети 220В

Датчик для измерения напряжения сети 220В

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

Обмен данными между двумя Arduino при помощи программного UART

Обмен данными между двумя Arduino при помощи программного UART

Обмен данными между двумя Arduino при помощи программного UARTКоммуникация по последовательному порт..

0 0 голоса
Рейтинг статьи
Ссылка на основную публикацию