Wie wurde der ESP32 programmiert und wie funktioniert die Regelung?

Die Steuerung der Klimakammer basiert auf einem ESP32-Mikrocontroller, der über verschiedene Sensoren und Aktoren kommuniziert. Die Software wurde mit der Arduino-IDE geschrieben und ist in C++ realisiert. Der Aufbau ist modular: Initialisierung, Temperaturmessung, PID-Regelung, MQTT-Kommunikation, Benutzerinteraktion und Anzeige sind klar getrennt. Dadurch ist der Code gut wartbar, erweiterbar und leicht verständlich.

In diesem Abschnitt werden nur die wichtigsten Codefragmente beschrieben und abgebildet, um die grundlegende Funktionsweise und Logik verständlich zu machen.
Der vollständige Quellcode ist am Ende dieser Seite verlinkt und kann dort vollständig eingesehen werden.

1. Einbindung der Bibliotheken und Pin-Definitionen

Zu Beginn werden alle benötigten Bibliotheken eingebunden. Diese ermöglichen die Ansteuerung des TFT-Displays, die Kommunikation mit dem HTU21-Temperatursensor per I2C, WLAN-Verbindung und MQTT-Kommunikation zur Datenübertragung. Zusätzlich werden alle verwendeten Pins als Makros definiert.

2. Globale Variablen & PID-Konstanten

Es folgen Variablen zur Speicherung aller Betriebswerte wie Temperatur, Luftfeuchtigkeit, PWM-Ausgänge sowie PID-Zwischenergebnisse. Auch die Regelgrenzen und Zeitintervalle werden definiert. Diese Trennung macht den Code lesbarer und ermöglicht ein schnelles Tuning bei Bedarf.

3. Initialisierung der Komponenten

Im setup()-Block erfolgt die Initialisierung aller Systemkomponenten. Die I2C-Kommunikation, das TFT-Display, Sensoren, PWM-Kanäle sowie WiFi und MQTT werden gestartet. Außerdem wird ein Startbildschirm angezeigt und eine erste Temperaturmessung durchgeführt.

4. Netzwerkverbindung

Die Funktion setup_wifi() baut eine WPA2-Enterprise-Verbindung zum WLAN auf. Diese wird benötigt, um MQTT-Nachrichten über das interne Netzwerk zu senden.

5. Hauptlogik des Programms

Die loop()-Funktion wird kontinuierlich aufgerufen und enthält den Hauptablauf: Temperaturmessung, PID-Berechnung, Tastensteuerung, MQTT-Kommunikation und Displayaktualisierung. Alles ist über Zeitintervalle gesteuert, um eine gleichmäßige Systemlast zu gewährleisten.

6. Messung von Temperatur & Feuchtigkeit

Diese Funktion liest Temperatur und Luftfeuchtigkeit vom Sensor. Bei fehlerhaften Werten wird die Messung verworfen. So wird sichergestellt, dass nur valide Daten in die Regelung einfließen.

7. Bedienung über Taster

Die Taster erlauben eine stufenweise Erhöhung oder Senkung der Solltemperatur. Die Werte sind begrenzt und der PID-Integrator wird nach jeder Änderung zurückgesetzt, um sofort neu zu regeln.

8. Reglerlogik

Hier findet die eigentliche Berechnung des PID-Reglers statt. Die Abweichung wird in drei Anteile aufgeteilt: proportional, integral und differential. Anti-Windup begrenzt den Integrator. Das Ergebnis ist ein Wert zwischen -255 und +255.

9. PWM-Ausgabe

Basierend auf dem PID-Output wird entschieden, ob geheizt oder gekühlt wird. Auch Mindestleistungen für Heizung und Lüfter sind eingebaut, damit die Aktoren nicht ständig ein- und ausschalten.

10. Anzeige aktualisieren

Diese Funktion zeigt die wichtigsten Werte auf dem TFT-Display an: Temperatur, Luftfeuchtigkeit, Regelstatus, Sollwert, PID-Anteile und Betriebsmodus (Heizen/Kühlen).

Der vollständige und kommentierte Quellcode steht als Datei zur Verfügung und kann über den folgenden Link eingesehen werden:

Datei: Vollständiger Quellcode





Last modified: Thursday, 26 June 2025, 12:36 PM