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)
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)
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
// 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 µsSoluciones
🟢 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:
// 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.
// 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).
// 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:
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
- LED Lamps with AC Dimmer: TRIAC vs MOSFET — Compatibility Guide
- LED Flickering with AC Dimmer: TRIAC or MOSFET — Causes and Fixes
¿Todavía tiene preguntas?
Post on rbdimmer.com forum or open a GitHub Issue.