Risposta breve: Leading edge è il dimmer TRIAC standard — collega il carico nella seconda metà di ogni semiperiodo AC (ideale per lampadine a incandescenza e riscaldatori). Trailing edge è un dimmer MOSFET — collega il carico dall'inizio di ogni semiperiodo (migliore per lampade LED, meno sfarfallio). La maggior parte dei moduli dimmer economici usa il leading edge.
Il problema
Il tuo dimmer TRIAC funziona perfettamente con una lampadina a incandescenza o un riscaldatore — ma sostituisci con una lampada LED e compaiono i problemi: sfarfallio, instabilità, comportamento erratico a bassa luminosità.
Questa è la classica incompatibilità tra metodo di controllo e tipo di carico. I dimmer TRIAC implementano il leading edge — un metodo ottimizzato per carichi resistivi che crea problemi con i driver LED elettronici. Il trailing edge (MOSFET) risolve questi problemi.
Sintomi tipici di incompatibilità dai forum:
- «I dimmer TRIAC leading edge non producono buoni risultati con le lampadine LED dimmerabili» (Arduino Forum, 2024)
- «Uso schede TRIAC per luci a incandescenza e dimmerano benissimo. Ma con luci LED non funzionano» (Arduino Forum, 2024)
- Sfarfallio LED sotto il 30–50 % di luminosità che nessuna modifica al codice può risolvere
- La lampada funziona bene al 100 %, ma è instabile quando dimmerata
Causa profonda
Entrambi i metodi usano il controllo di fase (controllo dell'angolo di fase): un TRIAC o transistor si apre in un punto specifico del semiperiodo AC e passa parte dell'onda sinusoidale al carico. La differenza sta in quale parte del semiperiodo raggiunge il carico.
Leading Edge (taglio di fase diretto)
Onda sinusoidale: ╭─────╮ ╭─────╮
│ │ │ │
──────────────────╯ ╰────────╯ ╰────
Leading edge (50 % potenza):
──╭───╮ ──╭───╮
│ │ │ │
────────────────────╯ ╰──────────╯ ╰────
↑ Il TRIAC si innesca qui- Il TRIAC si innesca a metà del semiperiodo
- Il carico riceve la seconda metà di ogni semiperiodo
- Picco di tensione brusco caratteristico quando il TRIAC si innesca
- Lo standard industriale per i dimmer residenziali da 50 anni
Problema con i LED: Il driver LED vede la tensione saltare bruscamente da zero a ~200–300 V. Molti driver LED reagiscono come a un picco elettrico o interferenza, attivano i circuiti di protezione e si comportano in modo erratico.
Trailing Edge (taglio di fase inverso)
Onda sinusoidale: ╭─────╮ ╭─────╮
│ │ │ │
──────────────────╯ ╰────────╯ ╰────
Trailing edge (50 % potenza):
╭───╮ ╭───╮
│ │ │ │
──────────────────╯ ╰──────────╯ ╰──────
↑ Il transistor si spegne qui- Il MOSFET (transistor) si apre all'inizio del semiperiodo e si chiude a metà
- Il carico riceve la prima metà di ogni semiperiodo
- La tensione sale gradualmente da zero seguendo la sinusoide — nessun picco brusco
- Circuito più complesso e costoso, richiede un controllo più sofisticato
Vantaggio con i LED: Il driver LED vede una tensione che sale gradualmente da zero — identica all'inizio di un semiperiodo normale, solo accorciato. La maggior parte dei driver LED gestisce correttamente questa forma d'onda.
La matematica del controllo
// Leading edge: ritardo maggiore = meno potenza
delay_us = firing_angle; // ritardo maggiore = meno potenza
// Trailing edge: ritardo maggiore = più potenza
// (chiudiamo il transistor prima)
delay_us = half_period - firing_angle; // ritardo maggiore = più potenza
// half_period:
// 50 Hz → 10.000 µs
// 60 Hz → 8.333 µsSoluzioni
🟢 Principiante: scegliere il modulo giusto
Non vuoi occuparti di calcoli sull'angolo di fase — scegli il modulo giusto e usa DimmerLink.
La maggior parte dei moduli TRIAC disponibili (incluso RBDimmer) usa il leading edge. È lo standard — funziona bene con carichi resistivi: lampadine a incandescenza, alogene, riscaldatori, saldatori, reostati.
Se ti serve il trailing edge per LED — ti serve un dimmer MOSFET, non un modulo TRIAC.
Regola pratica:
- Incandescenza / alogena / riscaldatore → qualsiasi dimmer TRIAC (leading edge)
- LED di qualità etichettato «TRIAC dimmable» → TRIAC (leading edge) funziona
- LED con instabilità / sfarfallio → trailing edge (modulo MOSFET)
Controllo tramite DimmerLink:
DimmerLink works with standard RBDimmer TRIAC modules (leading edge) over I2C or UART. When trailing edge is needed, DimmerLink also controls MOSFET modules.
Quando scegliere DimmerLink:
// DimmerLink via I2C — funziona con qualsiasi modulo collegato
// (TRIAC leading edge o MOSFET trailing edge — nessuna modifica al codice)
// Documentazione: 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 % luminosità
}
void loop() {}🔵 Avanzato: implementazione nel codice
Vuoi controllare l'angolo di fase da solo — ecco come funziona.
Entrambe le implementazioni usano un interrupt di passaggio per lo zero. L'unica differenza è la formula del ritardo prima dell'innesco.
Opzione A: Leading Edge su ESP32 con rbdimmerESP32 ✅ Consigliato
Quando: ESP32 dual-core + carichi resistivi o lampade LED di qualità compatibili TRIAC.
La libreria rbdimmerESP32 implementa il leading edge di default.
// Piattaforma: ESP32 dual-core
// Libreria: rbdimmerESP32 — leading edge, automatico
// Codice sorgente: 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); // Rete 50 Hz
dimmer.setPower(50); // 50 % potenza
}
void loop() {
// Transizione graduale
for (int p = 10; p <= 95; p++) {
dimmer.setPower(p);
delay(30);
}
for (int p = 95; p >= 10; p--) {
dimmer.setPower(p);
delay(30);
}
}Opzione B: Trailing Edge — Implementazione manuale su Arduino AVR
Quando: il leading edge causa problemi con i LED e devi passare al trailing edge senza cambiare il modulo (alcuni moduli MOSFET lo consentono in hardware).
// Piattaforma: Arduino Uno / Mega (solo AVR)
// Implementazione: trailing edge tramite controllo ISR manuale del passaggio per lo zero
// ATTENZIONE: funziona solo con moduli MOSFET — NON con TRIAC!
// Per ESP32 usa rbdimmerESP32 (leading edge)
#define ZC_PIN 2 // passaggio per lo zero — solo pin 2 o 3 su Uno
#define DIM_PIN 11 // pin di controllo gate MOSFET
volatile int brightness = 50; // 0–100 %
// Interrupt di passaggio per lo zero
void zeroCrossISR() {
// Trailing edge: aprire all'inizio, chiudere dopo (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); // aprire MOSFET immediatamente
delayMicroseconds(on_time); // mantenere aperto
digitalWrite(DIM_PIN, LOW); // chiudere MOSFET
}
void setup() {
pinMode(DIM_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(ZC_PIN),
zeroCrossISR, RISING);
}
void loop() {
brightness = 50; // 50 %
}Nota: delayMicroseconds() all'interno di un ISR blocca gli altri
interrupt. Per l'uso in produzione, sostituisci il ritardo con un timer
hardware. Questo esempio dimostra solo il principio.
⚠️ Errori comuni dai forum
Errori reali da 3 thread di forum (2019–2025).
-
«Sono passato al trailing edge nel codice — sfarfalla ancora»: Se hai un modulo TRIAC (non MOSFET), il trailing edge via software non fa nulla. Un TRIAC fisicamente non può fare trailing edge — ti serve un modulo MOSFET.
-
«Sono passato al trailing edge — la lampada è più fioca con lo stesso valore»: Questo è il comportamento atteso. Il trailing edge funziona con logica invertita rispetto al leading edge. Al 50 % in trailing edge ottieni una porzione del semiperiodo diversa dal 50 % in leading edge. Ricalibra il tuo range.
-
«Ho trovato una libreria che fa trailing edge sullo stesso modulo»: Se hai un modulo TRIAC standard (BTA16, BT139, BTA08) — nessuna libreria può passarlo al trailing edge. La fisica dell'hardware non lo consente.
-
«Utenti del forum riportano: passare dal codice leading edge RBDimmer al codice manuale trailing edge con passaggio per lo zero HA RISOLTO lo sfarfallio LED senza cambiare hardware» — questo funziona solo se avevano un modulo MOSFET, non un TRIAC.
Checklist rapida
Prima di pubblicare sul forum, verificare:
questo risolve l'80 % dei casi senza cambiare modulo
Tabella di compatibilità
| Metodo | Modulo | Carico | Funziona? | Note |
|---|---|---|---|---|
| Leading edge | TRIAC RBDimmer | Lampadina a incandescenza | ✅ | Eccellente |
| Leading edge | TRIAC RBDimmer | Alogena 230 V | ✅ | Eccellente |
| Leading edge | TRIAC RBDimmer | Riscaldatore | ✅ | Eccellente |
| Leading edge | TRIAC RBDimmer | Philips/Osram LED | ✅ | Lampada di qualità |
| Leading edge | TRIAC RBDimmer | LED noname economico | ⚠️ | Sfarfallio < 40 % |
| Trailing edge | MOSFET | Qualsiasi LED dimmerabile | ✅ | Miglior risultato |
| Trailing edge | TRIAC | Qualsiasi | ❌ | Impossibile in hardware |
Argomenti correlati
- LED Lamps with AC Dimmer: TRIAC vs MOSFET — Compatibility Guide
- LED Flickering with AC Dimmer: TRIAC or MOSFET — Causes and Fixes
Hai ancora domande?
Post on rbdimmer.com forum or open a GitHub Issue.