Mach deinen 3D-Drucker zum Selbstläufer – mit Auto-Ejection, Druck-Warteschlangen und Endlosschleifen!

Mach deinen 3D-Drucker zum Selbstläufer – mit Auto-Ejection, Druck-Warteschlangen und Endlosschleifen!

Legen wir direkt los! Wenn du einen Klipper-Drucker hast, ist das Ganze super easy – denn diese Funktionen sind direkt in die Klipper-Firmware integriert. Trotzdem werden sie oft übersehen.

Für diese Anleitung nutzen wir den Orca Slicer, aber das Ganze funktioniert auch mit jedem anderen Slicer deiner Wahl.


‼️ WARNUNG ‼️ WARNUNG ‼️ WARNUNG ‼️ WARNUNG ‼️ WARNUNG ‼️

Die folgende Anleitung bezieht sich auf das Bearbeiten von G-Code und Firmware. Wenn du hier Fehler machst, kannst du deinen Drucker beschädigen. Ab jetzt handelst du auf eigene Gefahr!

‼️ WARNUNG ‼️ WARNUNG ‼️ WARNUNG ‼️ WARNUNG ‼️ WARNUNG ‼️


Einrichten einer Druck-Warteschlange

Öffne den Orca Slicer und wechsle zu den Geräteeinstellungen. Dann geh in der linken Symbolleiste zu den Maschinenoptionen (bei Mainsail) oder zur Konfiguration (bei Fluidd). Öffne dort die Datei moonraker.conf und füge Folgendes hinzu:

[job_queue]
load_on_startup: True
automatic_transition: True
job_transition_delay: 10
job_transition_gcode: CLEAR_BED

Stelle außerdem sicher, dass Folgendes ebenfalls enthalten ist:

[file_manager]
queue_gcode_uploads: True
enable_object_processing: False

Speichere die Datei und starte dein System neu.

Damit wird die Warteschlange eingerichtet – ein Druckauftrag folgt automatisch dem nächsten. Genau das bewirken die ersten beiden Zeilen. Die Übergangsverzögerung sorgt dafür, dass 10 Sekunden Pause zwischen den Druckjobs liegen – diesen Wert kannst du natürlich nach Belieben anpassen. Der sogenannte Transition-G-Code ist der G-Code, der zwischen zwei Druckjobs ausgeführt wird. Hier musst du also festlegen, dass der Drucker den fertigen Druck automatisch auswirft, bevor der nächste startet.

Geh jetzt zurück zu machine und öffne dann die Datei gcode_macro.cfg. Dort fügst du Folgendes ein:

[gcode_macro CLEAR_BED]

G-Code:

M190 S30 #wait for bed temp to be 30
G91 #relative positioning
G1 Z10 #Raise Z10
G90 #absolute positioning
G1 X110 Y218 F3000 #Move printhead to middle and back
G1 Z1 #Move printhead down
G90 #absolute positioning
G1 X110 Y1 Z1 F2400 #Push Print off

Dieses Makro räumt das Druckbett zwischen zwei Druckaufträgen frei. Der erste Befehl wartet, bis das Bett auf 30 °C abgekühlt ist. 30 °C haben bei uns gut funktioniert – wir haben eine strukturierte PEI-Platte von 3DJake verwendet. Falls du eine andere Platte oder ein anderes Filament nutzt, musst du hier vielleicht ein bisschen experimentieren. Für unsere Tests haben wir ausschließlich unser 3DJake ecoPLA verwendet.

G91 aktiviert die relative Positionierung – das heißt, alle folgenden Bewegungsbefehle beziehen sich auf die aktuelle Position des Druckkopfs. Mit G1 fährt der Druckkopf ein Stück nach oben und weg vom gedruckten Teil. Danach setzt G90 wieder auf absolute Positionierung – der Druckkopf bewegt sich jetzt zu festen XY-Koordinaten im Druckbereich, unabhängig davon, wo er sich gerade befindet. Der nächste G1-Befehl fährt den Druckkopf genau in die Mitte der X-Achse und ganz nach hinten an den Rand des Druckbetts, und zwar mit einer Geschwindigkeit von 3000 mm/min. Danach fährt der Druckkopf mit G1 auf 1 mm über das Bett hinunter, und mit dem letzten G90-Befehl schiebt er das fertige Modell nach vorne weg.

Das war’s im Grunde schon! Jetzt musst du nur noch eine Datei vorbereiten und drucken – und dann gleich die nächste hinterherschicken. Du wirst auf der Geräteseite sehen, dass eine Warteschlange gestartet wurde. Sobald der erste Druck fertig ist, wird automatisch das CLEAR_BED-Makro ausgelöst. Der Drucker wartet dann, bis das Bett auf 30 °C abgekühlt ist, und räumt anschließend das Modell herunter. Ganz ohne dein Zutun!


Einen Druck in Endlosschleife wiederholen

Okay, die Sache mit den Warteschlangen hätten wir. Aber was ist, wenn du dieselbe Datei immer und immer wieder drucken willst? Dafür gibt’s den SD_LOOP-Befehl.

Dazu gehst du einfach in deine printer.cfg und fügst irgendwo den Abschnitt [sdcard_loop] ein – der genaue Platz spielt keine große Rolle. Damit aktivierst du grundsätzlich die Möglichkeit, Drucke in einer Schleife laufen zu lassen. Jetzt brauchst du nur noch einen passenden G-Code-Befehl, um das Ganze zu starten. Am besten machst du das direkt im Slicer – ich würde dir empfehlen, dafür ein eigenes Druckprofil anzulegen. So kannst du ganz bequem zwischen „normalem Druck“ und „Loop-Druck“ hin- und herschalten.

In deinem Druckerprofil gehst du zu den Maschinen-G-Codes und trägst im Start-G-Code folgendes ein: SDCARD_LOOP_BEGIN COUNT=5. In diesem Fall wird der Druck 5-mal wiederholt. Du kannst den Wert natürlich anpassen – und wenn der Druck unendlich oft wiederholt werden soll, setzt du einfach COUNT=0.

Wir nutzen zwar keine Druck-Warteschlange, aber das gleiche G-Code-Makro zum Räumen des Druckbetts kannst du trotzdem verwenden. Du hast hier zwei Möglichkeiten: Entweder du kopierst den Inhalt des Makros, das wir vorher erstellt haben, direkt in den End-G-Code deines Slicers – oder du schreibst einfach den Befehl CLEAR_BED in den End-G-Code, vorausgesetzt, du hast das Makro bereits in deiner macro.cfg angelegt.

Ganz wichtig: Am Ende deines End-G-Codes muss noch SDCARD_LOOP_END stehen. Das ist das Signal an den Drucker, dass hier die Schleife endet. Alles zwischen SDCARD_LOOP_BEGIN COUNT=5 und SDCARD_LOOP_END wird also entsprechend oft wiederholt.

Und jetzt speichern – und dann einfach den Druck starten. Schon läuft dein Loop ganz automatisch!

Wenn der Druck abgeschlossen ist, bleibt der Fortschrittsbalken einfach bei 99 % stehen, bis die Temperatur des Druckbetts auf 30 °C abgesunken ist. Erst dann wird das Modell automatisch entfernt – und danach startet der nächste Durchlauf.

Falls du die Schleife nach dem aktuellen Druckdurchgang stoppen möchtest, kannst du einfach SDCARD_LOOP_DESIST in die Konsole eingeben. Dann wird der nächste Druck nicht mehr gestartet.


Marlin-Drucker

Und was ist, wenn du keinen Klipper-Drucker hast? Kein Problem – du kannst etwas ganz Ähnliches machen, wie wir eben gezeigt haben. Du musst einfach den End-G-Code so anpassen, dass dein Drucker den fertigen Druck automatisch auswirft. Die grundlegende Idee ist gleich, aber die Werte können je nach Druckermodell unterschiedlich sein.

Schauen wir uns das nochmal genauer an:

M190 S30 #wait for bed temp to be 30
G91 #relative positioning
G1 Z10 #Raise Z10
G90 #absolute positioning
G1 X110 Y218 F3000 #Move printhead to middle and back
G1 Z1 #Move printhead down
G90 #absolute positioning
G1 X110 Y1 Z1 F2400 #Push Print off

Du kannst die hier gezeigten Befehle grundsätzlich für jeden Drucker verwenden – aber Achtung: Die G1-Befehle für X und Y (Zeile 5 und 8) sind nur für den K1-Drucker oder ähnliche CoreXY-Drucker mit identischem Bauraum geeignet.

Du musst wissen, wie groß dein Bauraum ist. Wenn dein Druckbett z. B. 250 mm breit ist, sollte Zeile 5 folgendermaßen aussehen:

G1 X125 Y248 F3000 #Move printhead to middle and back

Damit fährt der Druckkopf in die Mitte der X-Achse (also 125 mm vom Rand entfernt) und ganz nach hinten auf der Y-Achse, nur 2 mm vom hinteren Rand entfernt.

Dann sollte Zeile 8 so aussehen:

G1 X125 Y1 Z1 F2400 #Push Print off

Damit bleibt der Druckkopf in der Mitte der X-Achse, bewegt sich aber ganz nach vorne, also nur 1 mm vom vorderen Rand entfernt, um den Druck vom Bett zu schieben.

Behalte im Hinterkopf: Diese Methode ist für das Schieben mit dem Druckkopf gedacht. Du musst aber nicht unbedingt den Druckkopf dafür verwenden – oft ist es sogar besser, den gesamten Portalrahmen zum Schieben zu nutzen.

Beim K1 ist das allerdings problematisch, weil die Riemen im Weg sind. Deswegen sollte dort möglichst wenig Kraft auf das Portal wirken – daher empfehlen wir, beim K1 lieber mit dem Druckkopf zu schieben.

Wenn du mit dem Gantry schieben willst, musst du nur die Position des Druckkopfs auf der X-Achse ändern. Verschiebe ihn also einfach zur Seite. Für ein Druckbett mit 250 mm Breite könnten Zeile 5 und 8 dann so aussehen:

Zeile 5: G1 X1 Y248 F3000 #Move printhead to middle and back
Zeile 8: G1 X1 Y1 Z1 F2400 #Push Print off

Und wie sieht’s mit Looping bei Marlin aus? Wenn du einen Marlin-Drucker hast, kannst du im Grunde genau dasselbe machen wie beim Looping unter Klipper – nur eben mit dem Befehl M808. Das Prinzip bleibt gleich: Du richtest den Loop über den Start- und End-G-Code in deinem Slicer ein. Genauere Infos und Beispiele findest du übrigens auch auf der Marlin-Website – da lohnt sich ein Blick, wenn du tiefer eintauchen willst.


Looping für Nicht-Klipper-Drucker

Wenn du keinen Klipper-Drucker hast, kannst du trotzdem einen Loop einrichten – ganz einfach, indem du mehrere G-Code-Dateien aneinanderhängst und diese über die SD-Karte druckst. Alternativ kannst du das Ganze auch als .3mf-Datei exportieren – das ist im Grunde nur ein komprimierter Ordner.

So geht’s mit Orca Slicer:

Slice deinen Druck wie gewohnt und exportiere ihn dann als „Plate Sliced File“. Diese Datei kannst du mit einem Entpacker wie WinRAR öffnen – im Ordner metadata findest du dann den G-Code. Öffne die Datei in einem Texteditor. Jetzt kannst du den gesamten Inhalt kopieren. Wenn du dieselbe Datei mehrfach drucken willst, fügst du den kopierten Code einfach mehrfach hintereinander ein. Wenn du eine Druck-Warteschlange mit verschiedenen Modellen erstellen möchtest, musst du die anderen Modelle ebenfalls slicen, deren G-Code exportieren und dann nach dem ersten G-Code einfügen.

Speichere jetzt einfach die bearbeitete Textdatei und schließe sie. WINRAR wird dich fragen, ob du das Archiv mit den Änderungen aktualisieren willst – klick auf „Ja“, und deine Änderungen werden übernommen. Öffne dann die .3mf-Datei erneut im Orca Slicer. In der Vorschau siehst du jetzt, dass sich die Modelle überlappen und sich auch die Druckzeit verändert hat – genau das wollen wir!

Jetzt brauchst du die Datei nur noch an deinen Drucker zu schicken – und er wird das Modell so oft drucken und automatisch auswerfen, wie du den G-Code eingefügt hast.

► Wenn du das Ganze mit einem Bambu Lab Drucker machst – also einem Modell der A-, P- oder X-Serie – läuft das im Prinzip genauso ab. Aber: Wir können dir nur wärmstens empfehlen, dir die Videos von Factorian Design anzuschauen. Er geht extrem detailliert auf alles ein und hat wirklich viel Arbeit investiert, um die nötigen G-Code-Anpassungen perfekt auf die Bambu-Drucker abzustimmen. Das lohnt sich definitiv, wenn du es richtig machen willst!



Ein paar Dinge, die du beachten solltest:

End-G-Code bearbeiten

Vielleicht bekommst du eine Fehlermeldung, die dir sagt, dass der Drucker alle Achsen homen muss, bevor das CLEAR_BED-Makro ausgeführt werden kann. Bei uns lag das daran, dass im END_PRINT-Makro im End-G-Code ein M84-Befehl stand. Und das könnte dir auch passieren – viele Drucker nutzen im End-G-Code Makros, statt jede G-Code-Zeile einzeln zu schreiben.

Was tun? Schau in deiner macro.cfg nach dem entsprechenden Makro (z. B. END_PRINT) und bearbeite es direkt dort. Wenn der komplette G-Code im End-G-Code-Feld steht, kannst du ihn einfach dort anpassen.

► End-G-Code komplett ersetzen

Bei manchen Druckern – insbesondere solchen, bei denen du keinen Zugriff auf die Makro-Dateien hast – kann es notwendig sein, den End-G-Code vollständig zu ersetzen. In solchen Fällen reicht oft schon ein ganz einfacher Code, zum Beispiel:

M104 S0 ; extruder heater off
M140 S0 ; heated bed heater off (if you have it)
G91 ; relative positioning
G1 E-1 F300 ; retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F9000 ; move Z up a bit and retract filament even more
G28 X0 Y0 ; move X/Y to min endstops, so the head is out of the way
M84 ; steppers off
G90 ; absolute positioning

Wenn dein Drucker über einen Nozzle-Wiper verfügt, kannst du ganz einfach ein paar G1-Befehle einfügen, um die Düse nach dem Druck darüber zu bewegen und zu reinigen.

► Platzbedarf beachten

Damit der Druckkopf das Modell vom Bett schieben kann, muss er sich vorher richtig positionieren – das heißt: Er braucht genug Bewegungsfreiheit, um sich nahe genug ans Bett zu bewegen, bevor er nach vorne fährt und das Modell abstößt.

In unserem Test haben wir den Druckkopf hinten auf dem Bett positioniert. Beim K1 heißt das konkret: Die hinteren 55 mm des Bauraums sind wegen der Größe des Druckkopfs nicht nutzbar. Miss also unbedingt den Freiraum deines Druckkopfs aus, bevor du das Ganze ausprobierst – und stell sicher, dass dein Modell nicht in dieser Gefahrenzone liegt.

Außerdem wichtig: Die Modellgröße selbst. Sehr kleine oder flache Modelle mit großer Auflagefläche haften oft zu stark – da klappt das Herausschieben kaum. Sehr große Modelle haften ebenfalls extrem stark und lassen sich nur schwer abstoßen. In solchen Fällen ist es meist besser, den gesamten Portalrahmen zum Schieben zu verwenden – das bringt deutlich mehr Kraft und ist für große Modelle effektiver als der Druckkopf allein.

► Haftung am Druckbett

Schlechte und zu gute Haftung können beide zum Problem werden: Wenn die Haftung zu schwach ist, wird es schwer, mehrere Drucke hintereinander auf exakt derselben Stelle durchzuführen – das Modell kann sich schon beim zweiten Durchlauf lösen oder verrutschen. Wenn die Haftung zu stark ist, schafft es der Druckkopf nicht, das Teil abzulösen – und das kann im schlimmsten Fall sogar deinen Drucker beschädigen.

Die Lösung? Ein gutes Druckbett (z. B. eine hochwertige PEI-Platte) und ein perfekt eingestellter Z-Offset sind absolut entscheidend, wenn du diese Auto-Ejection-Methode zuverlässig nutzen willst.

► Geeignete Filamente

Filamente, die ein geschlossenes Gehäuse benötigen, sind für diese Methode nicht geeignet – denn die Druckertür muss offen bleiben, damit das Modell ausgeworfen werden kann. Das bedeutet: ABS, Nylon, ASA und ähnliche Materialien fallen raus. Selbst PETG kann problematisch sein, weil es oft extrem gut haftet und sich schwer vom Bett löst.

► Purge Lines

Wenn dein Drucker vor jedem Druckstart eine Purge Line zieht, solltest du diese durch etwas anderes ersetzen. Wir hatten bei unserem K1 z. B. eine KAMP Purge Line aktiviert. Wird diese bei jedem Loop erneut gedruckt, ohne entfernt zu werden, kann es zu Problemen führen.

Aber: Der Drucker MUSS vor jedem Druck Material vorschieben, um die Düse vorzubereiten. Deshalb unser Tipp: Ersetze die Purge Line durch einen kleinen Brim (z. B. 2 mm) – dieser wird dann zusammen mit dem Modell ausgeworfen.

► Heißes Hotend = Oozing-Gefahr

Achte darauf, dass sich das Hotend beim Abkühlen des Heizbetts ausschaltet – sonst kann es sein, dass weiterhin Material austritt (Oozing) und dein erster Layer versaut wird. Das kann passieren, wenn du das END_PRINT-Makro komplett entfernst. In dem Fall läuft der Befehl zum Abschalten des Hotends nicht mehr automatisch mit.

Füge in deinem End-G-Code ein M104 S0 Command ein – dieser Befehl schaltet den Heizblock aus. Wichtig: Unbedingt vor SDCARD_LOOP_END platzieren, sonst wird er nicht korrekt ausgeführt.

► Schwerkraft nutzen!

Wenn dein Modell beim Auswurf nicht ganz vom Bett fällt, kannst du dir einfach die Schwerkraft zunutze machen! Ein leichter Winkel des Druckers – wie im Video von Factorian Design gezeigt – kann die Zuverlässigkeit der Auto-Ejection deutlich erhöhen.

Aber Achtung: Wenn du deinen Drucker neigst, dann mach das stabil und sicher – und führe danach unbedingt eine neue Input-Shaping-Kalibrierung durch, um weiterhin saubere Druckergebnisse zu bekommen!

► Runterrollen – aber richtig!

Wenn du einen Bedslinger hast, kann es passieren, dass das ausgeworfene Teil zwischen Bett und Druckergehäuse eingeklemmt wird. Lege einfach ein Stück Papier oder Karton fest unter das Druckbett – so kann das Modell sauber herunterrollen, ohne irgendwo stecken zu bleiben.

► Pusher Plate – der Auswurf-Booster

Wenn du noch mehr Zuverlässigkeit beim Auswurf willst, kannst du dir eine kleine Pusher Plate drucken – also eine Anschraubplatte für den Druckkopf, die den Druck besser vom Bett schieben kann. Aber: Achte unbedingt auf den maximalen Bewegungsbereich deines Druckers! Die Platte darf nirgendwo anecken oder kollidieren – sonst gibt’s schnell einen Crash.