- Materiale richiesto
- Schema elettrico
- Codice e spiegazione
- Come controlla automaticamente l'intensità della luce:
"Sii una scintilla luminosa, spegni le luci finché non è buio!" a volte ci dimentichiamo di spegnere le luci e sprecare l'elettricità e devi aver visto anche l'illuminazione stradale accesa di giorno. Abbiamo già costruito pochi circuiti sul rilevatore scuro in cui le luci si spengono automaticamente se fuori è luminoso e si accendono se fuori è buio. Ma questa volta, in questo circuito non stiamo solo accendendo e spegnendo le luci in base alle condizioni di luce, ma variando anche l'intensità della luce in base alle condizioni di luce esterne. Qui abbiamo utilizzato il concetto LDR e PWM con Arduino per diminuire o aumentare automaticamente la luminosità del LED di alimentazione da 1 watt.
Fondamentalmente, PWM si riferisce alla modulazione di larghezza di impulso, il segnale di uscita tramite un pin PWM sarà un segnale analogico e acquisito come segnale digitale da Arduino. Utilizza il duty cycle dell'onda digitale per generare il valore analogico sequenziale per il segnale. E quel segnale viene ulteriormente utilizzato per controllare la luminosità del LED di alimentazione.
Materiale richiesto
- Arduino UNO
- LDR
- Resistenza (510, 100k ohm)
- Condensatore (0.1uF)
- Transistor 2N2222
- LED di potenza da 1 watt
- Cavi di collegamento
- Breadboard
Schema elettrico
Codice e spiegazione
Alla fine viene fornito il codice Arduino completo per il dimmer LED automatico.
Nel codice seguente, stiamo definendo il pin PWM e le variabili da utilizzare nel codice.
int pwmPin = 2; // assegna il pin 12 alla variabile pwm int LDR = A0; // assegna l'ingresso analogico A0 alla variabile pot int c1 = 0; // dichiara la variabile c1 int c2 = 0; // dichiara la variabile c2
Ora, nel loop, stiamo prima leggendo il valore utilizzando il comando “analogRead (LDR)” quindi salviamo l'ingresso analogico in una variabile chiamata “value” . Facendo alcuni calcoli matematici stiamo generando il segnale PWM. Qui stiamo controllando l'intensità della luce usando PWM solo se il valore analogico è inferiore a 500 e se è superiore a 500 spegniamo completamente le luci.
valore int = analogRead (LDR); Serial.println (valore); c1 = valore; c2 = 500-c1; // sottrae c2 da 1000 ans salva il risultato in c1 if (value <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, LOW); delayMicroseconds (c1); } if (valore> 500) { digitalWrite (2, LOW); } }
Puoi saperne di più su PWM in Arduino da qui.
Come controlla automaticamente l'intensità della luce:
Come da schema elettrico, abbiamo realizzato un circuito partitore di tensione utilizzando LDR e resistore da 100k. L'uscita del divisore di tensione viene alimentata al pin analogico di Arduino. Il Pin analogico rileva la tensione e fornisce un valore analogico ad Arduino. Il valore analogico cambia in base alla resistenza di LDR. Quindi, se è scuro sopra l'LDR, la sua resistenza aumenta e quindi il valore di tensione (valore analogico) diminuisce. Quindi, il valore analogico varia l'uscita PWM o il ciclo di lavoro e il ciclo di lavoro è ulteriormente proporzionale all'intensità della luce del LED di alimentazione. Quindi la luce sopra l'LDR controllerà automaticamente l'intensità del LED di alimentazione. Di seguito è riportato il diagramma di flusso di come funzionerà, il segno della freccia in alto indica "in aumento" e il segno della freccia in basso indica "in diminuzione".
Intensità della luce (su LDR) ↓ - Resistenza ↑ - Tensione al pin analogico ↓ - Ciclo di lavoro (PWM) ↑ - Luminosità del LED di alimentazione ↑
Se all'esterno è completamente luminoso (quando il valore analogico aumenta di oltre 500) il LED di alimentazione si spegne.
In questo modo è possibile controllare automaticamente l'intensità della luce utilizzando LDR.
Controlla ulteriormente tutti i nostri circuiti relativi a LDR qui.