Главная chevron_right Наши уроки chevron_right Arduino для начинающих chevron_right Проект 13. Автоматическое управление светом

Проект 13. Автоматическое управление светом

Собираем устройство автоматического управления светом на Arduino Uno с Trema Set Shield: реле включает лампу по датчику освещённости, а силовой ключ плавно регулирует яркость св...

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

Вариант 1:

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

Описание работы:

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

Нам понадобится:

Схема сборки:

Код программы:

const uint8_t pinDatL = A3;                                 // Объявляем пин для работы с датчиком звука.
const uint8_t pinPot = A0;                                  // Объявляем пин для работы с потенциометром.
const uint8_t pinRele = 3;                                  // Объявляем пин для работы с реле.
                                                            //
int potValue;                                               // Переменная для считывания показания потенциометра.
int datValue;                                               // Переменная для считывания показании датчика освещенности.
                                                            //
void setup()                                                //
{                                                           //
  pinMode(pinRele, OUTPUT);                                 // Переводим вывод pinRele в режим выхода.
}                                                           //
                                                            //
void loop()                                                 //
{                                                           //
  potValue = analogRead(pinPot);                            // Считываем показания потенциометра
  datValue = analogRead(pinDatL);                           // Считываем показания датчика освещенности.
                                                            //
  if(potValue + 5 < datValue){digitalWrite(pinRele, HIGH);} // Если показания потенциометра + 5 меньше показаний датчика освещенности, то включаем реле.
  if(potValue - 5 > datValue){digitalWrite(pinRele, LOW);}  // Если показания потенциометра - 5 больше показаний датчика освещенности, то выключаем реле.
}                                                           //

Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

В коде setup выполняются следующие действия:

  • Переводим выводы pinRele для реле в режим выхода.

В коде loop выполняются следующие действия:

  • Считываем показания потенциометра.
  • Считываем показания датчика освещенности.
  • Если показания потенциометра + 5 меньше показаний датчика освещенности, то включаем реле.
  • Если показания потенциометра - 5 больше показаний датчика освещенности, то выключаем реле.

Вариант 2:

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

Описание работы:

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

Нам понадобится:

Схема сборки:

Код программы:

const uint8_t pinDatL = A3;                                                 // Объявляем пин для работы с датчиком освещенности.
const uint8_t pinPowerKey = 3;                                              // Объявляем пин для работы с силовым ключом.
                                                                            //
const int minL = 50;                                                        //
const int maxL = 920;                                                       //
                                                                            //
void setup()                                                                //
{                                                                           //
  pinMode(pinPowerKey, OUTPUT);                                             // Переводим вывод pinPowerKey в режим выхода.
}                                                                           //
                                                                            //
void loop()                                                                 //
{                                                                           //
  if (analogRead(pinDatL) > maxL) {analogWrite(pinPowerKey, 0);}            // Если показания с датчика больше макисмальной границы, выключаем силовой ключ.
  else                                                                      // Если показания датчика в диапазоне от минимального значения до максимальго значения.
  {analogWrite(pinPowerKey, map(analogRead(pinDatL), minL, maxL, 255, 0));} // Считываем показания датчика освещенности и присваиваем его значения силовому ключу в диапазоне от 255 до 0.
  if (analogRead(pinDatL) < minL) {analogWrite(pinPowerKey, 255);}          // Если показания с датчика меньше минимальной границы, подаем 100% напряжения на силовой ключ.
}                                                                           //

Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

В коде setup выполняются следующие действия:

  • Переводим выводы pinPowerKey для силового ключа в режим выхода.

В коде loop выполняются следующие действия:

  • Проверяем показания с датчика освещенности, если показания больше максимального значения, то подаем ноль на силовой ключ.
  • Считываем показания датчика освещенности и присваиваем его значения силовому ключу в диапазоне от 255 до 0.
  • Проверяем показания с датчика освещенности, если показания меньше минимального значения, то подаем 100% напряжения на силовой ключ.

Особенности:

В скетче присутствуют переменные "minL" - минимальная граница и "maxL" - максимальная граница. Это переменные между которыми датчик освещенности плавно переходит из яркого состояния в темное. И так как датчик освещенности в зависимости от помещения не может достигнуть своего максимального или минимального значения, вводятся константы, для того чтобы, при значениях датчика освещенности которые вышли за пределы диапазона от "minL" до "maxL", источнику света принудительно подается максимальное либо минимальное напряжение. Эти константы регулируются в скетче в начале программы.

Ссылки

Комплект для повторения проекта

Что понадобится

Это быстрый ориентир по основным модулям и деталям. Полный список для повторения проекта смотрите в самой статье.

11 позиций
Arduino Uno R3 (USB ATmega16U2) Платформа c микроконтроллером ATmega328P на ядре AVR с чипом USB ATmega16U2 для разработки электронных устройств на языке C++ Открыть в iArduino Trema Set Shield Плата расширения, которая упрощает процесс подключения модулей к Arduino. Открыть в iArduino Реле (Trema-модуль v2.0) Позволяет коммутировать цепи как переменного, так и постоянного тока до 10 А. Открыть в iArduino Потенциометр v2 (Trema-модуль) Сенсор для настройки скорости вращения двигателя, угол поворота сервопривода, яркости светодиода и т.д. Открыть в iArduino Датчик освещённости (Trema-модуль) Trema-модуль датчик освещённости Открыть в iArduino Силиконовые провода 24AWG (10 шт. / 10 см) Набор из 10 мягких силиконовых проводов сечением 0,2 мм² и длиной 10 см Открыть в iArduino Силиконовые провода 24AWG (10 шт. / 5 см) Набор из 10 мягких силиконовых проводов сечением 0,2 мм² и длиной 5 см Открыть в iArduino Силиконовые провода 24AWG (10 шт. / 20 см) 20 см Открыть в iArduino Силовой ключ N-канал (Trema-модуль) Позволит управлять нагрузкой ШИМ сигналом. Например яркостью светодиодной ленты или скоростью мотора Открыть в iArduino Источник питания на 12В. 3А. Источник питания 12 вольт, 2 ампера, центр положительный, DC jack 5,5*2,1 мм Открыть в iArduino Коннектор power jack Мама с клемником Коннектор power jack Мама с клемником для Arduino Открыть в iArduino
Все уроки Arduino для начинающих