Release v1.0.1: Thingspeak-Anbindung entfernt

#1
So, der Umstieg auf die neue API hat funktioniert, weiter geht's mit ein paar kleinen Verbesserungen: PreRelease v1.0.1
Wer es testen möchte, muss das Update manuell starten, da es ein Prerelease ist.

Was ist neu?
Die Thingspeak-Anbindung wurde entfernt, um Platz für neue Funktionen zu machen. Siehe Umfrage: Link
Der "Schnelllauf" der Kanalanzeige im OLED wurde fest integriert. Er findet jetzt automatisch bei einem Aufwärtswandern durch die Kanäle statt. Beim Rückwärstwandern wird jeder Kanal angezeigt, auch diese, die OFF sind. Somit hat man weiterhin auch Zugriff auf OFF-Kanäle sobald ein Fühler eingesteckt ist.
Die PID-Profile haben eine neue Funktion zum Testen bekommen. Die Funktion heißt "Jump Power". Über das Eingabefeld innerhalb des PID-Profils lässt sich die maximale Leistung des Aktors absenken (auf 10 - 100%). Die Funktion wirkt wie "DCmax", allerdings nur bei einem Sprung. Ein Sprung ist dann gegeben, wenn die Abweichung zwischen der Soll- und Isttemperatur entweder größer als 5% der Solltemperatur oder größer als der Proportionalbereich (100/Kp) ist. Also bei einer Änderung der Sollvorgabe oder z.B. einer Deckelöffnung. Die Funktion muss erst getestet werden, eventuell würde es mehr Sinn machen, direkt DCmax zu beschränken.

Der neue Autotune-Prozess ist zwar schon seit der v1.0.0-beta integriert, aber jetzt noch ein paar Worte dazu. Der Autotune kann aktuell immer nur für einen Solltemperatur-Sprung aktiviert werden. Nach dem Sprung schaltet der Autotune automatisch ab und der normale PID-Regler arbeitet weiter, mit den neu berechneten Werten. Also Achtung, bei einem Autotune werden die bestehenden Kp, Ki, Kd-Werte überschrieben. Der Autotune kann zudem nur ausgeführt werden, wenn der Sollsprung größer als 20% (etwa) ist, ansonsten wird der Autotune direkt beendet und mit dem bestehenden PID-Regler gearbeitet. Die Sprunggröße ist notwendig, damit genug Zeit zur Beobachtung des Systemverhaltens bleibt. Während der Autotune läuft, wird ein "A" in der Titelleiste des OLEDs angezeigt. Markant für den Autotuneprozess ist ein Stoppen des Aktors etwa 10% vor der Solltemperatur. Der Autotune lässt das System dann auslaufen und beobachtet dabei, wie weit die Temperatur nach Stoppen des Aktor weiter steigt. Sobald die Temperatur wieder fällt, läuft der Aktor wieder leicht an, bis die neuen PID-Werte berechnet sind und dann der PID-Regler wieder einsetzt. Sollte während der Auslaufphase des Autotuneprozesses (Aktor ausgeschaltet) die Temperatur so weit steigen, dass die Solltemperatur überschritten wird, dann ist der Smoker nicht gut eingestellt. Gegenmaßnahmen wären: weiteres Schließen der Abluftventile, Vermeidung von Fremdluft durch kleine Deckelöffnungen, Verringerung des Lufteinlasses sowie ein Absenken der maximalen Leistung des Aktors (DCmax reduzieren). Außerdem sollte darauf geachtet werden, dass DCmin so eingestellt ist, dass bei 0% Pitmaster der Aktor keine Leistung abgibt. Ob in diesem Fall auch ein Senken des neuen Werts "Jump Power" ausreichend ist, muss noch getestet werden (anstelle von DCmax).

Viel Spaß beim Testen.
Steffen
 
#3
Dank der tollen Unterstützung von @Cimmi (vielen Dank!) hier mal ein Beispiel zum neuen Autotune-Prozess.

Zuerst ein "Negativ"-Beispiel mit zu hohem DCmax-Wert, daran kann man die einzelnen Phasen des Autotune-Prozesses aber sehr schön sehen. Eingestellte Solltemperatur ist 110 °C. Das System ist ein Keramikei mit 50er Titan als Pitmaster-Aktor (Details gibt es noch von @Cimmi)

Teil1.png

Nachdem der Autotune aktiviert wurde, startet er mit der Phase 1. Hier wird das System mit einem Pitmasterwert von 100% angesteuert, um es erst einmal auf Temperatur zu bringen. Außerdem wird die maximale Temperaturzunahmegeschwindigkeit erfasst. Während der Phase 1 wird am OLED ein "A" gefolgt von der Abschalttemperatur der ersten Phase in der Titelleiste angezeigt. Die Abschalttemperatur der ersten Phase beträgt 0,9*Solltemperatur, im Beispiel also 99 °C. Erreicht das System diese Temperatur, endet Phase 1 und der Autotune wechselt in die Phase 2.

In der Phase 2 wird der Pitmaster auf 0% geschaltet und der maximale Überschwinger beobachtet. Im Idealfall würde sich das System so verhalten, dass die Temperaturzunahme direkt unterbricht (kein Pitmaster, keine Temperaturzunahme). Da die meisten Smoker aber nicht ganz dicht sind, das Glutbett noch ein wenig nachheizt etc. steigt die Temperatur nach dem Abschalten des Aktors dennoch weiter. Wichtig für diese Phase ist ein richtig eingestelltes DCmin. Bei Systemen mit Lüfter als Aktor muss dieser bei 0% Pitmaster aufhören zu drehen. Phase 2 endet, wenn eindeutig erkannt wurde, dass die Temperatur nicht mehr weiter steigt.

In der Phase 3 wird der Aktor nun wieder mit einem schwachen Pitmasterwert von 25% angesteuert. Ganz deutlich im Plot zu erkennen. Phase 3 läuft so lange, bis die gefallene Temperatur wieder über die Temperatur steigt, die in Phase 2 bereits erreicht wurde. Beobachtet wird dabei, wie lange das System braucht, bis es wieder anfängt zu heizen.

Mit dem Ende von Phase 3 endet auch der Autotune-Prozess. Die neu berechneten PID-Werte werden übernommen und in Phase 4 regelt nun der PID-Regler das System. Da es in diesem Beispiel in Phase 3 zu einer Überschreitung der Solltemperatur kam, passiert am Pitmasterwert erst einmal nichts, bis die Solltemperatur wieder unterschritten wurde. Nach 1 - 2 Einschwingern sollte das System dann die Sollvorgabe erreichen.

Warum ist das Beispiel nun ein "Negativ"-Beispiel? Wird in Phase 2 die Solltemperatur bereits überschritten (im Beispiel sogar sehr deutlich, was nicht gut ist), ist dies ein sehr eindeutiges Zeichen für einen zu starken Aktor und/oder ein schlecht eingestelltes System (Zuluft, Abluft, Luftführung im System). Eine Möglichkeit hier gegenzusteuern ist das Senken von DCmax, und zwar deutlich, also nicht nur 1-2% sondern ruhig mal 10 - 20 % oder auch noch mehr.

Nun das selbe System ein paar Minuten später mit einem auf 60% abgesenkten DCmax. Wieder ein Autotune-Prozess innerhalb der Sollvorgabe von 110 °C:

Teil2.png

Auch hier sind die Phasen des Autotune-Prozesses wieder gut erkennbar. Durch die gesenkte Leistung des Lüfters steigt die Temperatur nach dem Abschalten weniger stark an und auch die Solltemperatur wird nur noch minimal überschritten (noch besser wäre, wenn gar nicht). Dadurch wird auch das weitere Einschwingen deutlich verringert, sodass das System nach kurzer Zeit die Sollvorgabe ideal trifft. An dieser Stelle wäre auch eine weitere Absenkung auf DCmax = 50 % denkbar (und/oder Maßnahmen direkt am Smoker: Abluftregler weiter zu; Luftführung optimieren, Lüfterzugang abkleben/Zuluftschieber weiter schließen um den Luftzug bei 0% zu minimieren). Betrachtet man das weitere Regelverhalten, so wird deutlich, dass zum Halten der 110 °C lediglich eine Aktorleistung von 10 - 20 % notwenig ist (bei DCmax = 60%). Demnach wäre die Möglichkeit zum Senken der Aktorleistung auf jeden Fall gegeben. Allerdings wird sich ein Holzkohleglutbett über die Brenndauer nie ganz gleich verhalten. Daher sollte DCmax nicht zu weit abgesenkt werden.

So viel zum Autotune-Prozess und seinen Phasen. Ich denke anhand des Beispiels wird deutlich, worauf beim Autotune geachtet werden sollte.

Kleine Anmerkung noch: Aktuell berechnet der Autotune den I-Anteil noch zu gering. Sollte der Autotune bei einem Keramikei oder UDS ein Ki = 0 berechnen, so ist es sehr wahrscheinlich sinnvoll den Wert nach der Autotune-Berechnung auf einen Wert von 0,005 - 0,01 einzustellen. Andernfalls kann es sein, dass sich das System zwar einregelt aber die Solltemperatur immer ganz leicht nicht erreicht.

Gruß
Steffen
 
#4
Hallo zusammen,

wie gestern mit Steffen besprochen wollte ich noch ein paar Details zu meinem Setup erläutern. Grundsätzlich nutze ich das Nano mit dem 50er Titan an einem Kamado Joe Classic 2, bisher mit dem mitgelieferten Kohlerost (hierzu später noch was).
Mein Lüfter sieht zur Zeit wie folgt aus:
DSC_0013.jpg

Also, etwa zur Hälfte abgeklebt, Schieber war voll auf. Das obere Ventil war beim ersten Durchgang auch ein wenig weiter auf als beim zweiten. Hier die Einstellung vom zweiten Testlauf, vom ersten habe ich kein Foto:
DSC_0012.jpg

Viel geht da also nicht mehr, ein Zahnstocher passt durch :) Gestartet habe ich jeweils mit einem Anzünder, mittig platziert, etwa 10 Minuten brennen lassen und dann das Nano mit Lüfter angeschlossen. Bei der verwendeten Kohle handelte es sich um die Restaurant-Kohle von der Metro. Bei etwa 60°C habe ich dann den Autotune gestartet. Der zweite Durchlauf hat dann zu folgenden Werten geführt:

Kp: 5,8
Ki: 0 (manuell auf 0,01 gesetzt)
Kd: 292

Und damit lief das System auch ziemlich gut, wie man oben erkennen kann. Nach etwa 6h musste der Lüfter immer mehr pusten, was ich auf ein sich langsam zusetzendes Kohlerost schiebe. Nachdem ich die Kohle mal durchgerührt habe, wurde es wieder besser. Ich denke, das Problem kenne viele Keramikgriller und hier wird wohl irgendwann bei mir ein Kohlekorb einziehen.

Nichtsdestotrotz bin ich sehr zufrieden mit dem Ergebnis und möchte mich ausdrücklich für die tolle Unterstützung von Steffen und Hans-Martin bedanken, beide haben mir sehr geholfen mit meinem Setup.

Wenn noch Fragen sind, helfe ich auch gerne weiter.

Beste Grüße

Stefan
 
Top