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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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