Zum Inhalt springen

Änderungsprotokoll

Alle wichtigen Änderungen an der rbdimmerESP32-Bibliothek werden in dieser Datei dokumentiert.

Das Format basiert auf Keep a Changelogund dieses Projekt folgt der semantischen Versionierung.

[2.0.0] - 2026-03-23

Übersicht

Vollständige Neuarchitektur. Die monolithische Implementierung mit einer einzelnen Datei wurde durch eine vollständig modulare interne Architektur ersetzt. Alle zeitkritischen Pfade verwenden jetzt IRAM_ATTR-Platzierung und ESP_TIMER_ISR-Verteilung. Die Hardwarevalidierung auf einer 4-Kanal-Platine enthüllte und behob drei unabhängige Flackerprobleme, die in der Simulation nicht reproduzierbar waren.

Inkompatible Änderungen

  • Das interne Quelllayout hat sich von einer einzelnen rbdimmerESP32.cpp zu src/internal/-Modulen geändert. Die direkte Einbeziehung von internen Headern wird nicht mehr unterstützt.
  • Beispiele wurden von flachen .ino/.c-Dateien in Verzeichnisse pro Sketch umstrukturiert (erforderlich für Arduino IDE 2.x-Bibliotheksverwaltung).
  • Kconfig.txt wurde entfernt – die ESP-IDF-Komponentenkonfiguration verwendet jetzt den Standard-Dateinamen Kconfig. Projekte, die auf Kconfig.txt verwiesen, müssen aktualisiert werden.
  • Public-Header-API (rbdimmerESP32.h) ist unverändert – Benutzercode muss nicht geändert werden.

Hinzugefügt

  • Modulare Architektur – Implementierung in sieben interne Module aufgeteilt:
  • rbdimmer_zerocross – ZC-GPIO-ISR, Frequenzmessung, Rauschgatter
  • rbdimmer_channel – Kanalzustand, ZC-Phaseneverteilung, zweistufige ISR
  • rbdimmer_timer – esp_timer-create/start/stop-Wrapper
  • rbdimmer_curves – Level-zu-Verzögerung-Umwandlung (LINEAR, RMS, LOG)
  • rbdimmer_transition – FreeRTOS-Aufgaben-basierter sanfter Übergang
  • rbdimmer_types – Gemeinsame Structs und Enums
  • rbdimmer_hal – GPIO/Timer-HAL-Abschnitte für Arduino/ESP-IDF-Portabilität
  • Kconfig-Parameter zur ESP-IDF-Optimierung:
  • CONFIG_RBDIMMER_ZC_DEBOUNCE_US (Standard 3000 µs) – Rauschgatter-Fenster
  • CONFIG_RBDIMMER_MIN_DELAY_US (Standard 100 µs) – minimale ZC→TRIAC-Verzögerung
  • CONFIG_RBDIMMER_LEVEL_MIN (Standard 3%) – Level darunter → AUS
  • CONFIG_RBDIMMER_LEVEL_MAX (Standard 99%) – Level darüber → begrenzt
  • CI-Build-Matrix (.github/workflows/build.yml):
  • Arduino: arduino/compile-sketches@v1, Core 3.x, 4 Beispiele × 5 Chips (ESP32, S2, S3, C3, C6)
  • ESP-IDF: espressif/esp-idf-ci-action@v1, IDF v5.3 / v5.4 / v5.5 × 5 Chips = 15 Jobs
  • test_app/ – minimales ESP-IDF-Projekt zur Kompilierzeit-API-Oberflächenvalidierung

Behoben

  • Allgemeines Flackern bei allen Helligkeitsstufen – TRIAC-Schaltspike hat ZC-ISR in der Mitte des Halbzyklus erneut ausgelöst. Rauschgatter hinzugefügt: Jede ZC-Flanke innerhalb von ZC_DEBOUNCE_US (3000 µs) der vorherigen gültigen Flanke wird verworfen.
  • Flackern bei 100 % Helligkeit – Bei 50 µs Verzögerung lag die AC-Spannung (~5V) unter der TRIAC-Verriegelungsschwelle; außerdem machte die esp_timer-ISR-Verteilung von GPIO-ISR auf Ebene 3 Verzögerungen unter 100 µs unvorhersehbar. MIN_DELAY_US wurde von 50 → 100 µs erhöht; Level ≥ 100 % wurden auf LEVEL_MAX (99 %) abgebildet.
  • Multi-Kanal-Synchronisierung – pro-Kanal-Phasenverschoberungen, verursacht durch sequenzielles GPIO-Reset + Timer-Arm in einer Schleife. Zweistufige ISR: Durchgang 1 setzt alle GPIOs auf LOW, Durchgang 2 aktiviert alle Verzögerungstimer.
  • Flackern bei Pegeln unter 3 % – AC-Spannung zu niedrig für zuverlässiges TRIAC-Verriegeln nahe Ende des Halbzyklus. Level unter LEVEL_MIN (3 %) geben Verzögerung = 0 zurück (Kanal AUS).

Geändert

  • Alle ISR-Handler verwenden jetzt IRAM_ATTR-Platzierung
  • Timer-Versand geändert zu ESP_TIMER_ISR für minimales Jitter
  • Minimal unterstützte ESP-IDF-Version: 5.3 (war 4.4)
  • Arduino ESP32-Kern mindestens: 3.x (war 2.0.0)

[1.0.0] - 2024-01-01

Hinzugefügt

  • Initiale Veröffentlichung
  • Implementierung mit einer Datei
  • Unterstützung für ESP32, ESP32-S2, ESP32-S3, ESP32-C3
  • Drei Helligkeitskurven: LINEAR, RMS, LOGARITHMIC
  • Multi-Kanal- und Multi-Phasen-Unterstützung
  • Sanfte Übergänge über FreeRTOS-Aufgaben
  • Arduino IDE- und ESP-IDF-Unterstützung