Zum Inhalt springen

How to Fix ESP32 AC Dimmer Flickering. Guide

ESP32 TRIAC dimmer flickers? Learn why it happens and 2 proven solutions: software (rbdimmerESP32.h) vs hardware (DimmerLink module).
10. Februar 2026 durch
How to Fix ESP32 AC Dimmer Flickering. Guide
Administrator
| Noch keine Kommentare

Wenn Sie einen AC-Dimmer mit einem TRIAC bauen, haben Sie wahrscheinlich Flackern, instabile Helligkeit oder zufällige Sprünge der Lichtintensität bemerkt.

Die meisten DIY-Entwickler vermuten als Ursache:

  • minderwertige Dimmer-Hardware
  • defekter TRIAC oder Optokoppler
  • Probleme mit dem PCB-Layout

Aber in den meisten realen Projekten ist die Dimmer-Hardware nicht das Problem.

Die eigentliche Ursache ist die Timing-Genauigkeit in der Firmware, insbesondere auf ESP8266 und ESP32.

Diese Anleitung erklärt:

  • warum TRIAC-Dimmer flackern
  • warum ESP32 das Problem verschärft
  • wie Sie Flackern per Software beheben
  • warum dedizierte Hardware-Steuerung die zuverlässigste Lösung ist


Wie ein AC TRIAC-Dimmer funktioniert

Ein TRIAC-Dimmer reduziert die Spannung nicht gleichmäßig.

Er steuert, wann der TRIAC während jeder AC-Halbwelle einschaltet.

Ablauf:

  1. Die AC-Wellenform durchquert den Nullpunkt (Nulldurchgangs-Ereignis)

2. Der MCU wartet eine präzise Verzögerung ab (Phasenwinkel)

3. Der MCU sendet einen kurzen Gate-Impuls an den TRIAC

4. Der TRIAC leitet bis zum nächsten Nulldurchgang

Die Helligkeit hängt vollständig von der Timing-Genauigkeit im Mikrosekundenbereich ab.

For a deep technical explanation, read:  https://www.rbdimmer.com/blog/diy-insights-1/ac-dimmer-based-on-zero-cross-detector-and-triac-operating-principles-and-applications-5


Warum Timing entscheidend ist (in Zahlen)

AC-Dimmen ist Echtzeitsteuerung. Hier die konkreten Zahlen:

  • AC-Frequenz: 50 Hz (60 Hz) → Nulldurchgang alle 10 ms
  • Erforderliche TRIAC-Zündgenauigkeit: ±50 µs für stabile Helligkeit
  • Wi-Fi-Interrupt-Blockierung auf ESP32: 200–500 µs
  • Ergebnis: sichtbares Flackern selbst bei moderater CPU-Last

💡 Das bedeutet: Wi-Fi kann das TRIAC-Timing um das 10-Fache der zulässigen Fehlertoleranz stören.


Warum Flackern in ESP8266- / ESP32-Projekten auftritt

ESP-Chips sind leistungsfähig, aber standardmäßig nicht echtzeitfähig.

Sie führen aus:

  • Wi-Fi- / BLE-Stacks
  • Flash-Speicherzugriffe (oft blockierend)
  • RTOS-Scheduling (ESP32)
  • Hintergrund-Systemaufgaben

Wenn der Dimmer-Timing-Code mit diesen Aufgaben konkurriert:

  • werden Nulldurchgangs-Interrupts verzögert
  • verschieben sich die TRIAC-Gate-Impulse
  • wird die Helligkeit instabil

Das wird schlimmer, wenn:

  • MQTT / OTA / Web-UI aktiv ist
  • Logging aktiviert ist
  • mehrere Dimmerkanäle verwendet werden

Häufige Anfängerfehler

Beliebte Arduino- / ESPHome- / Tasmota-Beispiele verwenden oft:

  • delay() nach dem Nulldurchgang
  • Timing-Logik in nicht-deterministischen Callbacks
  • blockierende Funktionsaufrufe innerhalb von ISR
  • Flash-Speicherzugriffe in zeitkritischem Code

Sie funktionieren in Demos, versagen aber in realen Produkten.


Solution 1 — Software-Based: rbdimmerESP32.h

Für ESP32-Dual-Core-Chips lässt sich Flackern per Software beheben, wenn es richtig gemacht wird.

What rbdimmerESP32.h Does

rbdimmerESP32.h wurde für deterministische TRIAC-Steuerung entwickelt:

  • Hardware-Timer (keine Software-Verzögerungen)
  • ISR-Code im IRAM gespeichert (keine Flash-Blockierungen)
  • Kerntrennung: Echtzeit vs. Wi-Fi
  • FreeRTOS-sichere Architektur

Repo: 👉 https://github.com/robotdyn-dimmer/rbdimmerESP32


Wichtige technische Details — IRAM (Instruction RAM)

ESP32 führt Code normalerweise aus dem Flash aus.

Flash-Zugriffe können die CPU für Hunderte von Mikrosekunden blockieren.

Lösung:

Platzieren Sie zeitkritischen Code im IRAM mit:

IRAM_ATTR void zeroCrossISR() {
  // ultra-fast ISR code
}

Hardware-Timer

Verwenden Sie niemals delay() oder millis() für das TRIAC-Timing.

Nutzen Sie Hardware-Timer des ESP32 für Mikrosekunden-Präzision.


Dual-Core-Strategie

  • Core 0: Dimmer-Timing (Echtzeit)
  • Core 1: Wi-Fi, MQTT, UI, Logging

Diese Trennung verhindert Flackern.


Wann die Software-Lösung sinnvoll ist

✅ Nur ESP32

✅ Sie verstehen Interrupts und RTOS

✅ Sie benötigen volle Firmware-Kontrolle

⚠️ Erfordert sorgfältige Architektur


RICHTIG ✅

  • Verwenden Sie ESP32-Hardware-Timer für die TRIAC-Steuerung
  • Halten Sie den ISR-Code unter 10 µs
  • Führen Sie Dimming auf Core 0, Wi-Fi auf Core 1 aus
  • Speichern Sie zeitkritischen Code im IRAM


FALSCH ❌

  • Rufen Sie niemals Serial.print() aus ISR auf
  • Greifen Sie nicht auf Flash in zeitkritischem Code zu
  • Vermeiden Sie delay() in der Nähe der Nulldurchgangs-Logik
  • Vermischen Sie nicht Dimming- und Netzwerk-Aufgaben

Solution 2 — Hardware-Based: Jeder ESP32 (Recommended)

Der zuverlässigste Weg, Flackern zu beseitigen, ist das TRIAC-Timing aus dem Haupt-MCU auszulagern.

What Is Jeder ESP32

DimmerLink ist ein dediziertes Dimmer-Controller-Modul:

  • erkennt den Nulldurchgang
  • erzeugt TRIAC-Impulse intern
  • garantiert stabiles Timing
  • kommuniziert über UART / I²C

Docs: 👉 https://github.com/robotdyn-dimmer/DimmerLink


Warum DimmerLink Flackern beseitigt

  • Wi-Fi kann die TRIAC-Zündung nicht verzögern
  • MCU-Timing-Fehler beeinflussen das Dimmen nicht
  • Flash-Blockierungen sind irrelevant
  • Skalierung auf mehrere Kanäle ist trivial

Ihr MCU sendet einfach serielle (UART) Befehle wie:

Example: 02 53 00 32  → Set dimmer 0 to 50%
Response: 00          → OK
STUFEHelligkeit
0x00 (0)0% — aus
0x32 (50)50%
0x64 (100)100% — volle Helligkeit

Vergleich Software vs. Hardware

KriteriumrbdimmerESP32.hDimmerLink
Kosten (BOM)$0$1.5
StromverbrauchWie MCU+10 mA
PCB-Platzbedarf0 (Software)~1×2 cm
Zertifizierung (CE/UL)Nur DIYNur DIY
ESP8266-Unterstützung✔️
ESP32-Unterstützung✔️✔️

Raspberry Pi/Orange Pi..

✔️

Mehrere Dimmer⚠️ komplex✔️ einfach
Anfängerfreundlich✔️
Produktionsreif⚠️✔️

Entscheidungsbaum: Welche Lösung ist die richtige für mich?


Verwenden Sie ESP8266?

  • Verwenden Sie DimmerLink

Verwenden Sie ESP32 und möchten volle Kontrolle?

  • Verwenden Sie rbdimmerESP32

Brauchen Sie mehrere Dimmer und absolute Stabilität?

  • Verwenden Sie DimmerLink

Entwickeln Sie ein kommerzielles Produkt?

  • Verwenden Sie DimmerLink

Experimentieren Sie und lernen Sie Echtzeit-Programmierung?

  • Verwenden Sie rbdimmerESP32
 


Fazit

TRIAC-Dimmen dreht sich nicht um Spannung — es geht um Mikrosekunden-Timing.

Wi-Fi ist nicht echtzeitfähig.

Verzögerungen sind gefährlich.

Flash ist unvorhersehbar.

If you want stable light and zero flicker, isolate timing or move it to dedicated hardware - Jeder ESP32.




Diesen Beitrag teilen
Anmelden , um einen Kommentar zu hinterlassen