Von Jeremy Cook
Für alle, die an Industriesteuerungen arbeiten, ist die PID(Proportional, Integral, Derivative)-Theorie wahrscheinlich ein vertrautes Konzept. Den meisten Menschen mag der Begriff fremd sein, der Inhalt ist es dagegen nicht. Wenn Sie das Gaspedal in einem Auto betätigen, berücksichtigen Sie nicht nur die Differenz zur Idealgeschwindigkeit (Proportional in PID), sondern zugleich, wie das betreffende Fahrzeug beschleunigt und in welcher Umgebung (z. B. hügeliges Gelände) Sie fahren.
Für alle, die an Industriesteuerungen arbeiten, ist die PID(Proportional, Integral, Derivative)-Theorie wahrscheinlich ein vertrautes Konzept. Den meisten Menschen mag der Begriff fremd sein, der Inhalt ist es dagegen nicht. Wenn Sie das Gaspedal in einem Auto betätigen, berücksichtigen Sie nicht nur die Differenz zur Idealgeschwindigkeit (Proportional in PID), sondern zugleich, wie das betreffende Fahrzeug beschleunigt und in welcher Umgebung (z. B. hügeliges Gelände) Sie fahren.
Diese subtileren Einflüsse werden mit I und D mathematisch gefasst. In diesem Beispiel würden sie verhindern, dass die Geschwindigkeit eines Autos von einer Höchstgrenze auf eine Tiefstgrenze zurückfällt. Dieses Konzept lässt sich auf eine Vielzahl von Situationen anwenden, in denen es um Steuerung geht. Mit einer an Grenzwerten orientierten Regelung liegen Sie nicht falsch, das betreffende System wird aber etwa erratisch agieren.
PID-Gleichung
Mit der folgenden Gleichung lässt sich eine PID-Steuerung mathematisch darstellen. P, I und D werden durch die drei Terme repräsentiert und hier addiert. Kp, Ki und Kd sind Konstante, die bestimmen, wie stark das System auf den betreffenden Faktor reagiert:

Wir können Ki und Kd auch durch 1 / Ti und Td ersetzen. Dadurch wird die Gleichung besser an die physische Bedeutung angenähert, und die Einheiten können als dimensionslose Zahl berechnet werden:

Wir können die Gleichung transponieren, um den Wert für Kp zu ermitteln. Das Ergebnis ist als Standardform bekannt. Ein Vorteil dieser Form besteht darin, dass wir die Konstante Kp in einem Schritt für die gesamte Gleichung justieren können:

Diese mathematischen Ausführungen wirken möglicherweise sogar für Menschen mit einem Abschluss im Bereich der Technik etwas einschüchternd. Sie müssen aber nicht Ihr Exemplar des Standardwerks Modeling and Analysis of Dynamic Systems hervorholen, um zu verstehen, worum es hier geht. Und obwohl es natürlich hilfreich sein kann, die höhere Analysis zu beherrschen, ist dies hier nicht erforderlich.
Indem wir die erste Gleichung auflösen, erhalten wir u(t), also die dimensionslose Controllerausgabe auf der linken Seite der Gleichung. Wir fügen auf der rechten Seite der Gleichung die drei mathematischen Elemente P, I und D hinzu. Jedem Element ist ein konstanter K-Wert (Kp, Ki und Kd) vorangestellt, der die Gewichtung des betreffenden Elements bei Berechnung von u(t), also der Controllerausgabe zu einem bestimmten Zeitpunkt, bestimmt. Wir können die einzelnen K-Werte justieren, um die Systemleistung zu optimieren. Das zeigen wir im Weiteren:
Proportional (P – Kp)
Der erste und wichtigste Term in dieser Gleichung ist e(t). Deshalb resultiert normalerweise ein Kp-Wert, der größer als die anderen K-Werte in der Gleichung ist. Hier ist e(t) einfach der Momentanfehler zu einem bestimmten Zeitpunkt, also der tatsächliche Wert eines gesteuerten Geräts minus Sollwert. Multipliziert mit Kp ergibt sich der Beitrag zum Gesamtwert der Controllerausgabe.
Integral (I – KI)
Der zweite Term in dieser Gleichung bezieht sich auf den kombinierten Fehlerwert im Zeitverlauf. Er repräsentiert die Summe aller in der Vorrichtung aufgetretenen Fehler:
Jedes Mal, wenn ein Controller u(t) berechnet, addiert er den Momentanfehler zu einer laufenden Summe.
Der Wert wird dann mit Ki multipliziert und das Ergebnis zu u(t) addiert.
Beispiel: Eine Kraft hält einen Motor auf dem aktuellen Status und verhindert unter normalen Bedingungen, dass er wieder den Sollwert annimmt. Je länger der Motor außerhalb der Spezifikationen arbeitet, desto größer wird der Term I, bis sein Wert ausreicht, die Kräfte zu überwinden, die den Motor beschränken.
Derivativ (D – Kd)
Der dritte Term in dieser Gleichung bezieht sich auf die Geschwindigkeit, mit der sich der Fehlerwert ändert:
Gäbe es nur einen D-Term in dieser Gleichung und würde der Prozess den falschen Wert konstant aufrechterhalten, würde dieser Term theoretisch null bleiben und nicht zur richtigen Controllerausgabe beitragen. Anderseits kann das Derivativ den Effekt dämpfen, wenn einer der beiden anderen Terme für eine zu schnelle Rückkehr der betreffenden Vorrichtung zum Sollzustand justiert wird.
Ungeachtet der Nützlichkeit des Infinitesimalausdrucks dieses Konzepts ist die PID-Steuerung in der Realität weit weniger magisch. In der Praxis berechnen wir die Ausgabe nur mittel Addition, Subtraktion und Multiplikation und berücksichtigen dabei den Fehler und die Zeit zwischen den Messwerten als Faktoren. Tatsächlich waren pneumatische Systeme frühe Umsetzungen einer PID-Steuerung, bei der die „Terme“ als mechanische Lösungen konstruiert wurden.
1. Controller übernehmen einen Momentanfehlerwert.
2. Der vorherige Momentanfehlerwert wird subtrahiert.
3. Das Ergebnis wird mit Kd multipliziert, um den Beitrag zu u(t) zu berechnen.
Tutorial für den Arduino PID-Controller
In vielen Situationen ist es sinnvoll, einen speziellen PID-Controller in Prozesse einzuführen. Mit einer Arduino- oder einer vergleichbaren Entwicklungsplatine können Sie aber einen eigenen Controller herstellen. Sie können sogar eine eigne PID-Routine programmieren. Stellen Sie jeden Term im Code auf folgende Weise dar:
- P:Momentanfehler = Sollwert – Eingang;
- I:kumulativerFehler = += Fehler * verstricheneZeit;
- D:Fehlerrate = (Fehler – FehlerLetzteBerechnung)/verstricheneZeit
Um den benötigten Ausgabewert zu erhalten, wird jeder Term mit dem entsprechenden K-Wert multipliziert. Die Ergebnisse werden dann addiert. Wenn Sie aber das Rad nicht neu erfinden wollen, können Sie auch einfach auf Brett Beuregards PID-Bibliothek zurückgreifen. In dieser Bibliothek sind die Details bereits gekapselt, sodass Sie sich auf die bedarfsgerechte Optimierung der Konstanten P, I und D konzentrieren können.

Um die PID-Theorie in der Praxis zu demonstrieren, habe ich auf einen Arduino Nano Every zurückgegriffen, zusammen mit folgenden Komponenten:
- Motortreiberplatine
- Infrarotsensor
- Aus einer Hubsan H107C-Drohne geretteter Motor
Ich habe eine Entwicklungsplatine für den Motor sowie einen „Lüfter“ montiert, der 50 % des Lichts blockiert und durch sein Drehen das Verpassen von Impulsen verhindert. Der Motortreiber dient als Eingang für den im Übrigen ungeregelten Motor. Das Feedback basiert auf der Zeit zwischen den Impulsen.
Nachdem ich den Code programmiert und die 3D-gedruckten Teile beschafft hatte, konnte ich den Motor deutlich besser als nur mit dem Stromschalter mit konstanter PWM-Ausgabe steuern.

Codeausschnitt aus der PID-Routine oben verlinkt
Wichtiger Bestandteil des Codes ist eine Interruptroutine, die bei drehendem Lüfter (Blockade) Impulse registriert und die Zeit zwischen den Impulsen mit millis() berechnet. Ich richte PID im ersten Teil des Codes außerhalb der Funktionen folgendermaßen ein:
PID myPID (&difference, &driverOut, &setPoint,Kp,Ki,Kd, DIRECT)
Kp, Ki und Kd werden für diese Zeile im Code definiert. &difference steuert &driverOut, wobei &setPoint vom seriellen Monitor modifiziert wird. Wir können diese Berechnung modifizieren, um die Zeitdifferenz in Umdrehungen pro Minute umzurechnen. Die PID-Einstellungen arbeiten aber als DIREKTE Ausgänge, da dieser spezielle Treiber eingeschaltet wird, wenn der Eingang auf Low gezogen wird. Während der Analogausgang wächst (der Motor ausläuft), nimmt die Verzögerung zwischen den Impulsen zu.

Eine frühere Version der PID-Routine. CH1 liest Eingangsimpulse, während CH2 die mittels PID-Routine berechnete Ausgabe ist. Low-Impulse werden als Eingänge für den Motor verwendet.
Dieser einfache PID-Controller wurde mit vorhandenen Teilen (einschließlich des neuen Arduino Nano Every) und einem mir nicht gänzlich unbekannten Motor geschaffen. Insgesamt konnte ich aber zeigen, wie eine PID-Steuerung in unterschiedlichsten Situationen umgesetzt werden kann. Ob es um eine Motorsteuerung, die Temperaturregelung in einem Backofen oder die Balance eines Roboters geht: mit etwas Einrichtungsaufwand und Optimierungsbemühungen für eine PID-Steuerung erhalten Sie endlose Experimentiermöglichkeiten.

