Caso práctico: Ajuste de brillo de pantalla según luz

Esquemático — Caso práctico: Ajuste de brillo de pantalla según luz

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
Esquemático (ASCII)

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);
}
Esquemático (ASCII)

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

Ir a 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.

Quiz rápido

Pregunta 1: ¿Cuál es el objetivo del proyecto descrito?




Pregunta 2: ¿Qué rango de lectura ADC en A0 se espera en condiciones de oscuridad?




Pregunta 3: En condiciones muy iluminadas, ¿qué ciclo de trabajo PWM típico se espera en D9?




Pregunta 4: ¿Cuál es el flujo correcto de la señal en la arquitectura del sistema?




Pregunta 5: Con R2 = 150 Ω, Vcc = 5 V y V_LED ≈ 3.0 V, ¿qué corriente de LED es esperable?




Pregunta 6: ¿Qué componente actúa como sensor de luz en el proyecto?




Pregunta 7: ¿Qué pin del microcontrolador se usa para leer la luz ambiente mediante el ADC?




Pregunta 8: ¿Qué resistencia limita la corriente del LED de backlight?




Pregunta 9: ¿Cuál es la función de R3 (1 kΩ) en la base del transistor Q1?




Pregunta 10: ¿Cuál es el tiempo de respuesta objetivo del sistema para evitar parpadeo perceptible?




Carlos Núñez Zorrilla
Carlos Núñez Zorrilla
Electronics & Computer Engineer

Ingeniero Superior en Electrónica de Telecomunicaciones e Ingeniero en Informática (titulaciones oficiales en España).

Sígueme:
Scroll al inicio