Objetivo y caso de uso
Qué construirás: Un control automático de brillo que ajusta la iluminación de una pantalla (simulada con un LED de backlight) según la luz ambiente usando una LDR y un microcontrolador. Mapearás la lectura ADC a una salida PWM para mantener legibilidad y ahorrar energía.
Para qué sirve
- Panel informativo que sube brillo con sol directo y baja por la noche.
- Reloj de mesa que no deslumbra de madrugada y se ve bien de día.
- Instrumentación en taller que adapta el backlight al encender/apagar luces del lugar.
- Kiosco interactivo que ahorra energía en interiores oscuros.
Resultado esperado
- Lectura ADC en A0: ~100–300 (oscuridad) hasta ~700–1000 (luz intensa) en escala 0–1023.
- PWM en D9: ~10–30% (oscuro) hasta ~80–100% (muy iluminado).
- Corriente del LED (I_LED): ~5–15 mA con R de 150 Ω a 5 V (V_LED ≈ 3.0 V).
- Tiempo de respuesta: < 200 ms sin parpadeo perceptible.
Público objetivo: Personas que inician en electrónica y microcontroladores; Nivel: básico
Arquitectura/flujo: LDR→Divisor→ADC MCU→Algoritmo→PWM→Transistor→Backlight LED
Materiales
- 1 × Microcontrolador tipo Arduino Uno (o compatible de 5 V)
- 1 × Fotoresistencia [LDR1] (LDR típica 5–50 kΩ)
- 1 × Transistor NPN [Q1] 2N2222 (o BC547)
- 1 × LED blanco [D1] (simula backlight)
- 1 × Resistencia [R1] 10 kΩ (divisor LDR)
- 1 × Resistencia [R2] 150 Ω (limitación de corriente LED)
- 1 × Resistencia [R3] 1 kΩ (base de Q1)
- 1 × Resistencia [R5] 100 kΩ (pull-down de base)
- Cables Dupont y protoboard
- Multímetro; opcional: osciloscopio y luxómetro
Guía de conexionado
- Alimentación:
- Usa +5 V y GND del Arduino como rieles de potencia. GND debe ser común a todo el circuito.
- Divisor de luz (entrada a ADC):
- Conecta [LDR1] entre +5V y o VA node.
- Conecta [R1] 10 kΩ entre o VA node y GND.
- Conecta o VA node al pin A0 (ADC) de la MCU.
- Salida PWM y etapa de potencia (backlight):
- Conecta o VD node al pin D9 (PWM) de la MCU.
- Conecta [R3] 1 kΩ entre o VD node y o VB node.
- Conecta [R5] 100 kΩ entre o VB node y GND.
- Conecta la base de [Q1] NPN 2N2222 a o VB node.
- Conecta el emisor de [Q1] a GND.
- Conecta [R2] 150 Ω entre +5V y el ánodo de [D1] LED.
- Conecta el cátodo de [D1] LED a o VC node.
- Conecta el colector de [Q1] a o VC node.
Esquemático
+5V
|
[LDR1] LDR
|
VA node o------------- MCU A0
|
[R1] 10kΩ
|
GND
+5V
|
[R2] 150Ω
|
[D1] LED
|
VC node o----C Q1 NPN 2N2222 E----o GND
\ | /
\ | /
\|/
B
|
VB node o
|
VD node o---- MCU D9 |
| |
+----[R3] 1kΩ----+
|
[R5] 100kΩ
|
GND
Mediciones y pruebas
- Preparación:
- Verifica polaridad del LED ([D1]): ánodo hacia [R2] y cátodo hacia VC node.
- Confirma GND común entre el Arduino y el resto del circuito.
- Medición de V_LDR (tensión en VA node):
- V_LDR es la tensión en el nodo VA respecto a GND.
- Mide con multímetro: punta roja en VA, negra en GND.
- Espera V_LDR baja (~0.5–1.5 V) en oscuridad y alta (~3.5–4.8 V) a plena luz.
- Lectura ADC (ADC_LUX):
- ADC_LUX es la lectura de analogRead(A0), rango 0–1023.
- Abre el monitor serie e imprime ADC_LUX cada 100 ms; al tapar/iluminar la LDR debe variar suavemente.
- PWM (D_PWM) en D9:
- D_PWM es el ciclo útil del PWM (0–255 en analogWrite).
- Con osciloscopio en D9: frecuencia ~490 Hz; mide duty que debe aumentar con la luz.
- Sin osciloscopio, observa el brillo del LED: más luz ⇒ más brillo.
- Corriente del LED (I_LED):
- I_LED es la corriente que circula por [D1].
- Opción 1: Inserta el multímetro en serie entre [R2] y [D1] (modo A).
- Opción 2: Mide V_R en [R2] y calcula I_LED = V_R / 150 Ω. A brillo máximo espera ~10–15 mA.
- Criterios de éxito:
- ADC_LUX cubre >60% del rango al pasar de oscuro a luz intensa.
- D_PWM varía de forma estable sin “bombeo” (oscilaciones rápidas) perceptible.
- I_LED dentro de 5–15 mA y el LED nunca se apaga completamente salvo oscuridad extrema (si así se configura).
- Tiempo de respuesta percibido < 0.2 s.
Código de ejemplo (Arduino)
const int PIN_LDR = A0;
const int PIN_PWM = 9;
const int PWM_MIN = 25; // brillo mínimo para no apagar del todo
const int PWM_MAX = 255; // brillo máximo
float filt = 0; // filtro exponencial de la lectura
const float alpha = 0.2; // 0..1 (más alto = más rápido, menos suavizado)
void setup() {
pinMode(PIN_PWM, OUTPUT);
analogWrite(PIN_PWM, 0);
Serial.begin(9600);
}
void loop() {
int adc = analogRead(PIN_LDR); // 0..1023
// Filtro exponencial para evitar parpadeo
filt = alpha * adc + (1.0 - alpha) * filt;
// Mapear luz->brillo: más luz => mayor PWM (lineal simple)
int pwm = map((int)filt, 0, 1023, PWM_MIN, PWM_MAX);
pwm = constrain(pwm, PWM_MIN, PWM_MAX);
analogWrite(PIN_PWM, pwm);
// Telemetría básica
Serial.print("ADC_LUX=");
Serial.print((int)filt);
Serial.print(" D_PWM=");
Serial.println(pwm);
delay(50);
}
Calibración rápida
- Ajusta PWM_MIN para que, en una habitación oscura, el LED sea visible pero no molesto.
- Si tu LDR satura bajo techo, cambia [R1] a 4.7 kΩ para ganar sensibilidad en alta luz; si es demasiado sensible en oscuridad, usa 22 kΩ.
- Para más linealidad perceptual, aplica una curva gamma: pwm = pow(norm, 1/2.2) * (PWM_MAX-PWM_MIN) + PWM_MIN, donde norm = filt/1023.0.
Errores comunes
- Invertir el divisor (LDR a GND y R1 a +5 V) cambia el sentido de la curva; corrígelo en software o cableado.
- Omitir [R5] 100 kΩ: la base queda “flotante” y el LED puede encenderse solo.
- Conectar el LED sin [R2] 150 Ω: riesgo de sobrecorriente y daño del LED/transistor.
- No compartir GND entre la MCU y el transistor: el PWM no tendrá referencia y no funcionará.
Seguridad y buenas prácticas
- No mires fijamente un LED blanco brillante a corta distancia; puede causar deslumbramiento.
- Evita tocar el circuito alimentado; desconecta al modificar conexiones.
- Si el LED calienta, aumenta [R2] (220–330 Ω) para reducir corriente.
Mejoras y extensiones
- Añade un promedio móvil de 1–2 s para evitar cambios bruscos por sombras pasajeras.
- Usa un MOSFET logic-level para controlar tiras LED de mayor potencia.
- Implementa histéresis y límites por horario (más tenue de noche).
- Sustituye la LDR por un fotodiodo o sensor digital de luz (BH1750) para lecturas en lux reales.
Más Casos Prácticos en Prometeo.blog
Encuentra este producto y/o libros sobre este tema en Amazon
Como afiliado de Amazon, gano con las compras que cumplan los requisitos. Si compras a través de este enlace, ayudas a mantener este proyecto.



