- Material necesar
- Diagrama circuitului
- Cod și explicație
- Cum controlează automat intensitatea luminii:
„Fii o scânteie strălucitoare, se aprinde până se întunecă!” uneori uităm să stingem luminile și să pierdem electricitatea și trebuie să fi văzut și lumina străzii aprinsă ziua. Am construit deja câteva circuite pe detectorul întunecat în care luminile se sting automat dacă este luminos în exterior și se aprinde dacă este întuneric afară. De data aceasta, în acest circuit nu numai că aprindem și stingem luminile pe baza condițiilor de lumină, ci și vom varia intensitatea luminii în funcție de condițiile de lumină exterioară. Aici am folosit conceptul LDR și PWM cu Arduino pentru scăderea sau creșterea automată a luminozității LED-ului de putere de 1 watt.
Practic, PWM se referă la modularea lățimii impulsurilor, semnalul de ieșire prin intermediul unui pin PWM va fi un semnal analogic și dobândit ca semnal digital de la Arduino. Folosește ciclul de funcționare al undei digitale pentru a genera valoarea analogică secvențială pentru semnal. Și acest semnal este utilizat în continuare pentru a controla luminozitatea LED-ului de alimentare.
Material necesar
- Arduino UNO
- LDR
- Rezistor (510, 100k ohm)
- Condensator (0,1 uF)
- Tranzistorul 2N2222
- LED de alimentare de 1 watt
- Conectarea firelor
- Breadboard
Diagrama circuitului
Cod și explicație
Codul complet Arduino pentru dimmerul automat LED este dat la sfârșit.
În codul de mai jos, definim pinul PWM și variabilele care vor fi utilizate în cod.
int pwmPin = 2; // atribuie pinul 12 variabilei pwm int LDR = A0; // atribuie intrarea analogică A0 variabilei pot int c1 = 0; // declară variabila c1 int c2 = 0; // declară variabila c2
Acum, în buclă, citim mai întâi valoarea folosind comanda „analogRead (LDR)”, apoi salvăm intrarea analogică într-o variabilă numită „valoare” . Prin efectuarea unor calcule matematice, generăm semnalul PWM. Aici, controlăm intensitatea luminii folosind PWM numai dacă valoarea analogică este mai mică de 500, iar dacă este mai mare de 500, stingem complet luminile.
valoare int = analogRead (LDR); Serial.println (valoare); c1 = valoare; c2 = 500-c1; // scade c2 din 1000 ans salvează rezultatul în c1 if (valoare <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, LOW); delayMicroseconds (c1); } if (valoare> 500) { digitalWrite (2, LOW); } }
Puteți afla mai multe despre PWM în Arduino de aici.
Cum controlează automat intensitatea luminii:
Conform schemei de circuite, am realizat un circuit divizor de tensiune folosind rezistor LDR și 100k. Ieșirea divizorului de tensiune este alimentată la pinul analogic al Arduino. Pinul analogic detectează tensiunea și dă o anumită valoare analogică Arduino. Valoarea analogică se modifică în funcție de rezistența LDR. Deci, dacă este întunecat peste LDR, rezistența sa crește și, prin urmare, valoarea tensiunii (valoarea analogică) scade. Prin urmare, valoarea analogică variază ieșirea PWM sau ciclul de funcționare, iar ciclul de funcționare este proporțional în continuare cu intensitatea luminii LED-ului de putere. Deci, lumina de pe LDR va controla automat intensitatea LED-ului de alimentare. Mai jos este diagrama de flux cum va funcționa acest lucru, semnul săgeții cu capul sus indică „creștere”, iar semnul săgeată cu capul jos indică „descrescând”.
Intensitatea luminii (pe LDR) ↓ - Rezistența ↑ - Tensiunea la pinul analogic ↓ - Ciclul de funcționare (PWM) ↑ - Luminozitatea LED-ului de putere ↑
Dacă este complet luminos în exterior (când valoarea analogică crește mai mult de 500), LED-ul de alimentare se stinge.
Acesta este modul în care puteți controla automat intensitatea luminii folosind LDR.
Verificați în continuare toate circuitele legate de LDR aici.