PID-Regler auf dem Mikrocontroller implementieren ist ein Klassiker in der Regelungstechnik – und gleichzeitig eines der spannendsten Themen für Maker, Robotik- und IoT-Projekte. Sobald Sie eine Größe nicht nur „ein/aus“ steuern, sondern stabil auf einem Zielwert halten möchten, kommen Sie an PID kaum vorbei: Motordrehzahl konstant halten, Temperatur eines Heizelements präzise regeln, Position eines Servos oder Linearantriebs stabilisieren, die Helligkeit einer LED mit konstantem Lux-Wert führen oder den Füllstand in einem Behälter kontrollieren. Ein PID-Regler (Proportional–Integral–Differential) ist dafür beliebt, weil er vergleichsweise einfach zu verstehen, flexibel einstellbar und in sehr vielen praktischen Systemen bewährt ist. Auf Mikrocontrollern entstehen jedoch zusätzliche Herausforderungen: begrenzte Rechenleistung, Messrauschen, ungleichmäßige Abtastzeiten, PWM-Auflösung, Sättigungen, Energie- und Timing-Fragen sowie der Umgang mit Sensor- und Aktuator-Eigenheiten. Dieser Artikel erklärt Ihnen Schritt für Schritt, wie ein PID-Regler funktioniert, welche Fehlerbilder typisch sind (Schwingen, Überschwingen, Drift), wie Sie den Regler sauber in Code abbilden, wie Sie Sampling und Timer richtig wählen, wie Sie „Integral Windup“ vermeiden und wie Sie den Regler praxistauglich abstimmen – ohne sich in Theorie zu verlieren.
Was ist ein PID-Regler? Kurz, aber praxisorientiert
Ein PID-Regler berechnet aus der Abweichung zwischen Sollwert (Setpoint) und Istwert (Messwert) ein Stellsignal für den Aktuator (z. B. PWM für Motor oder Heizleistung). Die Abweichung heißt Fehler e(t). Der Regler setzt sich aus drei Anteilen zusammen, die zusammen das Stellglied beeinflussen:
- P-Anteil (Proportional): reagiert direkt auf den aktuellen Fehler, sorgt für „Kraft“ und schnelle Reaktion
- I-Anteil (Integral): summiert Fehler über die Zeit, beseitigt bleibende Regelabweichung
- D-Anteil (Differential): reagiert auf die Änderungsgeschwindigkeit des Fehlers, wirkt dämpfend und reduziert Überschwingen
In vielen Maker-Projekten ist PID attraktiv, weil Sie mit wenigen Parametern sehr unterschiedliche Systeme stabil regeln können. Eine grundlegende Einordnung finden Sie unter PID-Regler.
Wann PID sinnvoll ist – und wann nicht
PID ist kein „Automatik-Knopf“. Es ist besonders sinnvoll für Systeme, die kontinuierlich beeinflussbar sind und bei denen eine Rückmeldung (Sensor) vorhanden ist. Für sehr träge Systeme oder einfache Schaltaufgaben reicht manchmal schon ein P-Regler oder ein Zweipunktregler mit Hysterese. Für hochkomplexe Systeme kann PID an Grenzen stoßen, wenn starke Nichtlinearitäten, Totzeiten oder Sättigungen dominieren.
- Gute PID-Anwendungsfälle: Motorregelung, Temperaturregelung, Position/Folge, Durchfluss, Druck
- Weniger geeignet: reine Ein/Aus-Aufgaben ohne fein dosierbaren Aktuator
- Alternativen: Zweipunktregelung, PI-Regler, Feedforward, Zustandsregler (fortgeschritten)
Faustregel: Wenn Sie einen Sollwert „halten“ wollen, ist PID oft ein Kandidat
Wenn Ihr System einen Zielwert stabil erreichen und halten soll – trotz Störungen (Lastwechsel, Umgebungseinfluss) – ist ein PID-Regler häufig die richtige Werkzeugwahl.
Die Herausforderung auf Mikrocontrollern: Diskrete Regelung statt kontinuierliche Theorie
In Lehrbüchern ist PID oft als kontinuierliche Formel dargestellt. Auf dem Mikrocontroller rechnen Sie aber in diskreten Zeitschritten: Sie messen in festen Abständen, berechnen den Stellwert und geben ihn aus. Das nennt man diskrete Regelung. Entscheidend ist die Abtastzeit dt (Sample Time). Wenn dt schwankt oder zu groß ist, wird der Regler instabil oder ungenau. Deshalb sollten Sie die Regelberechnung zeitlich sauber takten – idealerweise über einen Timer oder eine nicht-blockierende Zeitlogik.
- Sampling: Messung und Regelberechnung in festen Intervallen
- Determinismus: konstantes dt macht den Regler berechenbar
- Rauschen: Sensorrauschen beeinflusst besonders den D-Anteil
- Sättigung: Aktuator hat Grenzen (0–255 PWM, 0–100% Leistung)
Die häufigste Fehlerquelle: Der Regler läuft in der loop() „wann immer Zeit ist“
Wenn die loop() mal 1 ms dauert und mal 50 ms (z. B. wegen WLAN oder Serial-Ausgaben), dann ist dt nicht konstant. Ein PID, der so betrieben wird, kann plötzlich schwingen oder träge werden. Stabil wird es, wenn Sie die Regelung an ein festes Raster binden.
Die Bausteine einer sauberen Implementierung
Für einen funktionierenden PID-Regler brauchen Sie nicht viel – aber das Wenige muss korrekt sein: Messwert, Sollwert, Fehler, P/I/D-Berechnung, Begrenzung (Clamping) und eine definierte Abtastzeit. Außerdem sollten Sie Stellgrößen immer in sinnvollen Einheiten behandeln: z. B. Temperatur in °C, Drehzahl in RPM, PWM in Prozent.
- Input: gemessener Istwert (z. B. Temperatur, RPM)
- Setpoint: gewünschter Zielwert
- Error: Setpoint − Input
- Output: Stellwert (z. B. PWM 0–255 oder 0–100%)
- Sample Time: feste Regelperiode (z. B. 10 ms, 100 ms)
P-Anteil: Schnell, aber allein oft nicht perfekt
Der P-Anteil ist der direkteste Teil: Je größer der Fehler, desto stärker die Korrektur. Das sorgt für schnelle Reaktionen. Allerdings bleibt bei einem reinen P-Regler oft eine bleibende Regelabweichung (Offset), insbesondere wenn das System eine konstante Gegenkraft hat (z. B. Reibung, Wärmeverluste). Außerdem kann ein zu hoher P-Wert zu Schwingen führen.
- Vorteil: schnelle Reaktion, einfach zu verstehen
- Nachteil: Offset möglich, Schwingen bei zu großem Kp
- Praxis: Kp zuerst grob finden, dann I/D ergänzen
I-Anteil: Offset eliminieren – aber Vorsicht vor „Integral Windup“
Der I-Anteil summiert den Fehler über Zeit auf und beseitigt damit bleibende Abweichungen. Das ist wichtig bei Temperaturregelungen oder Motorregelungen unter Last. Gleichzeitig ist der I-Anteil der häufigste Grund für instabile Systeme, wenn er unkontrolliert anwächst. Das passiert besonders bei Sättigung: Wenn Ihr Output schon am Maximum ist, der Fehler aber weiterhin positiv bleibt, wächst das Integral weiter, obwohl der Aktuator nicht stärker werden kann. Wenn das System dann später „aufholt“, überschießt es massiv. Dieses Problem heißt Integral Windup.
- Vorteil: beseitigt statische Abweichung
- Risiko: Windup bei Sättigung oder langen Störungen
- Lösung: Anti-Windup (Clamping, Back-calculation, Integrator-Limits)
Anti-Windup in der Praxis: Integrator begrenzen
Ein robustes Muster ist, den Integralterm in Grenzen zu halten und ihn nur dann wachsen zu lassen, wenn der Output nicht gesättigt ist oder wenn der Fehler in Richtung „Entsättigung“ wirkt. So bleibt das System kontrollierbar.
D-Anteil: Dämpfung, aber sensibel gegenüber Rauschen
Der D-Anteil betrachtet, wie schnell sich der Fehler ändert. Das wirkt wie eine Dämpfung: Wenn der Fehler schnell kleiner wird, bremst D die Stellgröße, um Überschwingen zu reduzieren. Auf Mikrocontrollern ist D jedoch heikel, weil er Rauschen verstärken kann. Wenn der Messwert „zittert“, sieht D eine schnelle Änderung und erzeugt unruhige Stellwerte. Daher wird D oft gefiltert oder auf die Messwertänderung statt auf die Fehleränderung berechnet.
- Vorteil: reduziert Überschwingen, stabilisiert
- Nachteil: verstärkt Messrauschen, kann Output „zittern“ lassen
- Praxis: D klein halten, ggf. Low-Pass-Filter nutzen
D auf Messwert statt Fehler: Der praktische Trick
Viele Implementierungen verwenden den D-Anteil auf Basis der Änderung des Eingangs (Istwert) statt des Fehlers. Das reduziert sprunghafte Reaktionen bei Sollwertänderungen („Derivative Kick“) und macht das Verhalten oft ruhiger.
Abtastzeit und Timer: Das Fundament für stabile Regelung
Die Abtastzeit bestimmt, wie oft der Regler rechnet. Für schnelle Systeme (Motor/Encoder) sind oft 1–10 ms sinnvoll, für träge Systeme (Temperatur) eher 100–1000 ms. Wichtig ist nicht nur die „richtige“ Größe, sondern die Konstanz. Wenn Sie kein RTOS nutzen, erreichen Sie das mit einer Zeitprüfung über millis()/micros() oder mit einem Timer-Interrupt, der ein Flag setzt. Die Regelberechnung selbst sollte im Hauptcode laufen, nicht in einer langen ISR.
- Schnelle Regelung: kurze Sample Time, höhere Anforderungen an Sensor und Output
- Träge Regelung: längere Sample Time, weniger Rauschen, weniger CPU-Last
- Konstanz: dt stabil halten, sonst verändert sich effektive Verstärkung
- Non-blocking: keine delay()-Wartezeiten im Regelpfad
Output-Begrenzung: PWM, DAC und Stellbereich sauber definieren
Ein Regler kann theoretisch jede Stellgröße ausgeben. Ihr Aktuator kann das nicht. PWM hat z. B. einen Bereich von 0–255 oder 0–1023, Heizleistung oft 0–100%. Sie sollten Output klar begrenzen und die Begrenzung in die Integrationslogik einbeziehen (Anti-Windup). Außerdem ist die Auflösung relevant: Wenn die PWM-Auflösung grob ist, wirkt die Regelung „stufig“. Das kann bei langsamen Systemen ok sein, bei feinen Regelungen jedoch stören.
- Clamping: Output min/max definieren
- Skalierung: Output in Prozent oder physikalischer Einheit behandeln
- PWM-Frequenz: passend zum Aktuator (Motor, Heizelement, LED)
- Auflösung: genug Stufen für ruhige Regelung
Heizung vs. Motor: Unterschiedliche Anforderungen
Bei Heizungen ist die thermische Trägheit groß, stufige PWM ist oft unkritisch. Bei Motoren kann eine ungünstige PWM-Frequenz hörbar sein oder Drehmoment-Ripple erzeugen. Der Regler ist nur so gut wie der Aktuatorpfad.
Sensoren und Filter: Ein PID regelt nur so gut wie er misst
Ein PID-Regler hängt an einem Messsignal. Wenn das Signal verrauscht, verzögert oder falsch skaliert ist, wird die Regelung instabil oder unpräzise. Besonders der D-Anteil reagiert empfindlich. In der Praxis hilft oft eine einfache Glättung: gleitender Mittelwert, exponentielle Glättung (Low-Pass) oder Medianfilter bei Ausreißern. Wichtig ist, nicht „zu viel“ zu filtern, sonst erhöhen Sie die Verzögerung und machen das System träge.
- Rauschen reduzieren: einfache Filter stabilisieren den D-Anteil
- Ausreißer behandeln: Sensorfehler erkennen und abfangen
- Skalierung prüfen: Einheiten und Offsets müssen stimmen
- Latenz beachten: Filter erhöhen Verzögerung und beeinflussen Tuning
PID-Parameter abstimmen: Praktische Vorgehensweisen
Das Tuning der Parameter Kp, Ki, Kd ist der Teil, der viele Projekte scheitern lässt – nicht weil es „magisch“ ist, sondern weil ohne Systematik planlos Werte geraten werden. Ein praktischer Einstieg ist ein schrittweises Vorgehen: Erst Kp einstellen, dann Ki, dann Kd. Beginnen Sie mit Ki und Kd bei 0. Erhöhen Sie Kp, bis das System schnell reagiert, aber gerade noch nicht dauerhaft schwingt. Danach fügen Sie Ki hinzu, um die Regelabweichung zu eliminieren. Zum Schluss nutzen Sie Kd, um Überschwingen zu dämpfen.
- Schritt 1: Ki = 0, Kd = 0, Kp erhöhen bis kurz vor Schwingen
- Schritt 2: Ki langsam erhöhen, bis Offset verschwindet, ohne instabil zu werden
- Schritt 3: Kd vorsichtig erhöhen, um Überschwingen zu dämpfen
- Schritt 4: Sample Time konstant halten, sonst müssen Werte neu bewertet werden
Ziegler-Nichols: Bekannt, aber nicht immer ideal für Maker-Projekte
Klassische Methoden wie Ziegler-Nichols liefern Startwerte, können aber zu aggressiven Reglern führen – insbesondere bei Systemen mit Rauschen oder Totzeit. Für viele Maker-Anwendungen ist „ruhig und robust“ wichtiger als „maximal schnell“. Deshalb ist schrittweises Tuning oft besser kontrollierbar.
Typische Fehlerbilder und was sie bedeuten
Das Verhalten eines Systems verrät oft, welcher Anteil falsch eingestellt ist. Wenn Sie diese Muster kennen, sparen Sie viel Zeit. Wichtig ist, immer nur eine Stellschraube zu ändern und die Auswirkungen zu beobachten.
- Schwingt dauerhaft: Kp zu hoch, Ki zu hoch oder dt zu groß/instabil
- Überschwingt stark: Kp zu hoch, Ki zu stark, zu wenig D-Dämpfung
- Bleibt unter Sollwert: Kp zu klein oder Ki fehlt/zu klein
- Reagiert träge: Kp zu klein, dt zu groß, Filter zu stark
- Output zittert: D zu groß, Messrauschen zu hoch, Filter fehlt
- Nach Lastwechsel „kippt“ es: Ki/Windup-Problem, Sättigung nicht berücksichtigt
Robuste Features: Begrenzungen, Deadband und Reset-Strategien
In der Praxis sind zusätzliche Regeln oft entscheidend: Ein Deadband (Totzone) verhindert, dass der Regler bei kleinsten Abweichungen ständig nachregelt, was bei mechanischen Systemen sinnvoll ist. Ein sanfter Start (Ramp) verhindert harte Sprünge. Ein definierter Reset des Integrators beim Moduswechsel verhindert, dass alte Integrationswerte in eine neue Situation „hineintragen“.
- Deadband: kleine Fehler ignorieren, um Jitter zu reduzieren
- Rampen: Setpoint oder Output langsam ändern
- Integrator-Reset: bei Zustandswechseln oder großen Sollwertsprüngen
- Fail-Safe: bei Sensorfehlern Output in sicheren Bereich
Setpoint-Sprünge gezielt behandeln
Wenn der Sollwert sprunghaft geändert wird (z. B. von 20°C auf 60°C), kann der D-Anteil eine unerwünschte Spitze erzeugen. Mit D auf Messwert und mit Setpoint-Rampen wird das System oft deutlich ruhiger.
Libraries nutzen: Wann fertiger PID-Code sinnvoll ist
Viele Maker nutzen fertige PID-Bibliotheken, weil sie typische Schutzmechanismen und eine erprobte Struktur mitbringen. Das kann Zeit sparen, solange Sie verstehen, was die Library intern macht: Welche Einheiten erwartet sie? Wie wird dt behandelt? Gibt es Output-Limits? Wird Anti-Windup unterstützt? Nutzen Sie Libraries als Werkzeug, nicht als Blackbox.
- Vorteil: schneller Start, bewährte Implementierung
- Risiko: falsche Annahmen zu dt, Skalierung oder Output-Bereich
- Best Practice: Library-Beispiele testen und Parameter dokumentieren
Für Arduino ist die offizielle Referenzbasis unter Arduino Documentation hilfreich, und für fortgeschrittene Implementierungen auf ESP32 lohnt sich die Espressif Dokumentation, insbesondere wenn Timer, PWM und Tasking relevant werden.
Testen und Debuggen: Wie Sie erkennen, ob Ihr PID korrekt arbeitet
Ein PID-Regler ist ein dynamisches System. Sie sollten nicht nur „funktioniert irgendwie“ prüfen, sondern gezielt messen: Plotten Sie Istwert und Output über die Zeit, beobachten Sie Reaktion auf Sollwertsprünge und Lastwechsel. Schon einfache Logs mit Zeitstempel und CSV-Ausgabe reichen, um in einem Plot Überschwingen, Schwingen oder Drift zu erkennen. Für Motorprojekte ist zudem die Messung der Drehzahl (Encoder) entscheidend; für Temperaturprojekte ist Sensorpositionierung und thermische Kopplung oft der „wahre“ Bug.
- Step-Response testen: Sollwertsprung und Zeitverlauf beobachten
- Lastwechsel testen: Störung einbringen und Reaktion messen
- Logging: Zeit, Istwert, Sollwert, Output als CSV ausgeben
- Sensor prüfen: Plausibilität, Verzögerung, Rauschen
Der unterschätzte Faktor: Mechanik und Thermik
Viele „PID-Probleme“ sind in Wahrheit Hardwareprobleme: lose Encoder-Scheibe, Spiel im Getriebe, schlechte Sensorplatzierung, Wärmestau, unzureichender Kühlkörper. Debugging bedeutet hier: System als Ganzes betrachten.
Weiterführende Ressourcen
- PID-Regler: Grundlagen, Begriffe und typische Parameter
- Regelungstechnik: Kontext und grundlegende Konzepte
- Arduino Dokumentation: Timer, PWM, Libraries und Best Practices
- Espressif Dokumentation: ESP32 PWM, Timer und Systemverhalten
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

