Автоматическое управление яркостью свечения светодиода с помощью Arduino

Проблема экономии электроэнергии является одной из ключевых в современном мире. Часто можно наблюдать, как где-нибудь горит электрический свет в то время как в помещении (на улице) достаточно светло, тем самым растрачивая впустую электроэнергию. На нашем сайте мы уже рассматривали детектор темноты на основе Arduino и фоторезистора, который включал и выключал свет в зависимости от освещенности в комнате. Но в данном проекте мы будем не просто включать/выключать свет от уровня освещенности, но адаптивно регулировать (подстраивать) его яркость в зависимости от окружающей обстановки (освещенности). В качестве источника света будет использоваться светодиод мощностью 1 Вт, которым мы будем управлять с помощью платы Arduino и транзистора.

Внешний вид проекта для автоматического управления яркостью свечения светодиода с помощью Arduino

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

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Фоторезистор (LDR) (купить на AliExpress).
  3. Транзистор 2N2222.
  4. Резистор 510 Ом.
  5. Резистор 100 кОм.
  6. Конденсатор 0,1 мкФ.
  7. Светодиод мощностью 1 Вт.
  8. Соединительные провода.
  9. Макетная плата.

Схема проекта

Схема автоматического управления яркостью свечения светодиода с помощью Arduino и фоторезистора представлена на следующем рисунке.

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

Объяснение программы для Arduino

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

Сначала в программе нам необходимо объявить используемые переменные и инициализировать используемые контакты – на pin 12 мы будем формировать ШИМ (PWM) сигнал, а на A0 считывать аналоговое значение напряжения.

Далее, в функции loop мы будем считывать аналоговое значение напряжения с помощью команды “analogRead(LDR)”, а затем сохранять это значение напряжения в переменной “value”. Потом при помощи несложных математических преобразований мы будем формировать ШИМ сигнал с нужным нам коэффициентом заполнения. Если аналоговое значение напряжения (с выхода АЦП) меньше 500, то мы будем адаптивно управлять яркостью свечения светодиода, а если больше или равно 500 – то мы будем включать его на полную мощность.

Более подробно об использовании ШИМ в Arduino можно прочитать в этой статье.

Принцип работы проекта

Как можно видеть из представленной выше схемы, мы использовали делитель напряжения, состоящий из фоторезистора и резистора сопротивлением 100 кОм. Выход делителя напряжения подключен к аналоговому входу Arduino – с выхода его АЦП мы считываем значение напряжения. Из-за изменений условий освещенности сопротивление фоторезистора уменьшается, следовательно, изменяется и значение напряжения на аналоговом входе Arduino. Если вокруг темно, то сопротивление фоторезистора велико, следовательно напряжение на аналоговом входе Arduino мало. Это полученное значение напряжения мы затем преобразуем в коэффициент заполнения ШИМ, который непосредственным образом влияет на яркость свечения светодиода. Принцип работы нашей схемы можно пояснить с помощью следующей условной диаграммы:

Интенсивность света на фоторезисторе ↓ - Сопротивление фоторезистора↑ - Напряжение на аналоговом входе Arduino↓ - Коэффициент заполнения ШИМ (PWM)↑ - Яркость свечения светодиода↑.

Если вокруг достаточно светло и значение на выходе АЦП аналогового входа Arduino более 500, то мы выключаем светодиод.

Также на нашем сайте вы можете посмотреть все проекты, в которых был использован фоторезистор.

Исходный код программы

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
68 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *