- Material requerido
- Diagrama de circuito
- Código y explicación
- Cómo controla la intensidad de la luz automáticamente:
"¡Sé una chispa brillante, apaga las luces hasta que oscurezca!" a veces nos olvidamos de apagar las luces y desperdiciar electricidad y también debe haber visto el alumbrado público encendido durante el día. Ya hemos construido algunos circuitos en el detector de oscuridad donde las luces se apagan automáticamente si hay mucha luz afuera y se encienden si está oscuro afuera. Pero esta vez, en este circuito no solo encendemos y apagamos las luces en función de las condiciones de luz, sino que también variamos la intensidad de la luz de acuerdo con las condiciones de luz exterior. Aquí hemos utilizado el concepto LDR y PWM con Arduino para disminuir o aumentar el brillo del Power LED de 1 vatio automáticamente.
Básicamente, PWM se refiere a la modulación de ancho de pulso, la señal de salida a través de un pin PWM será una señal analógica y se adquirirá como una señal digital del Arduino. Utiliza el ciclo de trabajo de la onda digital para generar el valor analógico secuencial de la señal. Y esa señal se usa además para controlar el brillo del LED de encendido.
Material requerido
- Arduino UNO
- LDR
- Resistencia (510, 100 k ohmios)
- Condensador (0,1 uF)
- Transistor 2N2222
- LED de alimentación de 1 vatio
- Cables de conexión
- Tablero de circuitos
Diagrama de circuito
Código y explicación
El código completo de Arduino para el atenuador LED automático se proporciona al final.
En el siguiente código, estamos definiendo el pin PWM y las variables que se utilizarán en el código.
int pwmPin = 2; // asigna el pin 12 a la variable pwm int LDR = A0; // asigna la entrada analógica A0 a la variable pot int c1 = 0; // declara la variable c1 int c2 = 0; // declara la variable c2
Ahora, en el ciclo, primero leemos el valor usando el comando "analogRead (LDR)" y luego guardamos la entrada analógica en una variable llamada "valor" . Al hacer algunos cálculos matemáticos, estamos generando la señal PWM. Aquí, estamos controlando la intensidad de la luz usando PWM solo si el valor analógico es menor que 500, y si es mayor que 500 apagamos completamente las luces.
valor int = analogRead (LDR); Serial.println (valor); c1 = valor; c2 = 500-c1; // resta c2 de 1000 ans guarda el resultado en c1 if (valor <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, BAJO); delayMicroseconds (c1); } if (valor> 500) { digitalWrite (2, LOW); } }
Puede obtener más información sobre PWM en Arduino desde aquí.
Cómo controla la intensidad de la luz automáticamente:
Según el diagrama del circuito, hemos hecho un circuito divisor de voltaje usando LDR y una resistencia de 100k. La salida del divisor de voltaje se alimenta al pin analógico del Arduino. El Pin analógico detecta el voltaje y le da un valor analógico a Arduino. El valor analógico cambia según la resistencia de LDR. Entonces, si está oscuro sobre el LDR, su resistencia aumenta y, por lo tanto, el valor de voltaje (valor analógico) disminuye. Por lo tanto, el valor analógico varía la salida PWM o el ciclo de trabajo, y el ciclo de trabajo es más proporcional a la intensidad de la luz del LED de potencia. Entonces, la luz sobre el LDR controlará automáticamente la intensidad del LED de encendido. A continuación se muestra el diagrama de flujo de cómo funcionará, el signo de flecha hacia arriba indica "aumentando" y el signo de flecha hacia abajo indica "disminuyendo".
Intensidad de luz (en LDR) ↓ - Resistencia ↑ - Voltaje en el pin analógico ↓ - Ciclo de trabajo (PWM) ↑ - Brillo del LED de encendido ↑
Si está completamente brillante afuera (cuando el valor analógico aumenta más de 500), el LED de encendido se apaga.
Así es como puede controlar la intensidad de la luz automáticamente usando LDR.
Más información sobre todos los circuitos relacionados con LDR aquí.