Marlin PID Autotuning für 3D-Drucker

Die Marlin Firmware hat paar echt nette Features am Board,
unter anderem das „PID Autotuning“.

Es sind zwar PID-Werte schon in der Firmware vordefiniert aber
diese sind in der Regel als Richtwerte anzusehen.

Grade wenn man wie ich ein komplett anderes HotEnd verbaut hat wie es
ursprünglich angedacht war.

Zum Glück hat die Marlin-Firmware ein nettes Tool mit an Board..
das PID Autotuning. 

Dies macht es einen sehr einfach die richtigen PID-Werte zu ermitteln.

Als erstes nehmen wir und das HotEnd vor.

 

Nun erst einmal der G-Code zur Ermittlung der PID-Wete für das HotEnd in 8 Zyklen:

Erläuterung:

  • M106 Nozzel Lüfter auf 100%
  • M303 startet das PID Autotuning
  • E-0 wählt das erste HotEnd
  • S230 die zu erreichende Temperatur (230°C)
  • C8 gibt die Zyklen der Messungen an ( 8 Stk. )

 

Nach dem nun die 8 Heizzyklen durchgelaufen sind habe ein Ergebnis in dieser Art:

 

Diese werden nun mit folgenden G-Code im EEPROM gepeichert.

Erläuterung:

  • M301 setzt die PID-Werte temporär
  • P = KP
  • I = KI
  • D = KD
  • M500 speichert die temporären PID-Werte im EEPROM

 

Oder direkt in die Firmware (Configuration.h)  eingetragen. 

 

 

Um auch das HotBed über PID zu regeln, muss es erst mal in der Firmware aktiviert werden.  

So muss das dann ein und auch auskommentiert werden in der Configuration.h

 

Auch hier können wir nun wieder das Autotuning Tool nutzen

Erläuterung:

  • M303 startet das PID Autotuning
  • E-1 wählt das erste HotBed
  • S60 die zu erreichende Temperatur (60°C)
  • C8 gibt die Zyklen der Messungen an ( 8 Stk. )

Nach dem nun die 8 Heizzyklen durchgelaufen sind habe wir auch wieder hier ein Ergebnis in dieser Art:

Diese werden nun mit folgenden G-Code im EEPROM gepeichert.

Erläuterung:

  • M304 setzt die PID-Werte für das HotBed temporär
  • P = KP
  • I = KI
  • D = KD
  • M500 speichert die temporären PID-Werte im EEPROM

Oder auch hier direkt in die Firmware (Configuration.h)  eingetragen. 

Das war es auch schon :o)

10 thoughts on “Marlin PID Autotuning für 3D-Drucker

  1. Ich habe bei meinem Black Widow dieses Autotuning zwei mal durchlaufen lassen. In beiden Fällen war das Ergebnis, dass er die erforderliche Temperatur nicht mehr erreicht hat. Die Autotunewerte weichen auch sehr von den Firmwarewerten ab. Ich habe dann wieder auf die Defaultwerte gestellt und jetzt druckt er wieder. Ich vermute, Autotune ist noch nicht das non plus ultra 😉

  2. Bei mir gibt es 2 Bereiche für die Werte:

    #if ENABLED(PIDTEMPBED)

    //#define PID_BED_DEBUG // Sends debug data to the serial port.

    //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
    //from FOPDT model – kp=.39 Tp=405 Tdead=66, Tc set to 79.2, aggressive factor of .15 (vs .1, 1, 10)
    #define DEFAULT_bedKp 337.76
    #define DEFAULT_bedKi 46.85
    #define DEFAULT_bedKd 608.72

    //120V 250W silicone heater into 4mm borosilicate (MendelMax 1.5+)
    //from pidautotune
    //#define DEFAULT_bedKp 97.1
    //#define DEFAULT_bedKi 1.41
    //#define DEFAULT_bedKd 1675.16

    gehe ich recht in der Annahme, dass die Werte im Bereich „from pidautotune“ geändert werden müssen und die Auskommentierung entsprechend entfernt und oben bei „from FOPDT model“ hinzugefügt werden müssen.

    Des weiteren muss in der advanced config von Marlin der Wert „WATCH_BED_TEMP_PERIOD“ auf unter 127 gesetzt werden um den fehler „PID Autotune failed“ zu vermeiden.

  3. Hi.

    Wenn ich versuche den PID Abgleich für das heatbed zu machen. Kommt im Display die Meldung
    „Heating failed printer halted“.

    Ich verwende für Bett einen Mosfet und Marlin 1.1.8 als FW.

    Der PID Abgleich des Extruders (ohne Mosfet) hatte funktuioniert! Die anpassungen
    #define PIDTEMPBED
    //#define BED_LIMIT_SWITCHING

    hatte ich vorgenommen.

  4. Ich habe nun viele Foren in Bezug AutoPID Einstellung virgrfunden und meinen Daycom 3dp-100 versucht die ruchtigen PID-Daten zu erhalten.wenn ich daa Heatbed aufheize, zeigt mir der Thermistor zwar konstant 60°C an, aber die messung mit meinem Laserthermomessgerät zeigt mir 54°C an. Im Markin ist PID Aktiviert und auch gespeichert. Wie kann ich das nun anpassen? Anfangs hatte ich eine Temperaturtabelle Nr.11 aktiviert. Muss diese evtl.deaktiviert werden? Mein MK3 Heatbed ist zusätzlich mit einer Borosilikatglas bestückt.
    Mit freundlichen Grüßen Falko

    1. Die Abweichungen sind ganz normal , da dein Temperatursensor eine Toleranz von ca. 5 % besitzt und Du auch ein anderen Messpunkt gewählt hast wie der Sensor in nutzt.
      Steuert tut man auch nicht über die PID.

      Ich könnte z.B. in meinem Octoprint ein „Temp Offset“ einstellen.
      Ein Weg über die Firmware wäre mir das nicht bekannt.

  5. Hallo Shojo,

    sehr gute Anleitung:)
    Eine Frage hätte ich. Sollte man evtl. beim Tuning den Nozzle-Lüfter manuell aktivieren (M106=ON M107=OFF), da ja beim Betrieb die Nozzle indirekt mitgekühlt wird, was beim Tuning mit einberechnet werden sollte? Ich kann mir gut vorstellen das die Temperatur sonnst zu stark absackt, wenn der Lüfter ab 0.5mm anspringt.
    Oder sind die PID-Werte nur für das „Anheizen“?

    VG

    Tobias

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.