Ir al contenido

Trailing Edge vs Leading Edge: qué método de dimmer elegir

Atenuación por corte de fase explicada: por qué el TRIAC (leading edge) causa parpadeo LED a bajo brillo, y cuándo el MOSFET (trailing edge) es la elección correcta de hardware.

Respuesta corta: Leading edge es el dimmer TRIAC estándar — conecta la carga en la segunda mitad de cada semiciclo AC (ideal para bombillas incandescentes y calefactores). Trailing edge es un dimmer MOSFET — conecta la carga desde el inicio de cada semiciclo (mejor para lámparas LED, menos parpadeo). La mayoría de los módulos dimmer económicos usan leading edge.



El problema

Tu dimmer TRIAC funciona perfectamente con una bombilla incandescente o un calefactor — pero al cambiar a una lámpara LED aparecen problemas: parpadeo, inestabilidad, comportamiento errático a bajo brillo.

Esta es la incompatibilidad clásica entre el método de control y el tipo de carga. Los dimmers TRIAC implementan leading edge — un método optimizado para cargas resistivas que genera problemas con los drivers LED electrónicos. Trailing edge (MOSFET) resuelve estos problemas.

Síntomas típicos de incompatibilidad de los foros:

  • «Los dimmers TRIAC leading edge no producen buenos resultados con bombillas LED dimmables» (Arduino Forum, 2024)
  • «Uso placas TRIAC para luces incandescentes y atenúan muy bien. Pero con luces LED no funcionan correctamente» (Arduino Forum, 2024)
  • Parpadeo LED por debajo del 30–50 % de brillo que ningún cambio de código soluciona
  • La lámpara funciona bien al 100 %, pero es inestable al atenuar



Causa raíz

Ambos métodos usan control de fase (control de ángulo de fase): un TRIAC o transistor se abre en un punto específico del semiciclo AC y pasa parte de la onda sinusoidal a la carga. La diferencia está en qué parte del semiciclo llega a la carga.


Leading Edge (corte de fase directo)

text
Onda sinusoidal: ╭─────╮        ╭─────╮
                 │     │        │     │
─────────────────╯     ╰────────╯     ╰────
Leading edge (50 % potencia):
                 ──╭───╮        ──╭───╮
                   │   │          │   │
───────────────────╯   ╰──────────╯   ╰────
                   ↑ El TRIAC se dispara aquí
  • El TRIAC se dispara a mitad del semiciclo
  • La carga recibe la segunda mitad de cada semiciclo
  • Pico de voltaje brusco característico cuando el TRIAC se dispara
  • El estándar de la industria para dimmers residenciales durante los últimos 50 años

Problema con LED: El driver LED ve un salto abrupto de voltaje de cero a ~200–300 V. Muchos drivers LED reaccionan como si fuera un pico eléctrico o interferencia, activan circuitos de protección y se comportan erráticamente.


Trailing Edge (corte de fase inverso)

text
Onda sinusoidal: ╭─────╮        ╭─────╮
                 │     │        │     │
─────────────────╯     ╰────────╯     ╰────
Trailing edge (50 % potencia):
                 ╭───╮          ╭───╮
                 │   │          │   │
─────────────────╯   ╰──────────╯   ╰──────
                     ↑ El transistor se apaga aquí
  • El MOSFET (transistor) se abre al inicio del semiciclo y se cierra a mitad
  • La carga recibe la primera mitad de cada semiciclo
  • El voltaje sube suavemente desde cero siguiendo la sinusoidal — sin pico brusco
  • Circuito más complejo y costoso, requiere un control más sofisticado

Ventaja con LED: El driver LED ve un voltaje que sube gradualmente desde cero — idéntico al inicio de un semiciclo normal, solo más corto. La mayoría de los drivers LED manejan correctamente esta forma de onda.


La matemática del control

c
// Leading edge: mayor retardo = menos potencia
delay_us = firing_angle;     // mayor retardo = menos potencia
// Trailing edge: mayor retardo = más potencia
// (cerramos el transistor antes)
delay_us = half_period - firing_angle;  // mayor retardo = más potencia
// half_period:
// 50 Hz → 10.000 µs
// 60 Hz →  8.333 µs



Soluciones



🟢 Principiante: elegir el módulo correcto

No quieres lidiar con matemáticas de ángulo de fase — elige el módulo correcto y usa DimmerLink.

La mayoría de los módulos TRIAC disponibles (incluido RBDimmer) usan leading edge. Es el estándar — funciona bien con cargas resistivas: bombillas incandescentes, halógenas, calefactores, cautines, reostatos.

Si necesitas trailing edge para LED — necesitas un dimmer MOSFET, no un módulo TRIAC.

Regla práctica:

  • Incandescente / halógena / calefactor → cualquier dimmer TRIAC (leading edge)
  • LED de calidad etiquetado «TRIAC dimmable» → TRIAC (leading edge) funciona
  • LED con inestabilidad / parpadeo → trailing edge (módulo MOSFET)

Control mediante DimmerLink:

Cualquier ESP32 works with standard RBDimmer TRIAC modules (leading edge) over I2C or UART. When trailing edge is needed, DimmerLink also controls MOSFET modules.

Cuándo elegir DimmerLink:

  • ☐ Raspberry Pi (sin SO de tiempo real para ISR)
  • ☐ ESP32-S2/C3/H2 (un solo núcleo — bibliotecas de software no soportadas)
  • ☐ Quieres controlar el dimmer desde cualquier plataforma sin escribir código ISR
  • cpp
    // DimmerLink por I2C — funciona con cualquier módulo conectado
    // (TRIAC leading edge o MOSFET trailing edge — sin cambios de código)
    // Documentación: https://www.rbdimmer.com/docs/dimmerlink-I2CCommunication
    #include <Wire.h>
    #define DIMMER_ADDR 0x50
    #define REG_LEVEL   0x10
    void setLevel(uint8_t level) {
        Wire.beginTransmission(DIMMER_ADDR);
        Wire.write(REG_LEVEL);
        Wire.write(level);
        Wire.endTransmission();
    }
    void setup() {
        Wire.begin();
        setLevel(50);  // 50 % de brillo
    }
    void loop() {}


    🔵 Avanzado: implementación en código

    Quieres controlar el ángulo de fase tú mismo — así es como funciona.

    Ambas implementaciones usan una interrupción de cruce por cero. La única diferencia es la fórmula de retardo antes del disparo.


    Opción A: Leading Edge en ESP32 con rbdimmerESP32 ✅ Recomendado

    Cuándo: ESP32 de doble núcleo + cargas resistivas o lámparas LED de calidad compatibles con TRIAC.

    La biblioteca rbdimmerESP32 implementa leading edge por defecto.

    cpp
    // Plataforma: ESP32 de doble núcleo
    // Biblioteca: rbdimmerESP32 — leading edge, automático
    // Código fuente: github.com/robotdyn-dimmer/rbdimmerESP32
    #include "rbdimmerESP32.h"
    #define ZC_PIN  18
    #define DIM_PIN 19
    rbdimmer dimmer;
    void setup() {
        dimmer.begin(ZC_PIN, DIM_PIN, 50);  // Red eléctrica 50 Hz
        dimmer.setPower(50);                // 50 % de potencia
    }
    void loop() {
        // Transición suave
        for (int p = 10; p <= 95; p++) {
            dimmer.setPower(p);
            delay(30);
        }
        for (int p = 95; p >= 10; p--) {
            dimmer.setPower(p);
            delay(30);
        }
    }


    Opción B: Trailing Edge — Implementación manual en Arduino AVR

    Cuándo: leading edge causa problemas con LED y necesitas cambiar a trailing edge sin cambiar el módulo (algunos módulos MOSFET permiten esto en hardware).

    cpp
    // Plataforma: Arduino Uno / Mega (solo AVR)
    // Implementación: trailing edge mediante control ISR manual de cruce por cero
    // ADVERTENCIA: solo funciona con módulos MOSFET — ¡NO con TRIAC!
    // Para ESP32 usa rbdimmerESP32 (leading edge)
    #define ZC_PIN  2   // cruce por cero — solo pines 2 o 3 en Uno
    #define DIM_PIN 11  // pin de control del gate MOSFET
    volatile int brightness = 50;  // 0–100 %
    // Interrupción de cruce por cero
    void zeroCrossISR() {
        // Trailing edge: abrir al inicio, cerrar después de (brightness/100) * half_period
        // 50 Hz: half_period = 10.000 µs
        // 60 Hz: half_period = 8.333 µs
        int on_time = (brightness * 10000L) / 100;  // 50 Hz
        digitalWrite(DIM_PIN, HIGH);    // abrir MOSFET inmediatamente
        delayMicroseconds(on_time);     // mantener abierto
        digitalWrite(DIM_PIN, LOW);     // cerrar MOSFET
    }
    void setup() {
        pinMode(DIM_PIN, OUTPUT);
        attachInterrupt(digitalPinToInterrupt(ZC_PIN),
                        zeroCrossISR, RISING);
    }
    void loop() {
        brightness = 50;  // 50 %
    }

    Nota: delayMicroseconds() dentro de una ISR bloquea otras interrupciones. Para uso en producción, reemplaza el retardo con un timer de hardware. Este ejemplo solo demuestra el principio.



    ⚠️ Errores comunes de los foros

    Errores reales de 3 hilos de foros (2019–2025).

    • «Cambié a trailing edge en el código — sigue parpadeando»: Si tienes un módulo TRIAC (no MOSFET), trailing edge por software no hace nada. Un TRIAC físicamente no puede hacer trailing edge — necesitas un módulo MOSFET.

    • «Cambié a trailing edge — la lámpara se ve más tenue con el mismo valor»: Esto es esperado. Trailing edge funciona con lógica invertida comparado con leading edge. Al 50 % en trailing edge obtienes una porción diferente del semiciclo que al 50 % en leading edge. Recalibra tu rango.

    • «Encontré una biblioteca que hace trailing edge en el mismo módulo»: Si tienes un módulo TRIAC estándar (BTA16, BT139, BTA08) — ninguna biblioteca puede cambiarlo a trailing edge. La física del hardware no lo permite.

    • «Usuarios del foro reportan: cambiar del código leading edge de RBDimmer al código manual trailing edge con cruce por cero SOLUCIONÓ el parpadeo LED sin cambiar hardware» — esto solo funciona si tenían un módulo MOSFET, no un TRIAC.




    Checklist rápido

    Antes de publicar en el foro, verifique:

  • ☐ ¿Cuál es tu módulo — TRIAC o MOSFET? (revisa el marcado del chip)
  • ☐ TRIAC (BTA08, BTA16, BT139) — solo leading edge
  • ☐ MOSFET (IRLZ44N, IRF540) — soporta trailing edge
  • ☐ ¿Tu carga es resistiva (incandescente) o LED con driver electrónico?
  • ☐ Para LED con problemas: prueba primero cambiar a una lámpara Philips/Osram —
  • esto soluciona el 80 % de los casos sin cambiar el módulo



    Tabla de compatibilidad

    Método Módulo Carga ¿Funciona? Notas
    Leading edge TRIAC RBDimmer Bombilla incandescente Excelente
    Leading edge TRIAC RBDimmer Halógena 230 V Excelente
    Leading edge TRIAC RBDimmer Calefactor Excelente
    Leading edge TRIAC RBDimmer Philips/Osram LED Lámpara de calidad
    Leading edge TRIAC RBDimmer LED noname barato ⚠️ Parpadeo < 40 %
    Trailing edge MOSFET Cualquier LED dimmable Mejor resultado
    Trailing edge TRIAC Cualquiera Imposible en hardware



    Temas relacionados



    ¿Todavía tiene preguntas?

    Post on rbdimmer.com forum or open a GitHub Issue.

    Compartir esta publicación
    Iniciar sesión para dejar un comentario