Réponse courte : Le leading edge est le variateur TRIAC standard — il connecte la charge dans la seconde moitié de chaque demi-période AC (idéal pour les ampoules à incandescence et les chauffages). Le trailing edge est un variateur MOSFET — il connecte la charge dès le début de chaque demi-période (mieux adapté aux lampes LED, moins de scintillement). La plupart des modules variateurs bon marché utilisent le leading edge.
Le problème
Votre variateur TRIAC fonctionne parfaitement avec une ampoule à incandescence ou un chauffage — mais remplacez par une lampe LED et les problèmes apparaissent : scintillement, instabilité, comportement erratique à faible luminosité.
C'est l'inadéquation classique entre la méthode de commande et le type de charge. Les variateurs TRIAC implémentent le leading edge — une méthode optimisée pour les charges résistives qui pose problème avec les drivers LED électroniques. Le trailing edge (MOSFET) résout ces problèmes.
Symptômes typiques d'inadéquation relevés sur les forums :
- « Les variateurs TRIAC leading edge ne donnent pas de bons résultats avec les ampoules LED dimmables » (Arduino Forum, 2024)
- « J'utilise des cartes TRIAC pour des lampes à incandescence et elles varient très bien. Mais avec des LED, elles ne fonctionnent pas correctement » (Arduino Forum, 2024)
- Scintillement LED en dessous de 30–50 % de luminosité qu'aucune modification du code ne peut corriger
- La lampe fonctionne parfaitement à 100 %, mais est instable en variation
Cause profonde
Les deux méthodes utilisent la commande de phase (contrôle d'angle de phase) : un TRIAC ou un transistor s'ouvre à un point précis de la demi-période AC et transmet une partie de la sinusoïde à la charge. La différence réside dans quelle partie de la demi-période atteint la charge.
Leading Edge (découpe de phase directe)
Sinusoïde : ╭─────╮ ╭─────╮
│ │ │ │
─────────────────╯ ╰────────╯ ╰────
Leading edge (50 % puissance) :
──╭───╮ ──╭───╮
│ │ │ │
───────────────────╯ ╰──────────╯ ╰────
↑ Le TRIAC s'amorce ici- Le TRIAC s'amorce au milieu de la demi-période
- La charge reçoit la seconde moitié de chaque demi-période
- Pic de tension caractéristique et brutal lors de l'amorçage du TRIAC
- Le standard industriel des variateurs résidentiels depuis 50 ans
Problème avec les LED : Le driver LED voit la tension passer brutalement de zéro à ~200–300 V. De nombreux drivers LED réagissent comme face à une perturbation électrique, déclenchent les circuits de protection et se comportent de façon erratique.
Trailing Edge (découpe de phase inverse)
Sinusoïde : ╭─────╮ ╭─────╮
│ │ │ │
─────────────────╯ ╰────────╯ ╰────
Trailing edge (50 % puissance) :
╭───╮ ╭───╮
│ │ │ │
─────────────────╯ ╰──────────╯ ╰──────
↑ Le transistor se coupe ici- Le MOSFET (transistor) s'ouvre au début de la demi-période et se ferme au milieu
- La charge reçoit la première moitié de chaque demi-période
- La tension monte progressivement depuis zéro en suivant la sinusoïde — pas de pic brutal
- Circuit plus complexe et plus coûteux, nécessite une commande plus sophistiquée
Avantage avec les LED : Le driver LED voit une tension qui monte progressivement depuis zéro — identique au début d'une demi-période normale, simplement raccourcie. La plupart des drivers LED traitent correctement cette forme d'onde.
Les mathématiques de la commande
// Leading edge : plus de délai = moins de puissance
delay_us = firing_angle; // délai plus grand = moins de puissance
// Trailing edge : plus de délai = plus de puissance
// (on ferme le transistor plus tôt)
delay_us = half_period - firing_angle; // délai plus grand = plus de puissance
// half_period :
// 50 Hz → 10 000 µs
// 60 Hz → 8 333 µsSolutions
🟢 Débutant : choisir le bon module
Vous ne voulez pas vous occuper des calculs d'angle de phase — choisissez le bon module et utilisez DimmerLink.
La plupart des modules TRIAC disponibles (y compris RBDimmer) utilisent le leading edge. C'est le standard — il fonctionne bien avec les charges résistives : ampoules à incandescence, halogènes, chauffages, fers à souder, rhéostats.
Si vous avez besoin du trailing edge pour les LED — il vous faut un variateur MOSFET, pas un module TRIAC.
Règle pratique :
- Incandescence / halogène / chauffage → n'importe quel variateur TRIAC (leading edge)
- LED de qualité marquée « TRIAC dimmable » → TRIAC (leading edge) fonctionne
- LED avec instabilité / scintillement → trailing edge (module MOSFET)
Commande via DimmerLink :
❌ non supporté works with standard RBDimmer TRIAC modules (leading edge) over I2C or UART. When trailing edge is needed, DimmerLink also controls MOSFET modules.
Quand choisir DimmerLink :
// DimmerLink via I2C — fonctionne avec tout module connecté
// (TRIAC leading edge ou MOSFET trailing edge — aucune modification de code)
// Documentation : 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 luminosité
}
void loop() {}🔵 Avancé : implémentation dans le code
Vous voulez contrôler l'angle de phase vous-même — voici comment ça fonctionne.
Les deux implémentations utilisent une interruption de passage par zéro. La seule différence est la formule de délai avant l'amorçage.
Option A : Leading Edge sur ESP32 avec rbdimmerESP32 ✅ Recommandé
Quand : ESP32 double cœur + charges résistives ou lampes LED de qualité compatibles TRIAC.
La bibliothèque rbdimmerESP32 implémente le leading edge par défaut.
// Plateforme : ESP32 double cœur
// Bibliothèque : rbdimmerESP32 — leading edge, automatique
// Code source : 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); // Réseau 50 Hz
dimmer.setPower(50); // 50 % de puissance
}
void loop() {
// Transition progressive
for (int p = 10; p <= 95; p++) {
dimmer.setPower(p);
delay(30);
}
for (int p = 95; p >= 10; p--) {
dimmer.setPower(p);
delay(30);
}
}Option B : Trailing Edge — Implémentation manuelle sur Arduino AVR
Quand : le leading edge pose des problèmes avec les LED et vous devez passer au trailing edge sans changer de module (certains modules MOSFET le permettent en hardware).
// Plateforme : Arduino Uno / Mega (AVR uniquement)
// Implémentation : trailing edge via contrôle ISR manuel du passage par zéro
// ATTENTION : fonctionne uniquement avec les modules MOSFET — PAS avec TRIAC !
// Pour ESP32, utilisez rbdimmerESP32 (leading edge)
#define ZC_PIN 2 // passage par zéro — pins 2 ou 3 uniquement sur Uno
#define DIM_PIN 11 // pin de commande du gate MOSFET
volatile int brightness = 50; // 0–100 %
// Interruption de passage par zéro
void zeroCrossISR() {
// Trailing edge : ouvrir au début, fermer après (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); // ouvrir le MOSFET immédiatement
delayMicroseconds(on_time); // maintenir ouvert
digitalWrite(DIM_PIN, LOW); // fermer le MOSFET
}
void setup() {
pinMode(DIM_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(ZC_PIN),
zeroCrossISR, RISING);
}
void loop() {
brightness = 50; // 50 %
}Remarque : delayMicroseconds() à l'intérieur d'une ISR bloque les
autres interruptions. Pour un usage en production, remplacez le délai par
un timer matériel. Cet exemple ne démontre que le principe.
⚠️ Erreurs courantes des forums
Vraies erreurs issues de 3 fils de discussion (2019–2025).
-
« Passé au trailing edge dans le code — ça scintille toujours » : Si vous avez un module TRIAC (pas MOSFET), le trailing edge logiciel ne change rien. Un TRIAC ne peut physiquement pas faire du trailing edge — il vous faut un module MOSFET.
-
« Passé au trailing edge — la lampe est plus sombre à la même valeur » : C'est normal. Le trailing edge fonctionne avec une logique inversée par rapport au leading edge. À 50 % en trailing edge, vous obtenez une portion de demi-période différente de celle à 50 % en leading edge. Recalibrez votre plage.
-
« Trouvé une bibliothèque qui fait du trailing edge sur le même module » : Si vous avez un module TRIAC standard (BTA16, BT139, BTA08) — aucune bibliothèque ne peut le passer en trailing edge. La physique du composant ne le permet pas.
-
**« Des utilisateurs du forum rapportent : passer du code leading edge RBDimmer au code trailing edge manuel avec passage par zéro A RÉSOLU le scintillement LED sans changer le matériel » ** — cela ne fonctionne que s'ils avaient un module MOSFET, pas un TRIAC.
Checklist rapide
Avant de poster sur le forum, vérifiez :
cela résout 80 % des cas sans changer de module
Tableau de compatibilité
| Méthode | Module | Charge | Fonctionne ? | Remarques |
|---|---|---|---|---|
| Leading edge | TRIAC RBDimmer | Ampoule à incandescence | ✅ | Excellent |
| Leading edge | TRIAC RBDimmer | Halogène 230 V | ✅ | Excellent |
| Leading edge | TRIAC RBDimmer | Chauffage | ✅ | Excellent |
| Leading edge | TRIAC RBDimmer | Philips/Osram LED | ✅ | Lampe de qualité |
| Leading edge | TRIAC RBDimmer | LED noname bon marché | ⚠️ | Scintillement < 40 % |
| Trailing edge | MOSFET | Toute LED dimmable | ✅ | Meilleur résultat |
| Trailing edge | TRIAC | Toutes | ❌ | Impossible en hardware |
Sujets connexes
- LED Lamps with AC Dimmer: TRIAC vs MOSFET — Compatibility Guide
- LED Flickering with AC Dimmer: TRIAC or MOSFET — Causes and Fixes
Des questions ?
Post on rbdimmer.com forum or open a GitHub Issue.