Um eine definierte Termperatur am Hotend zu erhalten gibt es in Marlin zwei Methon. Die Simplere, BANG-BANG genannt begnügt sich damit das Hotend einfach einzuschalten, wenn die Temperatur unter der definierten liegt und auszuschalten wenn sie darüber ist.
Die zweite Methode benutzt PWM um die Temperatur so konstant wie möglich zu halten. Damit diese Methode funktioniert benötigt die Firmware drei Werte, Kp, Ki und Kd. Glücklicherweise verfügt Marlin über eine Methode um diese Werte automatisch zu erhalten.
M303 E0 S200 C8
Dieser Befehl für das PID autotune programm aus, definiert den ersten Extruder (E0),eine Solltemperatur von 200 °C, und 8 Cycles rund um die Temperatur.
Als Ausgabe erhält man von der Firmware die drei genannten Werte, die man in die Firmware (Configuration.h) oder als eigenen Gcode Header einbauen kann. Meine Werte habe ich in Slic3r als custom start gcode eingebaut.
M301 P25.38 I1.40 D115.19 ; set PID for extruder
Posts mit dem Label Firmware werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Firmware werden angezeigt. Alle Posts anzeigen
Montag, 14. Juli 2014
Acceleration und Jerk
Zwei Einstellungen der Firmware beeinflussen das Verhalten des 3D Druckers erheblich, und die möchte ich jetzt etwas genauer analysieren.
Zu diesem Zweck gibt es folgende Parameter in der Marlin Firmware, die unbedingt geändert werden müssen, da sie in der Default Einstellung viel zu hoch sind:
#define DEFAULT_MAX_ACCELERATION {180,180,10,200} // X, Y, Z, E maximum start speed for...
#define DEFAULT_ACCELERATION 60 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 60 // X, Y, Z and E max acceleration in mm/s^2 for retracts
DEFAULT_ACCELERATION definiert die Standardbeschleunigung und DEFAULT_MAX_ACCELERATION die obere Grenze.
Bei einer Suche im Internet habe ich auch User gefunden welche die Werte noch wesentlich niedriger angesetzt haben.
Sind die Werte zu hoch, so kann es durchaus sein, dass der Motor Schritte ausläßt und deshalb Fehler im Druck passieren, sind die Werte zu niedrig, so beeinträchtigt das die Druckgeschwindigkeit. Es bleibt also durchaus Raum für Trial and Error.
Will man die obigen Werte als GCODE dann sind folgende M-Codes zu verwenden
M201 X180 Y180 Z10 E200 # DEFAULT_MAX_ACCELERATION
M204 S60 T60 # DEFAULT_ACCELERATION and DEFAULT_RETRACT_ACCELERATION
Die M-Codes können übrigens auf http://reprap.org/wiki/G-code#M201_-_Set_max_printing_acceleration nachgelesen werden.
// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK 20.0 // (mm/sec)
#define DEFAULT_ZJERK 0.4 // (mm/sec)
#define DEFAULT_EJERK 5.0 // (mm/sec)
Wie üblich ist die Z-Achse die Trägste und kann nicht so schnell bewegt werden, der Extruder ist ebenso unabhängig einstellbar.
Der Begriff JERK kommt aus den GRBL Wurzeln von Merlin.
Bei mir sind diese Werte (noch) default.
Acceleration
Wenn man Beschleunigung nicht berücksichtigt, dann erzeugt das Slicer Programm einfach GCode der quasi von 0-100 in 0 sekunden beschleunigen müsste. Das ganze läßt sich zwar in Software leicht realisieren, aber wenn es um physikalische Bewegungen geht, wie etwa die Steuerung eines Schrittmotors ist das eigentlich nicht möglich. Der Schrittmotor, bzw. die ganze Achse hat nun einmal eine gewisse Trägheit die eine unedliche Beschleuinigung verhindert.Zu diesem Zweck gibt es folgende Parameter in der Marlin Firmware, die unbedingt geändert werden müssen, da sie in der Default Einstellung viel zu hoch sind:
#define DEFAULT_MAX_ACCELERATION {180,180,10,200} // X, Y, Z, E maximum start speed for...
#define DEFAULT_ACCELERATION 60 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 60 // X, Y, Z and E max acceleration in mm/s^2 for retracts
DEFAULT_ACCELERATION definiert die Standardbeschleunigung und DEFAULT_MAX_ACCELERATION die obere Grenze.
Bei einer Suche im Internet habe ich auch User gefunden welche die Werte noch wesentlich niedriger angesetzt haben.
Sind die Werte zu hoch, so kann es durchaus sein, dass der Motor Schritte ausläßt und deshalb Fehler im Druck passieren, sind die Werte zu niedrig, so beeinträchtigt das die Druckgeschwindigkeit. Es bleibt also durchaus Raum für Trial and Error.
Will man die obigen Werte als GCODE dann sind folgende M-Codes zu verwenden
M201 X180 Y180 Z10 E200 # DEFAULT_MAX_ACCELERATION
M204 S60 T60 # DEFAULT_ACCELERATION and DEFAULT_RETRACT_ACCELERATION
Die M-Codes können übrigens auf http://reprap.org/wiki/G-code#M201_-_Set_max_printing_acceleration nachgelesen werden.
Jerk
Jerk ist der maximale Geschwindigkeitsunterschied, der ohne Beschleunigung ausgeführt werden kann. Wenn JERK zum Beispiel 20.00 mm/s wäre und eine Geschwindigkeitsänderung von 0-20 mm/s benötigt wird, dann kann dies ohne Beschleunigung ausgeführt werden.// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK 20.0 // (mm/sec)
#define DEFAULT_ZJERK 0.4 // (mm/sec)
#define DEFAULT_EJERK 5.0 // (mm/sec)
Wie üblich ist die Z-Achse die Trägste und kann nicht so schnell bewegt werden, der Extruder ist ebenso unabhängig einstellbar.
Der Begriff JERK kommt aus den GRBL Wurzeln von Merlin.
Bei mir sind diese Werte (noch) default.
Montag, 7. Juli 2014
Der 3D Print Software Stack
Was ich zu Beginn meiner 3D Druck Karriere noch nicht wußte, war welche Software Produkte man in welcher Abfolge für das Erzeugen eines Drucks benötigt. Hier nochmal eine grobe Übersicht, welche Schritte und welche Produkte notwendig sind.
Ich beschränke mich hier ausschließlich auf OpenSource Software.
Einige Beispiele sind:
Es gibt sicher noch etliche Programm die 3D Modelle erzeugen können, alle sollten aber zumindest die Möglichkeit haben eine Zeichnung im STL Format zu exportieren.
Die nicht CAD geübten sollten sich auf Thingiverse umschauen und fertige Zeichnungen suchen.
Die gängigsten Programm sind
Die Vertreter die ich kenne
Aus den empfangenen GCODES erzeugt die Firmware STEP + DIRECTION Impulse für die Stepper Motor Treiber, die Umrechnung ist nicht ganz trivial und der Interessierte sollte sich mal auf der GRBL Seite schlau machen.
Die gängigste Firmware bei REPRAP basierten Druckern ist wohl Marlin.
Wie man die Firmware auf den Arduino Controller bekommt beschreibe ich in einem anderen Artikel, das ist als Voraussetzung auch nur einmal zu erledigen und reicht dann für viele Drucke.
Ich beschränke mich hier ausschließlich auf OpenSource Software.
Zeichnen
Grundlegend für einen 3D Drucke ist eine CAD Zeichnung, die man in einem x-beliebigen 3D CAD Programm erstellen kann.Einige Beispiele sind:
Es gibt sicher noch etliche Programm die 3D Modelle erzeugen können, alle sollten aber zumindest die Möglichkeit haben eine Zeichnung im STL Format zu exportieren.
Die nicht CAD geübten sollten sich auf Thingiverse umschauen und fertige Zeichnungen suchen.
Slicen
Die vorhandene CAD Zeichnung im STL Format, kann noch nicht als Eingabe für den 3D Drucker gebraucht werden, da sie keinen Schichtenaufbau beschreibt. Die Aufgabe des Slicers besteht nun darin aus einem in der Zeichnung definierten Volumen einzelne Schichten zu extrahieren, und jede Schicht in GCODE zu übersetzen, der direkt als Eingabe für die Firmware verwendet werden kann.Die gängigsten Programm sind
- skeinforce - der Klassiker
- slic3r - der Newcomer (verwende ich)
- ...
Hostsoftware
Die Hostsoftware dient dazu die Gcode Befehle meist über eine virtuelle serielle Schnittstelle an die Firmware auf dem Controller zu senden. Diese Software verfügt meist aber auch noch über eine grafische Darstellung und Kontrollmöglichkeiten um die Motoren und den Extruder auch ohne GCODE zu steuern. Das ist wichtig um z.B. das Heatbed zu kalibrieren, oder einen Filament Stau zu beheben indem man einfach den Extruder einige Millimeter rückwärts fahren läßt.Die Vertreter die ich kenne
- Pronterface (verwende ich)
- repsnapper
- ...
Firmware
Die Firmware ist am Microcontroller installiert und kommuniziert über die serielle Schnittstelle mit der Hostsoftware. Primäre Aufgabe der Firmware ist die Steuerung der 5 Motoren(X, Y, 2*Z, Extruder), des Hotends, des Heatbed, der Überwachung der Endstops und die Temperaturüberwachung.Aus den empfangenen GCODES erzeugt die Firmware STEP + DIRECTION Impulse für die Stepper Motor Treiber, die Umrechnung ist nicht ganz trivial und der Interessierte sollte sich mal auf der GRBL Seite schlau machen.
Die gängigste Firmware bei REPRAP basierten Druckern ist wohl Marlin.
Wie man die Firmware auf den Arduino Controller bekommt beschreibe ich in einem anderen Artikel, das ist als Voraussetzung auch nur einmal zu erledigen und reicht dann für viele Drucke.
Samstag, 5. Juli 2014
Fehler: Ausdrucke sind zu nieder
Jetzt habe ich meinen Drucker soweit kalibriert, sodass eigentlich alles passen sollte, aber bei dem Versuch ein kleines Zahnrad zu drucken, habe ich immer das Problem, dass das Stück einfach zu klein rauskommt, irgendwie gequetscht.Zusätzlich macht mein Drucker beim Start eines Ausrucks komische Geräusche, die wahrscheinlich dadurch verursacht werden, dass die Z Achse zu schnell bewegt wird.
Wie beides zusammenhängt werde ich gleich noch erklären hier zuerst mal ein Bild von einem Zahnrad wie es nicht sein sollte.
Gestaucht, wäre wohl der richtige Ausdruck, aber warum.
Nach langem stöbern bin ich dann doch auf des Rätsels Lösung gekommen.
Da ich Merlin selbst installiert habe und damit auch die Basiskonfiguration verwendet, spricht die Firmware die Motoren mit einer zu hohen Bsschleunigung an, insbesondere die Z-Achse die beim Achatz bei weitem nicht dieses Tempo mithalten kann. Ich denke auch alle anderen 3D Drucker hätten mit diesen Werten ein Problem.
Hier der Diff zur Originalkonfiguration
+#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3970.588235294, 602.898453333} // default steps per unit for Ultimaker
+#define DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec)
+#define DEFAULT_MAX_ACCELERATION {1000,1000,5,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older v
-#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402,78.7402,200.0*8/3,760*1.1} // default steps per unit for Ultimaker
-#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec)
-#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older
-
-#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
-#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts
+#define DEFAULT_ACCELERATION 500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
+#define DEFAULT_RETRACT_ACCELERATION 500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
Insbesondere die DEFAULT_MAX_ACCELERATION muss drastisch verringert werden, damit alles klappt. Eigentlich hat mein 3D Drucker nicht das Werkstück gestaucht, sondern eigentlich nur Steps verloren, weil das Tempo nicht umgesetzt werden konnte.
Und als netter Nebeneffekt verschwand damit auch das komische Geräusch beim starten eines Druckes. Slic3r baut bei jedem Start standardmäßig eine Z +5 Bewegung ein, die bei dem Tempo einfach nicht richtig umgesetzt werden konnte.
So schaut meine Werkstücke nun aus:
Auch sie Maße passen jetzt +/- 0.2 mm, damit bin ich vorerst zufrieden.
Wer jetzt genau hinsieht, erkennt auch gleich noch ein zweites Problem, das ich gelöst habe, aber dazu mehr im nächsten Artikel.
Wie beides zusammenhängt werde ich gleich noch erklären hier zuerst mal ein Bild von einem Zahnrad wie es nicht sein sollte.
Gestaucht, wäre wohl der richtige Ausdruck, aber warum.
Nach langem stöbern bin ich dann doch auf des Rätsels Lösung gekommen.
Da ich Merlin selbst installiert habe und damit auch die Basiskonfiguration verwendet, spricht die Firmware die Motoren mit einer zu hohen Bsschleunigung an, insbesondere die Z-Achse die beim Achatz bei weitem nicht dieses Tempo mithalten kann. Ich denke auch alle anderen 3D Drucker hätten mit diesen Werten ein Problem.
Hier der Diff zur Originalkonfiguration
+#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3970.588235294, 602.898453333} // default steps per unit for Ultimaker
+#define DEFAULT_MAX_FEEDRATE {300, 300, 3, 25} // (mm/sec)
+#define DEFAULT_MAX_ACCELERATION {1000,1000,5,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older v
-#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402,78.7402,200.0*8/3,760*1.1} // default steps per unit for Ultimaker
-#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25} // (mm/sec)
-#define DEFAULT_MAX_ACCELERATION {9000,9000,100,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older
-
-#define DEFAULT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
-#define DEFAULT_RETRACT_ACCELERATION 3000 // X, Y, Z and E max acceleration in mm/s^2 for retracts
+#define DEFAULT_ACCELERATION 500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
+#define DEFAULT_RETRACT_ACCELERATION 500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
Insbesondere die DEFAULT_MAX_ACCELERATION muss drastisch verringert werden, damit alles klappt. Eigentlich hat mein 3D Drucker nicht das Werkstück gestaucht, sondern eigentlich nur Steps verloren, weil das Tempo nicht umgesetzt werden konnte.
Und als netter Nebeneffekt verschwand damit auch das komische Geräusch beim starten eines Druckes. Slic3r baut bei jedem Start standardmäßig eine Z +5 Bewegung ein, die bei dem Tempo einfach nicht richtig umgesetzt werden konnte.
So schaut meine Werkstücke nun aus:
Auch sie Maße passen jetzt +/- 0.2 mm, damit bin ich vorerst zufrieden.
Wer jetzt genau hinsieht, erkennt auch gleich noch ein zweites Problem, das ich gelöst habe, aber dazu mehr im nächsten Artikel.
Mittwoch, 11. Juni 2014
Prusa I3 Achatz Edition Kalibrieren - Extruder
Mein 3D Drucker von Achatz ist jetzt soweit fertigestellt, dass es an das Kalibrieren geht. Die Adresse von der die Informationen haben ist http://reprap.org/wiki/Calibration.
Heute nehme ich mir die Kalibrierung des Extruders/Hotends vor, lt. Anleitung Layer Width auf 0.2 mm und Layer Height auf 0.5 mm in Skeinforce -> Carve.
Mal sehen wie der Drucke des http://www.thingiverse.com/download:17273 Things klappt.
Folgendes habe ich bis in Sachen kalibrierung schon erledigt:
Dazu gehört dann auch noch die Anbringung der Endstops, da vor jedem Print ein Home auf allen drei Achsen durchgeführt wird.
Vor dem Test noch auf der Seite neben dem Heatbed noch schnell mal den Extruder 30mm frei laufen lassen, sodass ich mir sicher bin, dass auch wirklich etwas rauskommt.
Hier das erste Ergebnis
Zwei Seiten schauen ganz gut aus, auf der Rückseite ist bei den letzen Layern aber die Ecke etwas eingebrochen. Lt. der Anleitung die im reprap Wiki gefunden habe, ist es für den ersten Versuch in Ordnung wenn nur eine Seite wirklich gut ausschaut.
Das ist jetzt etwas Subjektiv, aber ich denke eine Seite ist echt gut, die zweite geht so, die beiden anderen sind schlicht Sc....e.
Ein zweiter Versuch, diesmal mit aktiver Kühlung, da ich den Test mit PLA mache, mal sehen ob das etwas verändert.
Rechte der zweite Versuch, links der Erste. Man erkennt schön dass die obere Ecke beim zweiten Versuch wesentlich besser ist.
Zweiter Versuch war wirklich besser, ich vermesse nun das Objekt um die Dimensionen zu kontrollieren.
Als nächstes Objekt drucke ich
Als Baseline mache ich einen Druck mit Skeinforge Standardeinstellung von 0.35.
Hier das Ergebnis
besser geasgt, das was vor meinem Abbruch davon zu sehen war.
Leider hat der Test m.M. überhaupt nicht geklappt, schon beim zweiten Layer hatte ich das Gefühl das das Hotend in den ersten Layer hineindruckt und mit jedem Layer wurde das schlimmer, das Plastik wurde hart, das Hotend kam nicht mehr vorbei und Y und X wurden versetzt -> Abbruch.
Als nächstes wie im Wiki vorgeschlagen mit dem Wert 1.0
Also abbrechen musste diesmal nicht sein, aber ih bemerkte, dass bei jedem Layer etwas zuviel Plastik aufgetragen wird, sodass bei den letzten Layern das Hotend eigentlich in den vorherigen Layer hinein Extrudiert.
Irgendwie bin ich heute einfach zu müde weiter zu machen, irgendwas ist hier nicht optimal eingestellt, aber was?
Heute nehme ich mir die Kalibrierung des Extruders/Hotends vor, lt. Anleitung Layer Width auf 0.2 mm und Layer Height auf 0.5 mm in Skeinforce -> Carve.
Mal sehen wie der Drucke des http://www.thingiverse.com/download:17273 Things klappt.
Folgendes habe ich bis in Sachen kalibrierung schon erledigt:
- X, Y Achsen sind bestimmt durch die Anzahl der Zähne am Stepper Motor und der Abstände am Riemen, das haben ich als Parameter in der Merlin Firmware hinterlegt.
- Z Achse gemessen und den Wert in der Firmware solange angepasst, bis das gemessene mit dem eingestellten zusammenpassen.
- Extruder gemessen und angepasst.
- HeatBeat in der Höhe nivelliert, sodass das Hotend immer denselben Abstand zum Heatbed besitzt.
Dazu gehört dann auch noch die Anbringung der Endstops, da vor jedem Print ein Home auf allen drei Achsen durchgeführt wird.
Vor dem Test noch auf der Seite neben dem Heatbed noch schnell mal den Extruder 30mm frei laufen lassen, sodass ich mir sicher bin, dass auch wirklich etwas rauskommt.
Hier das erste Ergebnis
Zwei Seiten schauen ganz gut aus, auf der Rückseite ist bei den letzen Layern aber die Ecke etwas eingebrochen. Lt. der Anleitung die im reprap Wiki gefunden habe, ist es für den ersten Versuch in Ordnung wenn nur eine Seite wirklich gut ausschaut.
Das ist jetzt etwas Subjektiv, aber ich denke eine Seite ist echt gut, die zweite geht so, die beiden anderen sind schlicht Sc....e.
Ein zweiter Versuch, diesmal mit aktiver Kühlung, da ich den Test mit PLA mache, mal sehen ob das etwas verändert.
Rechte der zweite Versuch, links der Erste. Man erkennt schön dass die obere Ecke beim zweiten Versuch wesentlich besser ist.
Zweiter Versuch war wirklich besser, ich vermesse nun das Objekt um die Dimensionen zu kontrollieren.
- Wandstärke 0.86mm
- Seitenlänge 22.38mm SOLL 22.5 mm
- Höhe 9.85mm SOLL 10mm
Als nächstes Objekt drucke ich
Als Baseline mache ich einen Druck mit Skeinforge Standardeinstellung von 0.35.
Hier das Ergebnis
besser geasgt, das was vor meinem Abbruch davon zu sehen war.
Leider hat der Test m.M. überhaupt nicht geklappt, schon beim zweiten Layer hatte ich das Gefühl das das Hotend in den ersten Layer hineindruckt und mit jedem Layer wurde das schlimmer, das Plastik wurde hart, das Hotend kam nicht mehr vorbei und Y und X wurden versetzt -> Abbruch.
Als nächstes wie im Wiki vorgeschlagen mit dem Wert 1.0
Also abbrechen musste diesmal nicht sein, aber ih bemerkte, dass bei jedem Layer etwas zuviel Plastik aufgetragen wird, sodass bei den letzten Layern das Hotend eigentlich in den vorherigen Layer hinein Extrudiert.
Irgendwie bin ich heute einfach zu müde weiter zu machen, irgendwas ist hier nicht optimal eingestellt, aber was?
Abonnieren
Posts (Atom)








