PID-Tuning: Stabile Temperaturen für den Drucker

Eine relativ einfache, aber wirkungsvolle Möglichkeit, die Druckergebnisse zu optimieren ist das sogenannte PID-Tuning. Was das ist und wie das geht hier am Beispiel von Marlin, genutzt wird hier das Terminal & Temperatur-Graphen von Repetier Server – geht aber auch mit Octoprint, Pronterface oder allem anderen, was ein Terminal hat

Eine möglichst gleichbleibende Temperatur sorgt für schönere Drucke. Wenn die Temperatur um mehr als nur ein oder zwei Grad schwankt, dann kann sich das schon im Druckergebnis abzeichen.

Vorher: Deutliche, zyklische Schwankungen +/-5°C – vermutlich PID unkalibriert

Um diese Schwankungen zu verringern, gibt es in der Marlin Firmware (und anderen) eine kleine Automatik, welche das Heizverhalten des HotEnds (und auch des Betts) messen kann und so eine genauere Temperatursteuerung ermöglicht.

Nach erfolgreichem PID Tuning: Schwankungen <1°C

Nicht alle Temperaturschwankungen sind zwangsläufig Folge schlechter PID Einstellungen – gerade bei sehr hohen Schwankungen 10°C und mehr ist häufig auch ein Wackler oder Kabelbruch im Thermistor oder der Heizpatrone vorhanden. Die Schwankungen, die durch das PID Tuning behoben werden, sind meist auffällig zyklisch / regelmäßig und sehen in einem Temperaturgraphen aus wie eine Wellenlinie.

Grundsätzlich ist die Sache so: unsere HotEnds heizen nicht nur mit stupidem An/Aus der Heizung, sondern die Heizleistung wird geregelt in Abhängigkeit der Differenz aus Soll und Ist Temperatur. Ist die aktuelle Temperatur deutlich unter der gewünschten Temperatur, wird mit mehr Leistung geheizt, ist die Temperatur nahe am Sollwert, entsprechend weniger.

Damit das überhaupt erst mal funktionieren kann, existiert in der Marlin Firmware (configuration.h) ein grober Standardwert, je nachdem wieviel Mühe sich der Druckerhersteller gemacht hat, ist der relativ passend – oder auch nicht. Auch reagiert jedes HotEnd ein kleines bissl anders, so dass es in aller Regel durchaus lohnenswert ist, diese Standardwerte durch die selbst ermittelten Werte zu ersetzen.

PID Tuning, wie geht das?

Ganz einfach. Zunächst müssen wir irgendwie dafür sorgen, dass wir Befehle an den Drucker senden können. Ich benutze dafür das Terminal Fenster von Repetier-Server, andere bevorzugen Octoprint. Einfacher für die Meisten dürfte es allerdings sein, einfach nur den Drucker per USB an den PC anzustecken und dann mit der Freeware Pronterface zu arbeiten.

Ganz selten findet man auch im Menü des Druckers selber einen Punkt, um ein PID Tuning auszuführen. (Ultimaker mit TinkerGnome, Prusa MK2&MK3, BCN3D Sigma, ich glaub der Wanhao i3 hat den Punkt auch.. um nur ein paar Modelle zu nennen, die mir jetzt spontan so einfallen) Aber die lassen wir jetzt mal unter den Tisch fallen.

  1. Wir verbinden den Drucker also irgendwie mit dem PC oder RasPi, starten das Programm unserer Wahl, stellen die Verbindung zum Drucker her und öffnen das Terminal Fenster.
  2. Wir überlegen uns die Zieltemperatur. Die Zieltemperatur ist im Idealfall genau die Temperatur, mit der Ihr am Ende auch (am häufigsten) drucken werdet, also in meinem Fall ist das 205°C für PLA. (wer es ganz genau machen will, ermittelt die korrekten PID Werte für alle seine Filamentarten PLA, ABS, PETG, usw. einzeln oder sucht sich nen Mittelwert)
  3. Wenn dieser Filamenttyp mit eingeschaltetem Bauteillüfter gedruckt wird, ist es auch sinnvoll, das PID Tuning mit eingeschaltetem Lüfter vorzunehmen. Also starten wir den Lüfter, in dem wir den folgenden Befehl an den Drucker schicken: M106 E0 S255

    M106 Befehl an Drucker senden

    = starte Lüfter mit voller Leistung für PLA für den ersten Extruder. Für PETG, dass ich nur mit ca 25% Leistung drucke, würde ich M106 E0 S65 senden. Bei ABS, das ich in der Regel ohne Bauteillüftung drucke, lass ich den Lüfter aus (M106 E0 S0).

  4. Der Start des PID Tuning sollte bei normaler Raumtemperatur erfolgen, wenn ihr also vorher grad noch was gedruckt habt, macht das PID Tuning lieber später.

Und so startet ich das PID Tuning für PLA auf einem Drucker, der Marlin benutzt:

M303 E0 S205 C5

PID Tuning starten mit M303

Das sind

  • M303 der Befehl zum Start des Tunings
  • E0 für den ersten Extruder (E1 wäre der zweite in einem DualExtruder) (diese Angabe kann in anderen Firmwares als Marlin abweichen!)
  • S205 – die gewünschte Zieltemperatur
  • C5 = Anzahl Testzyklen aus denen dann ein Mittelwert gebildet wird (C für Cycles)

Weitere Beispiele:

  • Ich will PID Tuning für ABS vornehmen:
    M106 E0 S0
    den Lüfter abschalten und dann
    M303 E0 S240 C5
  • Oder doch lieber PETG?
    M106 E0 S65
    Lüfter auf 25% und dann
    M303 E0 S220 C5

Und dann heisst es abwarten. In Zwischenzeit spuckt der Drucker ein Haufen Zahlen aus, die Düsen werden aufgeheizt und wieder abgekühlt, das ganze 5 mal – oder so oft wie halt bei C angegeben.

Ganz am Ende steht dann sowas am Bildschirm:

PID Tuning: P, I & D Werte

Für uns sind die 3 rot umrandeten Werte interessant:

Kp 21.71
Ki: 1.48
Kd: 79.61

Die müssen wir uns mal schnell notieren, die brauchen wir jetzt gleich wieder..

Was mach ich mit den Werten?

Hier gibts 3 Methoden:

  • Wenn Euer Drucker das Speichern von Einstellungen in der Firmware mit M500 erlaubt, dann könnt Ihr nun die ermittelten Werte mit
    M301 E0 P21.71 I1.48 D79.61

    an den Drucker senden und dann mit
    M500

    im EEPROM speichern.
  • Erlaubt Euer Drucker das Speichern mittels M500 nicht, dann könnt Ihr die Zeile
    M301 E0 P21.71 I1.48 D79.61
    auch einfach in den Start-Code in Eurem Slicer eintragen.

    Wer sich die Mühe gemacht hat und für ABS & PETG auch Werte ermittelt hat, kann nun also die zum Material passenden Werte in seinem Slicer hinterlegen. In Cura müsste man unterschiedliche Druckerprofile dazu anlegen, aber hat auch was..
  • Wer weiss, wie man die Firmware für seinen Drucker selber editiert, der kann auch in der configuration.h die dort hinterlegten Standardwerte übertippen:
    #define DEFAULT_Kp 21.71
    #define DEFAULT_Ki 1.49
    #define DEFAULT_Kd 79.61

PID Tuning fürs Bett?

Auch das geht. Allerdings nur, wenn das Bett auch tatsächlich per PID geregelt und nicht, wie häufig bei den Heizbetten der Fall nicht stupide per „Bang Bang“ – also simples Ein/Aus gesteuert wird. Wer Zugriff auf den Quellcode der Firmware hat, kann eventuell selber auf PID Steuerung umstellen – dazu wird die configuration.h wie folgt geändert:

#define PIDTEMPBED
//#define BED_LIMIT_SWITCHING

also die // Kommentarzeichen in der oberen Zeile weg und dafür vor die untere Zeile schreiben.

Die ID des Betts, also der Wert für E ist -1. Unser Befehl zum Start des PID Tunings fürs Bett wäre dann z.b.: M303 E-1 S55 C5 und setzen der Werte mit M304 Pxxx.xx Iyyy.yy Dzzz.zz. Danach wie gehabt, entweder ins Eeprom speichern mit M500 oder in den Startcode oder in der Configuration.h hinterlegen bei:

#define DEFAULT_bedKp xxx.xx
#define DEFAULT_bedKi yyy.yy
#define DEFAULT_bedKd zzz.zz

4 Kommentare

  • Cool, danke Stephan. Hab das heute direkt ausprobiert mit dem Any, alles neu eingestellt. Meiner hatte Abweichungen von 10Crad laut Messung. Hab dann bei der Gelegenheit auch gerade die E-Steps Config gemacht. Danach den xyz Würfel gedruckt. Er hat die Temp so accurate gehalten, höchstens mal +/- 1 Crad Unterschied.
    Ich finde man sieht den Unterschied schon ganz schön. Auch das er nun die richtige Menge Fila extruiert, macht was aus. Hatte vorher nie mit 100 % Extrution drucken können, nu das erste Mal. Wundert aber nicht, wenn man sieht das er von 100 mm länge die er extruden soll, nur 85mm durchgezogen hat.
    Danke nochmal für die super Anleitung.

  • Danke für diese ausführliche Anleitung! Ich gebe zu, damit hab ich mich bisher noch nicht beschäftigt und nach dem ersten Lesen bin ich noch ein wenig verwirrt. Zumindest weiß ich mal, wovon unser Urlauber gesprochen hat. Wenn ich den X5S soweit mechanisch zurecht gebogen habe muß ich mich sicher auch mal damit beschäftigen. Zumindest weiß ich nun wo es steht!

    • Wo steckt die Verwirrung. vielleicht sollte ich den Teil besser erklären?

    • Viel, alles wichtig, neu und ich hab da noch nicht rein geschnüffelt. Bevor ich aber Fragen dazu stellen kann muß ich zunächst selber mal das Ganze in live ausprobieren. Vermutlich wird es an Ecken klemmen von denen ich noch nicht weiß das es sie gibt.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.