- Необходимый материал
- Принципиальная электрическая схема
- Код и объяснение
- Как он автоматически регулирует интенсивность света:
«Будь яркой искрой, гаси до темноты!» иногда мы забываем выключить свет и тратим впустую электроэнергию, и вы, должно быть, видели, как днем включается уличный свет. Мы уже построили несколько схем на детекторе темноты, где свет автоматически отключается, если на улице светло, и включается, если на улице темно. Но на этот раз в этой схеме мы не только включаем и выключаем свет в зависимости от условий освещения, но также меняем интенсивность света в соответствии с условиями внешнего освещения. Здесь мы использовали концепцию LDR и PWM с Arduino для автоматического уменьшения или увеличения яркости светодиода мощностью 1 Вт.
По сути, ШИМ относится к широтно-импульсной модуляции, выходной сигнал через вывод ШИМ будет аналоговым сигналом, полученным как цифровой сигнал от Arduino. Он использует рабочий цикл цифровой волны для генерации последовательного аналогового значения для сигнала. И этот сигнал в дальнейшем используется для управления яркостью светодиода питания.
Необходимый материал
- Arduino UNO
- LDR
- Резистор (510, 100 кОм)
- Конденсатор (0,1 мкФ)
- Транзистор 2Н2222
- Светодиод мощности 1 Вт
- Соединительные провода
- Макетная плата
Принципиальная электрическая схема
Код и объяснение
Полный код Arduino для автоматического диммера светодиодов приведен в конце.
В приведенном ниже коде мы определяем вывод ШИМ и переменные, которые будут использоваться в коде.
int pwmPin = 2; // назначает вывод 12 переменной pwm int LDR = A0; // назначает аналоговый вход A0 переменной pot int c1 = 0; // объявляет переменную c1 int c2 = 0; // объявляет переменную c2
Теперь в цикле мы сначала считываем значение с помощью команды «analogRead (LDR)», а затем сохраняем аналоговый вход в переменную с именем «значение» . Выполняя некоторые математические вычисления, мы генерируем сигнал ШИМ. Здесь мы контролируем интенсивность света с помощью ШИМ, только если аналоговое значение меньше 500, а если оно больше 500, мы полностью выключаем свет.
значение int = analogRead (LDR); Serial.println (значение); c1 = значение; c2 = 500-c1; // вычитает c2 из 1000 и сохраняет результат в c1 if (value <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, LOW); delayMicroseconds (c1); } если (значение> 500) { digitalWrite (2, LOW); } }
Вы можете узнать больше о ШИМ в Arduino здесь.
Как он автоматически регулирует интенсивность света:
Согласно принципиальной схеме, мы сделали схему делителя напряжения, используя LDR и резистор 100 кОм. Выход делителя напряжения подается на аналоговый вывод Arduino. Аналоговый вывод измеряет напряжение и выдает какое-то аналоговое значение на Arduino. Аналоговое значение изменяется в зависимости от сопротивления LDR. Таким образом, если LDR темный, его сопротивление увеличивается, и, следовательно, значение напряжения (аналоговое значение) уменьшается. Следовательно, аналоговое значение изменяет выходной сигнал ШИМ или рабочий цикл, а рабочий цикл дополнительно пропорционален интенсивности света мощного светодиода. Таким образом, свет над LDR будет автоматически контролировать интенсивность светодиода Power. Ниже приведена блок-схема того, как это будет работать: знак стрелки вверх указывает "увеличение", а знак стрелки вниз указывает "уменьшение".
Интенсивность света (на LDR) ↓ - Сопротивление ↑ - Напряжение на аналоговом выводе ↓ - Рабочий цикл (ШИМ) ↑ - Яркость светодиода мощности ↑
Если на улице очень ярко (когда аналоговое значение увеличивается более чем на 500), светодиод питания гаснет.
Вот как вы можете автоматически контролировать интенсивность света с помощью LDR.
Далее проверьте все наши схемы, связанные с LDR.