3D-Drucker – Warum die Firmware nach Unterbrechung der USB Verbindung ewig weiter heizt?

Folgertech FT-5
Folgertech FT-5

3D-Drucker –Das M85 Kommando für mehr Sicherheit

Ich drucke meistens über Octoprint um vom PC unabhängig zu sein.
Kürzlich löste sich das Kabel der Stromversorgung vom Raspberry  Pi, der Drucker hielt an und wartete auf weitere Befehle. Leider heizt er in diesem Fall auch Düse und Bett unendlich weiter.
Immerhin hält er die Temperatur konstant. Allerdings schwebt die  200°C heisse Düse über dem Druckobjekt und schmilzt den Kunststoff an.
Ein Fehlerfall den man nicht haben möchte.
Insbesondere geschlossene Drucker würden sich kontinuierlich aufheizen.
Den gleichen Effekt kann man beobachten wenn beim Drucken über den PC, dieser in den Energiesparmodus fährt. „3D-Drucker – Warum die Firmware nach Unterbrechung der USB Verbindung ewig weiter heizt?“ weiterlesen

3D-Drucker PID Tuning für Extruder und Heizbett

PIDPID Regler beim 3D-Drucker optimieren

Im Druckbetrieb sollten die Temperaturwerte für  Extruder und Heizbett möglichst konstant bleiben.
Sollten größeren Schwankungen auftreten lohnt es sich die Einstellungen des PID Reglers anzupassen.
Da die Bauteile über eine gewisse Masse und Wärmekapazität verfügen, verwendet man keine einfache Zweipunktregelung. Die Schwankungen wären zu groß. Zum Glück muss man sich nicht mit den mathematischen Feinheiten des Regler auseinander setzen. Der PID Regler ist Bestandteil der Firmware und diese stellt auch G-Code Kommandos für die Einstellung der Regler bereit.

Überprüfen der Temperaturen

Verfügt der Drucker über ein Display, werden in der Regel dort die Temperaturen angezeigt. Damit kann man Schwankungen kaum beurteilen. Zuverlässiger sind bei Octoprint, Repetier Host und Pronterface die Temperaturkurven.
Im abgebildeten Repetier Host sieht man nach Beginn des Druck noch einen Einschwingvorgang der durch das Einsetzen der Filamentkühlung bedingt ist. Im weiteren Verlauf bleiben die Temperaturen konstant.
Bei der Ermittlung der PID Werte für den Extruder hatte ich den Filament-Lüfter eingeschaltet, da er auch im Druckbetrieb bist auf die erste Lage ständig an ist.

Vorgehen
Man beginnt mit abgekühltem Extruder/Heizbett. An einer Console wie Pronterface oder Octoprint gibt man den entsprechenden G-Code Befehl 303 nebst Parameter ein. Nach einigen Messzyklen werden die PID Werte angezeigt.
Die Min und Max Werte zeigen in welchem Bereich der Regler die Temperatur konstant hält.
Die ermittelten K-Werte schreibt man in den EPROM des Prozessors(Arduino) oder bei der Firmware Marlin in die Configuration.h.
In Repetier Host kann man zwar den G-Code in der Konsole absetzen, aber nur bei der Repetier Firmware bekommt die Antworten angezeigt.
Im Fall der Configuration.h muss man die geänderte Firmware per Arduino IDE auf den Arduino übertragen. Das setzt voraus, das die Firmware als Sourcedatei vorliegt.

Autotuning PID Extruder

Befehl: M303 E0 S210 C8

M303 = Autotuning PID
E0 = Extruder 1
S210 = 210 Grad Celsius
C8 = 8 Messzyklen

Beispiel ermittelte PID Werte:
bias: 91 d: 91 min: 206.48 max: 213.59
Ku: 32.59 Tu: 26.48
Classic PID
Kp: 19.56
Ki: 1.48
Kd: 64.72

Speichern im EPROM:

M301 P19.56 I1.48 D64.72
M500

Speichern in der Configuration.h bei Merlin:

// Hephestos (i3)
#define DEFAULT_Kp 19.56
#define DEFAULT_Ki 1.48
#define DEFAULT_Kd 64.72

 

Autotuning PID Heizbett

Befehl: M303 E-1 C8 S53

M303 = Autotuning PID
S53 = 53 Grad Celsius
C8 = 8 Messzyklen

Beispiel ermittelte PID Werte:
bias: 50 d: 50 min: 52.97 max: 53.13
Ku: 814.87 Tu: 11.80
Classic PID
Kp: 488.92
Ki: 82.89
Kd: 720.98

Speichern im EPROM:

M304 P488.92 I82.89 D720.98
M500

Speichern in der Configuration.h bei Merlin:

#define  DEFAULT_bedKp 488.92
#define  DEFAULT_bedKi 82.89
#define  DEFAULT_bedKd 720.98

3D-Drucker Heizbett beim Prusa I3 Hephestos nachrüsten

Nachdem unsere Raumtemperatur unter 20 Grad gefallen war, wollte das PLA nicht richtig haften. Selbst das Bluetape von 3Mhalf nicht.
Die Lösung war ein heizbares Druckbett. Bei ABS ohnehin Pflicht hilft es auch bei PLA.

Das Kit mit dem Heizbett hatten wir eh schon mitbestellt. Mit 15€ kostet es auch nicht die Welt. Neben der Leiterplatte die als Heizung fungiert, sind noch Kabel und ein 100k Thermistor zur Temperaturmessung mit dabei.

Einbau:
Die Kunststoffgrundplatte haben wir zu Gunsten der Stabilität beibehalten. Zwischen dieser und der Glasplatte haben wir zwecks Isolierung eine Korkplatte eingezogen und darauf das Heizbett. Das Heizbett liegt zur besseren Wärmeabgabe mit den Leiterbahnen nach oben. Grundplatte und Korkplatte bekamen mittig ein 1cm Loch für den Thermistor. Für die Kabelanschlüsse des Heizbetts wurden beide mit einer Aussparung versehen.
Die Anschlüsse des Thermistors sind nicht lötbar. Hier am besten Quetschhülsen verwenden. Die Kabel des Heizbettes sind von unten anzulöten. Sonst stünden sie der Glasplatte im Weg.
Optional kann man noch eine LED plus Widerstand einbauen.
Der Thermistor liegt unmittelbar in dem Loch unter der Glasplatte. Dieses ist mit Heißkleber vergossen. Wir verwenden nur PLA. Bei ABS Temperaturen geht das natürlich nicht.

Die Leitungen sind ebenfalls mit Heißkleber an der Grundplatte befestigt. Man hätte auch ein paar M3 Gewinde in die Platte machen können.
Durch die Bewegungen des Drucktisches werden die beiden Kabelstränge mechanisch beansprucht. Wir haben ihnen deshalb einen Spiralschlauch gegönnt.

Wo Thermistor und Heizung auf dem Ramps 1.4 anzuschließen sind, sieht man hier auf der Zeichnung.

Ramps 1.4

 

Firmwareanpassung
Die Marlin Firmware müssen wir noch etwas anpassen. Dazu laden wir die Marlin Firmware Sourcen aus dem RepRap Wiki in die Arduino IDE. Als Arduino Typ stellen wir den Mega 2560 ein.
In der  Configuration.h stellen wir in Zeile135:
#define TEMP_SENSOR_BED 0 auf   #define TEMP_SENSOR_BED 1.

In der Regel ist beim Hephestos schon der Power MOSFET für die Bettheizung aktiviert.
Bei #define MOTHERBOARD  muss der Wert 33 stehen.

// 33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
#define MOTHERBOARD 33

Wenn man möchte, kann man in Zeile 160 noch die maximale Betttemperatur einstellen.
(#define BED_MAXTEMP 60)

Den Endlagenschalter der Z Achse und die Grundplatte muss natürlich neu justiert werden.

Test:
In Pronterface muss bei der Betttemperatur die Raumtemperatur angezeigt werden. Andernfalls ist der Thermistor nicht richtig angeschlossen oder in Marlin nicht eingestellt

Fazit:
Der Umbau geht schnell. Wenn man die Grundplatte beibehält verliert man 1cm Druckhöhe. Etwas längere Schrauben und größere Foldbackklammern mit mindestens 25 mm Rücken sind zusätzlich erforderlich.
Die Korkplatte minimiert den Stromverbrauch und verhindert eine Erwärmung der Grundplatte

Alternativen:
Eine dünnere Grundplatte aus Metall würde Bauraum sparen und einen besseren Brandschutz bilden.

Temperaturverlauf:
Die Regelung des Ramps 1.4 hält die Temperatur auf 1 Grad genau. Im Außenbereich des Heizbettes liegt die Temperatur um 5 Grad niedriger.

Stromversorgung:
Erfolgt durch ein PC ATX Netzteil. Mehr dazu in einem separaten Artikel

Bild vom Aufbau folgt noch…