PID-Tuning für den 3D-Drucker

Veröffentlicht von

Direkt zu den Anleitungen:

Anleitungen abgestimmt auf diverse Slicer und Oberflächen:

Warum überhaupt PID-Tuning für einen 3D-Drucker?

PID kommt aus der Meß- und Regelungstechnik und gibt ein Näherungsverfahren an einen bestimmten Wunschwert wieder. Wir wollen mit dem PID-Tuning am Heizelement des Extruders und am Heizbett ein möglichst konstante Temperatur erreichen und was viel wichtiger ist am 2D-Drucker auch halten.

Je weniger der Temperaturwert schwankt, desto gleichmäßiger können wir unsere Filament im Betrieb dann auch verarbeiten.

Beim Heizbett kommt hinzu, wenn wir bei einem Bausatz ein etwas knapp bemessenes Netzteil verbaut haben, bricht die Spannung bei Zuschaltung des Heizbettes immer etwas ein. Dies wird durch minimale Veränderungen z.B. in der Geschwindigkeit der Schrittmotoren an das Druckobjekt weitergegeben und verschlechtert so das Druckbild. Eine konstant gleichmäßige Spannung kommt so auch dem 3D-Druck zu gute. Nachteil der PID-Regelung, sie benötigt mehr CPU-Last als die klassische Bang Bang Schaltung (was eher nur für die 8-bit Controller relevant ist) und der FET hat kaum noch eine Möglichkeit die Induktivität abzubauen, welche aufgebaut wurde und so die Freilauf-Diode evtl. zerstört. Dieses ständige Ein- und Ausschalten mit hoher Frequenz kann die Hardware durchaus zerstören. Im ungünstigsten Fall reicht der FET den Strom einfach komplett durch, was zu einem Dauerheizen führt. Was bei einem 150-200 Watt Heizbett nicht in einem Desaster endet, wenn vernünftige Kabel und ein gutes Netzteil verbaut wurden.

Bei stärkeren Modulen oder gar einem 230V Heizbett sollten vernünftige Absicherungen getroffen werden und letztlich von einem Fachmann geprüft werden. Selbst in der Marlin-Firmware selbst, wird auf die möglichen Probleme mit der PID-Steuerung eingegangen.

Zusammenfassend:
Die Bang Bang Steuerung ist weniger CPU-auslastend, dafür muss man jedoch 3-4-5°C Temperaturschwankungen in kauf nehmen, was z.B. für den ABS-Druck tödlich sein kann.
Die PID-Regelung benötigt mehr CPU Leistung und fordert die Hardware, dafür ist der Temperaturwert jedoch um die +-0,1°C genau.

Nun kommen wir zu den einzelnen Befehlen, wer eine individuelle Programmabhängige Anleitung benötigt, Octoprint und Repetier-Host Anleitungen sind am Anfang des Artikels verlinkt.

PID-Tuning Hotend / Extruder

PID Autotuning des Hotends

Folgender Befehl wird in die GCode-Eingabe des jeweiligen Slicers / Druckerprogramm eingegeben.

Eingabe:

M106

M303 E0 S230 C8

M106 = Lüfter einschalten, um wirklich auch alle Eventualitäten in betracht zu ziehen
M303 = Autotuning PID (M303 = run PIT-Tuning)
E0 = Extruder 1 (E0 = erstes temperaturgesteuertes Modul, E1 = zweites temperaturgesteuertes Modul usw.)
S230 = 230 °C (S = active Temperatur)
C8 = 8 Messzyklen (C = cycles)

Ergebnis nach 8 Widerholungen:

Recv: PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
Recv: #define DEFAULT_Kp 21.50
Recv: #define DEFAULT_Ki 1.69
Recv: #define DEFAULT_Kd 68.26

Die drei Werte hinterlegen wir im EEPROM mit folgendem Befehl:

M301 P21.50 I1.69 D68.26

und speichern ihn mit folgendem Befehl ab:

M500

Alternativ ist es auch möglich in der Configuration.h von Marlin die PID-Werte direkt einzutragen und anschließend mit der ARDuino Software auf
unseren Controller zu schieben :

Nach “define DEFAULT_Kp” suchen und anschließend die 3 folgenden Werte mit den seinigen austauschen

define DEFAULT_Kp 21.50
define DEFAULT_Ki 1.69
define DEFAULT_Kd 68.26

PID-Tuning Hotbed

Autotuning PID-Heizbett

Falls noch nicht geschehen, muss bevor das Tuning mittels PID-Regelung erfolgen kann, die PID-Funktion in Marlin in der configuration.h aktiviert werden.

Die zu bearbeitenden Zeilen sehen so aus:

//#define PIDTEMPBED
#define BED_LIMIT_SWITCHING

und müssen wie folgt ersetzt werden

#define PIDTEMPBED
//#define BED_LIMIT_SWITCHING

Eingabe:

M303 E-1 C8 S84

M303 = Autotuning PID (M303 = run PIT-Tuning)
E-1 = Heizbett (E-1 = ist als Heizbett für ein temperaturgesteuertes Modul definiert)
C8 = 8 Messzyklen (C = cycles)
S84 = 84 °C (S = active Temperatur)

Ergebnis der Ausgabe nach 8 Zyklen:

Recv: Classic PID
Recv: Kp: 607.27 Ki: 109.01 Kd: 845.70
Recv: PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
Recv: #define DEFAULT_bedKp 607.27
Recv: #define DEFAULT_bedKi 109.01
Recv: #define DEFAULT_bedKd 845.70
Recv: ok

Die drei Werte hinterlegen wir im EEPROM mit folgendem Befehl:

M304 P607.27 I109.01 D845.70

und speichern ihn mit folgendem Befehl ab:

M500

Alternativ ist es auch möglich in der Configuration.h von Marlin die PID-Tuning Werte direkt einzutragen und anschließend mit der ARDuino Software auf
unseren Controller zu schieben :

Nach “define DEFAULT_bedKp” suchen und anschließend die 3 folgenden Werte mit den seinigen austauschen

define DEFAULT_bedKp 607.27
define DEFAULT_bedKi 109.01
define DEFAULT_bedKd 845.70

Kommentar hinterlassen

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