В этом уроке мы используем данные датчика для управления 5В реле, подключенного к Arduino, для включения/выключения лампы.
Лампа будет включаться и выключаться когда показания фоторезистора пересекают пороговое значение. Дополнительно мы сможет включать и выключать лампу с помощью таймера.
Компоненты
Для этого проекта по работе Ардуино Реле через фоторезистор нам нужны следующие компоненты:
- Arduino Pro Mini или Arduino Uno
- Реле SRD-05VDC-SL-C 5V
- Фоторезистор
- 10К-резистор
- Потенциометр 10К
- Макетная плата
- Перемычки
- Шнур питания (опционально)
- Светодиод (опционально)
- Резистор 330 Ом (опционально)
Прежде чем мы перейдем дальше, немного разберем некоторые концепции по нашему проекту.
Реле
Реле - это электромеханические устройства, используемые для управления питанием подключенных устройств.
С помощью реле, вы можете легко использовать Arduino для управления мощностью практически любого типа электрических устройств.
Схема, показанная ниже, использует светодиод в качестве выходного устройства.

Внутри реле находится электромагнитная катушка, которая приводит в действие высоковольтный выключатель при протекании тока через цепь.
При отсутствии тока, проходящего через катушку, реле находится в нормально замкнутом состоянии:
Когда выключатель закрыт, ток течет через катушку, и электромагнитное поле, создаваемое катушкой, приводит к тому, что высоковольтная клемма переключается в нормально открытое положение:
При работе с индуктивными нагрузками, такими как реле, соленоиды, двигатели или шаговые двигатели, важно защитить Вашу цепь от обратного ЭДС.
Обратный ЭДС возникает, когда электромагнитное поле, окружающее катушку, падает обратно в катушку. Это вызывает большой обратный ток в катушке, который может повредить другие компоненты в цепи.
Для предотвращения обратного электромагнитного поля, диод должен быть размещен параллельно катушке.
Фоторезисторы
Фоторезисторы или светозависимые резисторы (LDR, Light Dependent Resistors) являются светочувствительными устройствами.
При ярком освещении фоторезистор имеет более низкое сопротивление. По мере того, как свет тускнеет, сопротивление увеличивается.
Типичный диапазон фоторезисторов варьируется от 3 кОм при высоком уровне освещенности до многих мегаом при низком уровне освещенности.
Вы можете проверить сопротивление фоторезистора в условиях низкой и высокой освещенности с помощью ОМ-метра. Имейте в виду, что два идентичных фоторезистора могут иметь разные диапазоны сопротивления.

Выше - схематический символ фоторезистора.
Схема соединения
Теперь подключите компоненты для построения схемы, как показано ниже:
Примечание. Реле имеет встроенный транзистор для управления катушкой реле, а также диод через обмотку для защиты транзистора. Так как реле может выдержать до 80 мА под напряжением, вы можете повредить Arduino, если вы управляете реле непосредственно от него.
Скетч
После того, как все подключено в соответствии с электрической схемой выше, загрузите этот код в ваш Arduino:
const int photoResistor = A0;
const int pot = A1;
const int relay = 3;
bool timer = false;
int val = 0;
int val0 = 0;
int bright = 5;
const float wait = 144000;
void setup() {
pinMode(relay, OUTPUT);
}
void loop() {
val0 = analogRead(pot);
val0 = map(val0, 0, 1023, 0, 100);
val = analogRead(photoResistor);
val = map(val, 0, 1023, 0, 100);
if ((val <= bright) & (val0 == 0) & (timer == false))
{
digitalWrite(relay, HIGH);
}
else if ((val <= bright) & (val0 > 0) & (timer == false))
{
digitalWrite(relay, HIGH);
delay(wait * val0);
timer = true;
digitalWrite(relay, LOW);
}
else if (val >= bright)
{
digitalWrite(relay, LOW);
}
if (( val > 15) & (timer == true))
timer = false;
}
После загрузки и компиляции кода, установите потенциометр 10K на минимум.
Реле включит свет, когда фоторезистор будет темным (покрытым). А когда управление установлено на минимальный уровень, реле включит свет, а затем выключит, как только вернется свет (закат на рассвет).
Однако, если вы хотите, чтобы свет появился в темноте, оставьте его включенным на некоторое время, а затем выключите до восхода солнца.
Отрегулируйте потенциометр 10K, чтобы контролировать, как долго свет будет гореть после наступления темноты. Таймер активируется, как только регулятор выше 0V (нуля вольт).
Слегка повернув вверх, регулятор времени включит свет на несколько минут, прежде чем снова выключится. При полном включении таймера свет останется включенным примерно на 4 часа до его выключения.
По истечении времени все автоматически сбрасывается, и свет становится доступным. При полном выключении регулятора (до нуля вольт) свет включается в темноте и остается включенным до тех пор, пока свет не вернется (от захода солнца до восхода солнца).
Если вам необходимо вручную перезагрузить устройство, подумайте о добавлении кнопочного переключателя для заземления кнопки сброса (RST).
Таймер
Диапазон таймера можно регулировать вверх или вниз от 14400 с помощью переменной задержки.
Максимальное время ожидания составляет примерно 4 часа. Также можно настроить уровень освещенности, при котором срабатывает реле. Изначально значение переменной bright
(яркость) было установлено на 5, но при повышении этого значения свет будет активироваться при более высоком уровне освещенности.
С другой стороны, понижение его значения заставит комнату темнеть, прежде чем свет станет более активным. Однако не следует устанавливать значение параметра bright
выше 14.
Тайминг основан на функции задержки, которая работает в миллисекундах. Потенциометр времени представляет аналоговый вход, считанный в переменную val0
.
Затем он преобразуется с помощью функции " map " в диапазон от 0 до 100. Вы можете попробовать варьировать диапазон до (0-50) с помощью этого кода:
val0 = map(val0, 0, 1023, 0, 50);
или (0-250) с помощью этого:
val0 = map(val0, 0, 1023, 0, 250);
Расположите фоторезистор так, чтобы он не находился в прямой линии со светом, когда он включается. Вы можете настроить чувствительность фоторезистора, как упоминалось ранее, с помощью переменной bright
.