Passa al contenuto

Trailing Edge vs Leading Edge: quale metodo di dimmerizzazione scegliere

Dimmerizzazione con taglio di fase spiegata: perché il TRIAC (leading edge) causa sfarfallio LED a bassa luminosità, e quando il MOSFET (trailing edge) è la scelta hardware corretta.

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)

text
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)

text
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

c
// 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 µs



Soluzioni



🟢 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:

  • ☐ Raspberry Pi (nessun SO real-time per ISR)
  • ☐ ESP32-S2/C3/H2 (single-core — librerie software non supportate)
  • ☐ Vuoi controllare il dimmer da qualsiasi piattaforma senza scrivere codice ISR
  • cpp
    // 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.

    cpp
    // 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).

    cpp
    // 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:

  • ☐ Qual è il tuo modulo — TRIAC o MOSFET? (controlla la marcatura del chip)
  • ☐ TRIAC (BTA08, BTA16, BT139) — solo leading edge
  • ☐ MOSFET (IRLZ44N, IRF540) — supporta trailing edge
  • ☐ Il tuo carico è resistivo (incandescenza) o LED con driver elettronico?
  • ☐ Per LED con problemi: prova prima a sostituire la lampada con Philips/Osram —
  • 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



    Hai ancora domande?

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

    Condividi articolo
    Accedi per lasciare un commento