- Необходим материал
- Електрическа схема
- Код и обяснение
- Как управлява автоматично интензивността на светлината:
„Бъди ярка искра, светлини, докато не се стъмни!“ понякога забравяме да изключим осветлението и да хабим електричество и сигурно сте виждали и улично осветление включено през деня. Вече сме изградили няколко вериги на Dark detector, където светлините се изключват автоматично, ако е ярко отвън и се включват, ако е тъмно отвън. Но този път в тази верига ние не само включваме и изключваме светлините въз основа на светлинните условия, но също така променяме интензивността на светлината според външните светлинни условия. Тук използвахме LDR и PWM концепция с Arduino за автоматично намаляване или увеличаване на яркостта на светодиода с мощност 1 вата.
По принцип PWM се отнася до модулация на широчината на импулса, изходният сигнал чрез PWM щифт ще бъде аналогов сигнал и придобит като цифров сигнал от Arduino. Той използва работния цикъл на цифровата вълна, за да генерира последователната аналогова стойност за сигнала. И този сигнал се използва допълнително за управление на яркостта на светодиода за захранване.
Необходим материал
- Arduino UNO
- LDR
- Резистор (510, 100k ома)
- Кондензатор (0.1uF)
- Транзистор 2N2222
- 1 вата LED за захранване
- Свързващи проводници
- Макет
Електрическа схема
Код и обяснение
Пълният код на Arduino за автоматичен LED димер е даден в края.
В кода по-долу дефинираме PWM пина и променливите, които ще се използват в кода.
int pwmPin = 2; // присвоява щифт 12 на променлива pwm int LDR = A0; // присвоява аналогов вход A0 на променлива пот 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 е тъмно, неговото съпротивление се увеличава и следователно стойността на напрежението (аналоговата стойност) намалява. Следователно аналоговите стойности променят PWM изхода или работния цикъл, а работният цикъл е допълнително пропорционален на интензивността на светлината на светодиода за захранване. Така че светлината над LDR автоматично ще контролира интензивността на LED индикатора. По-долу е диаграмата на потока как това ще работи, знакът със стрелка нагоре показва "увеличаване", а знакът със стрелка надолу показва "намаляване".
Интензитет на светлината (на LDR) ↓ - Съпротивление ↑ - Напрежение на аналогов щифт ↓ - Работен цикъл (ШИМ) ↑ - Яркост на светодиода за захранване ↑
Ако пълната му ярка отвън (когато аналоговата стойност се увеличи над 500), светодиодът за захранване се изключва.
Ето как можете автоматично да контролирате интензивността на светлината с помощта на LDR.
По-нататък проверете всичките ни LDR схеми, свързани тук.