Mostfun

Eigentlich hat der Heizkoffer bis jetzt gut funktioniert.... eigentlich....

Mir lies die komische Regelkurve keine Ruhe. Ein PID-Regler sollte wenn er einigermaßen eingestellt ist, keinen Sägezahn beim Regeln machen.

Auf der Suche nach der Ursache bin ich dann in der PID-Library auf einen seltsamen Satz gestoßen:

Zitat: "double output = kp * error + ITerm- kd * dInput;"

 

Das in sofern seltsam, da normalerweise der D-Anteil des Regelsignals sehr schnelle Abweichungen von dem eingeregelten Wert ausgleichen soll. Die Variable "Input" ist aber in diesem Fall der Ist-Wert, und "dInput" damit die Änderung es Ist-Wertes zwischen zwei Regelschritten. Dieser Wert multipliziert mit einem wählbaren Faktor "kd" wird also vom Stellsignal abgezogen.

Das hatte ich anders in Erinnerung und Wikipedia bestätigte den Verdacht.(http://de.wikipedia.org/wiki/Regler): U(t)=....+TV d/dt e(t). Das bedeutet, dass der Differentielle Regelteil zum restlichen Regelteil addiert wird und aus der Differenz des Fehlers, mit einem wählbaren Faktor multipliziert ist, also:

double output = kp * error + ITerm + kd * dError; 

Ich habe die Library entsprechend abgeändert. Das Regelverhalten ist nun deutlich logischer.

Nach einigen Versuchen habe ich jedoch auch beschlossen den D-Anteil ganz weg zu lassen, denn der Heizkoffer ist so träge gegenüber dem P-Anteil, dass dieser prinzipiell schnell genug ist, um Änderungen auszuregeln.

Hier ein paar Bilder zum aktuellen Verhalten, hier das Aufheizen (der Haken ist eine herbeigeführte Störung):

 

Man sieht, wie zügig die Temperatur im Koffer erreicht wird. Als nächstes ein Bild, bei dem der Koffer im eingeschwungenen Zustand eine Störung bekommt. Dazu habe ich den Koffer geöffnet, Kältespray auf das Heizblech gesprüht und anschließend den Koffer wieder verschlossen:

Sehr schön ist der Temperatureinbruch um 1 Grad zu sehen (blaue Kurve). Der P-Anteil des Reglers (rote Kurve) schießt sofort hoch. In der Folge regelt der I-Anteil (grüne Kurve) den Fehler wieder weg. In dieser Einstellung ergibt sich ein Überschwinger in der Temperatur um 0,2°C. Die "Rauhigkeit" der Kurve ist das granulare Regeln des Reglers auf die quantisierten Messwerte des digitalen Sensors, da die Auflösung des Sensors 12Bit entspricht.

 

Die Software ist hier herunterladbar: (Heizkoffer1_3_0.zip)

 

Um die Software in der IDE laufen lassen zu können benötigt man noch folgende externe Libraries:

  • OneWire
  • DallasTemperature
  • PID_v2
  • LiquidCyrstal

Alle nötigen Libraries sind hier gezippt: (Lib4Heizkoffer1_3.zip)

Für alle die nur die PID-Lib benutzen wollen: (PID_V2.zip)