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