- Material requerit
- Esquema de connexions
- Codi i explicació
- Com controla la intensitat de la llum automàticament:
"Sigues una espurna brillant, els llums apagats fins que es faci fosc!" de vegades ens oblidem d’apagar els llums i malgastar electricitat i també haureu vist que el llum del carrer s’encenia el dia. Ja hem construït pocs circuits al detector fosc on els llums s’apaguen automàticament si són brillants a l’exterior i s’encenen si són foscos fora. Aquesta vegada, en aquest circuit, no només encenem i apagem els llums en funció de les condicions de llum, sinó que també varem la intensitat de la llum segons les condicions de llum exterior. Aquí hem utilitzat el concepte LDR i PWM amb Arduino per disminuir o augmentar la brillantor del LED d'alimentació d'1 watt de forma automàtica.
Bàsicament, PWM es refereix a la modulació d’amplada de pols, el senyal de sortida mitjançant un pin PWM serà un senyal analògic i s’adquirirà com a senyal digital de l’Arduino. Utilitza el cicle de treball de l’ona digital per generar el valor analògic seqüencial del senyal. I, aquest senyal s’utilitza a més per controlar la brillantor del LED d’alimentació.
Material requerit
- Arduino UNO
- LDR
- Resistència (510, 100k ohm)
- Condensador (0,1 uF)
- Transistor 2N2222
- LED d'alimentació d'1 watt
- Connexió de cables
- Taula de pa
Esquema de connexions

Codi i explicació
El codi Arduino complet per a regulador automàtic de LED es dóna al final.
Al codi següent, definim el pin PWM i les variables que s’utilitzaran al codi.
int pwmPin = 2; // assigna el pin 12 a la variable pwm int LDR = A0; // assigna l'entrada analògica A0 a la variable pot int c1 = 0; // declara la variable c1 int c2 = 0; // declara la variable c2
Ara, al bucle, primer estem llegint el valor mitjançant l'ordre "analogRead (LDR)" i després desem l'entrada analògica en una variable anomenada "valor" . Fent alguns càlculs matemàtics estem generant el senyal PWM. Aquí controlem la intensitat de la llum mitjançant PWM només si el valor analògic és inferior a 500 i, si és superior a 500, apagem completament els llums.
valor int = analogRead (LDR); Serial.println (valor); c1 = valor; c2 = 500-c1; // resta c2 de 1000 anys desa el resultat a c1 if (valor <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, BAIX); delayMicroseconds (c1); } if (valor> 500) { digitalWrite (2, BAIX); } }
Podeu obtenir més informació sobre PWM a Arduino des d’aquí.
Com controla la intensitat de la llum automàticament:
Segons el diagrama del circuit, hem creat un circuit divisor de voltatge mitjançant LDR i resistència de 100 k. La sortida del divisor de tensió s’alimenta al pin analògic de l’Arduino. El Pin analògic detecta la tensió i dóna cert valor analògic a Arduino. El valor analògic canvia segons la resistència de LDR. Per tant, si és fosc sobre el LDR, la seva resistència augmenta i, per tant, disminueix el valor de tensió (valor analògic). Per tant, el valor analògic varia la sortida PWM o el cicle de treball, i el cicle de treball és proporcional a la intensitat de la llum de potència LED. Per tant, la llum sobre el LDR controlarà automàticament la intensitat del LED d’alimentació. A continuació es mostra el diagrama de flux de funcionament, el signe de fletxa cap amunt indica "creixent" i el signe de fletxa cap avall indica "decreixent".
Intensitat de llum (en LDR) ↓ - Resistència ↑ - Voltatge al pin analògic ↓ - Cicle de treball (PWM) ↑ - Lluminositat del LED d'alimentació ↑
Si és totalment brillant a l'exterior (quan el valor analògic augmenta més de 500), el LED d'alimentació s'apaga.
Així és com podeu controlar la intensitat de la llum automàticament mitjançant LDR.
Consulteu aquí tots els circuits relacionats amb LDR.
