Farbwechsel ohne M600 – Eine mögliche Lösung

Ich hab schon mehrfach Möglichkeiten zum Filament-/Farbwechsel mit Cura gezeigt, ob nun mit einem oder mehreren Extrudern, auf einer bestimmten Höhe oder auch innerhalb eines Layers. Prinzipiell sind die Möglichkeiten da fast unbegrenzt. Auf eine Einschränkung hab ich im letzten Beitrag zum Multicolor mit einem Extruder schon hingewiesen. Es geht um den verwendeten M600 Befehl zum Filamentwechsel. Bei dem Beispiel hab ich auf den Wechsel der Firmware verwiesen um den Befehl zu aktivieren. Im Normalfall ist dieser Befehl bei jedem Drucker mit Filamentsensor als erweiterte Pause aktiviert. Offensichtlich gibt es wohl auch Drucker mit aktiviertem M600, bei denen wohl der Befehl nicht komplett in der Displayfirmware umgesetzt wurde. Bei den alten monochromen Displays kennt man dieses Problem nicht. Ein CR-10 Display hat keine eigene Firmware und bekommt das direkt vom Board. Am Display vom Ender-3 V2/Voxelab Aquila X2 ist mir das nicht aufgefallen. Das JyersUI scheint das ordentlich umzusetzen. Bei den TouchDisplays scheint es nicht so gut auszusehen. Ich hab im Beitrag bereits geschrieben, daß in dem Fall der Fälle der M600 Befehl durch einen anderen Pausebefehl ersetzt werden muß. Es ist nun nicht so, daß es nur einen Befehl für diese Aufgabe gibt und darum ist da auch mehr als eine Lösung des Problems möglich. Ich nenne nur mal M0/M1, M24/25, M125, M400… als mögliche alternative Befehle. Diese Lösung hier ist von 0,02 Inch vorgestellt und zeigt eine Lösung mit dem Timer G4. Dabei wird die erforderliche Eingabe am Display durch die ablaufende Zeit ersetzt. Ist sicher nicht ganz einfach mit Zeitdruck das Filament zu wechseln und paar Werte müssen für den Drucker dabei angepaßt werden aber dafür erklär ich das ja hier. Aber zunächst mal Dank an 0,02 Inch für den Beitrag im Forum!

Zunächst wird mal die Länge des Filaments hinter dem Feeder benötigt. Läßt sich grob bis zur Düse ausmessen oder eine Markierung am Filament, Filament raus ziehen und messen. Die Länge wird später in dem gCode-Schnipsel angepaßt und sagt dem Drucker wie lang er das Filament raus und wieder rein fördern soll. Diese Angabe wird in mm benötigt. Dazu wird noch die Zeit benötigt, die Ihr für den händischen Filamentwechsel benötigt. Nicht bei jedem Drucker immer ganz einfach. Manchmal hakt es am Filamentsensor und mal findet man das Loch einfach nicht. Also lieber etwas mehr Zeit ansetzen als in Hektik zu verfallen.

0,02 Inch hat es freundlicher Weise für die beiden meistgenutzten Slicer erklärt. Wir müssen da also keinen Glaubenskrieg abhalten. Zunächst mal für den Prusa-Slicer. Prusa hat da tatsächlich ein Eingabefeld in den Druckereinstellungen und das gefällt gleich mehrfach. Es kann für jeden Drucker separat angepaßt werden und ist wirklich einfach. Den Code-Schnipsel einfach unter Benutzerdefinierter G-Code – G-Code für Farbwechsel eintragen. Hier nun der Code von 0,02 Inch:

M400 ;Wait for all moves to finish

G91 ;relative positions

G0 Z50 F500 ;linear move Z

G90 ;absolute positions

G0 Y0 X0 F5000 ;linear move X/Y Home

M83 ;relative positions E

G1 E5 F50 ;move E

G1 E-300 F1600 ;move E-300                                Länge Filament hinter dem Feeder (300mm raus)

M300 S664 P500 ;play a beep

G4 P60000 ;Pause 60sek                                        Pause in 1/1.000 sek (60s)

M83 ;relative positions E

G1 E300 F1600 ;move E300                                   Länge Filament hinter dem Feeder (300mm rein)

G1 E350 F1000 ;move E100                                   (100mm „spülen“)

G4 P10000 ;Pause 10sek                                        Pause in 1/1.000 sek (10s)

G91 ;relative positions

G0 Z-50 F500 ;linear move Z

G90 ;absolute positions

M83 ;relative positions E

M108 ;continue

Ich hab noch den Kommentar hinzugefügt um den jeweiligen Befehl zu erklären. Muß nicht eingetragen werden, stört aber auch nicht. Um die Düse zu säubern hab ich noch 100mm zum spülen da eingetragen. Wenn das nicht ausreicht muß der Wert angepaßt werden.

Ich denke, das bekommt man irgendwie hin. Blöd wird es jetzt mit Cura. Ich hab ja mehrere Beiträge zum Filamentwechsel mit Cura geschrieben und jetzt wär es halt viel zu einfach, wenn ich dazu eine Lösung präsentieren könnte. Also wir brauchen 2 Lösungen. Ich beginne mit der Lösung von 0,02 Inch passend zum Blog-Beitrag ColorPrint und Teile einlegen mit Slic3r und Cura. Bezieht sich aber nur auf Colorprint und Cura! Wenngleich es sicher auch mit dem Einlegen von Teilen an manchem Drucker Probleme geben wird und dafür auch paar Anpassungen in ähnlicher Form notwendig werden. Hauptproblem bei dieser Methode ist die fehlende Unterstützung unterschiedlicher Drucker. Dieser Eingriff in Cura ist nicht so recht nach meinem Geschmack also bitte den Beitrag bis zum Ende lesen.

ColorPrint und Teile einlegen mit Slic3r und Cura

0,02 Inch: Im Cura wird es schon etwas komplizierter, denn hier müßt ihr mit einem geeigneten Editor(z.B. Notepad++) eine Python-Datei bearbeiten und Administratorrechte beim Speichern oder auch Kopieren im Standardverzeichnis von Cura haben.

Fangt erst einmal damit an, die Datei FilamentChange.py aus dem Verzeichnis c:\Program Files\Ultimaker Cura 5.2.1\share\cura\plugins\PostProcessingPlugin\scripts\ zu sichern. Das erspart im Zweifelsfall die Neuinstallation

Dann kopiert ihr die unten angehängte Python-Datei in eben diesen Ordner.

Jetzt wird es wieder etwas umständlich (ein Grund, warum ich dem PrusaSlicer auch in diesem Punkt den Vorzug gebe):

Cura starten, Objekt laden und slicen (kriegt man hin  )

In der Vorschau die Schichthöhe wählen, bei der der Farbwechsel statt finden soll. Schichthöhe merken.

Dann Erweiterungen -> G-Code ändern -> Farbwechsel (2nd. Edition) wählen und die gemerkte Schichthöhe hier eintragen

Neu slicen, G-Code speichern und auch hier endlich fertig.

Wie schon gesagt: In beiden Varianten läuft der Vorgang vollautomatisch ab. Ihr habt genau eine Minute Zeit, die Rollen zu wechseln und das Filament neu einzufädeln. Ein Abbruch ist nur über den Netzschalter möglich 🙂 Die Einzugslänge bei Direktextrudern läßt sich beim PrusaSlicer leicht anpassen, bei Cura müßt ihr das in der Python-Datei ändern.

Wenn ihr es mal testen wollt, hier die angekündigte Python-Datei: FilamentChange.zip

OK! Hier dann also Cura die 2. mit Bezug auf den Beitrag Cura Multicolor die 2.

Cura Multicolor die 2.

Da haben wir einen Drucker mit virtuellen Extrudern erstellt. Ein Extruder für jede Farbe. Die Anpassungen gelten nur für diesen Drucker und wir greifen nicht in den Code von Cura ein.

Ist auch recht schnell erklärt. Den Code für Prusa von oben tragen wir einfach in G-Code Extruder Ende ein wo wir im anderen Beitrag bereits den M600 Befehl eingetragen haben. Also in Jeden Extruder! Den Rest hab ich im anderen Beitrag erklärt. Funktioniert halt nicht mit dem G-Code ändern – Farbwechel auf Höhe. Wird ein anderer Drucker verwendet und der funktioniert mit M600 ist das kein Problem. Das gilt nur für den angepaßten Drucker. Zusätzlich zum Filamentwechsel könnt Ihr in der Nachbearbeitung auch den Pause at height Befehl versuchen. Dann muß das Filament allerdings von Hand gewechselt werden.

Nachtrag: 0,02 Inch hat auf meinen Einwand zur Änderung der Cura-Einstellungen reagiert. Diese wirkt sich ja auf alle Drucker aus und das ist bei unterschiedlichen Druckern nicht unbedingt erwünscht. Vielen Dank!

0,02 Inch:

Gleich mal eine kleine Änderung in Sachen Cura :)

Ihr braucht die originale Datei FilamentChange.py nicht zu überschreiben.. Es reicht, die angehängte Datei im gleichen Ordner zu entpacken (Administratorrechte).

FilamentChange1.zip

Ich habe im Skipt nur den „Class“-Namen an den neuen Dateinamen angepaßt, und schon stehen beide in der Liste :) Wer ein wenig mehr Zeit zum Einfedeln braucht kann die Gedenkminute beliebig verlängern. Geht das natürlich auch umgekehrt :) Alternativ kann die Datei auch im Konfigurationsordner (erreichbar über die Hilfe) abgelegt werden. Die Postscriptdatei sieht nun so aus.

9 Kommentare

  • Kann ich in Orca auch den code verwenden, da mein Sidewinder auf keine Codes reagiert (Stop at height, M600, Filawechsel)?

    • Orca, Prusa, Cura, S3D… ist doch nicht entscheidend. Am Ende muß der Drucker damit klarkommen. Versteht er keinen Pausebefehl, dann hilft auch kein anderer Slicer weiter. Man muß einen anderen Befehl suchen.

  • Hallo.

    ich habe einen Anycubic Kobra 2 pro und suche nach einer Lösung den Befehl Filament Wechsel einzubeziehen.
    in dem der Drucker solange in Pause Verharrt bis ich den Wechsel vollzogen habe und dann via Bestätigung den druck fortsetzen tut.
    gibt es da eine Möglichkeit?

    • Normalerweise wäre dies mit einem funktionierenden M600 möglich, nur leider hat die Firmware bisher auf eine Eingabe zur Fortsetzung gewartet, die das Display einfach nicht angeboten hat. Das war der Grund, warum ich dieses automatische Skript unter Umgehung von M600 geschrieben habe. Es braucht halt keine Benutzereingabe..
      Bei einem angeschlossenen Raspi mit Octopi würde das Fortsetzen eines Drucks nach M600 auch ohne mein Skript funktionieren, nur den hat halt nicht jeder. Damit diese Leute nicht im Regen stehen, habe ich eben eine automatische Lösung gesucht, auch in dem Bewußtsein, daß man zum Zeitpunkt, wo der Rollenwechsel ansteht, beim Drucker sein muß.

  • Ich habe mich erst am 3.1. im Forum angemeldet und muss mich hier erst einmal zurecht finden, beschäftige mich aber seit 3 Jahren mit dem 3D-Druck, speziell mit dem Thema mehrfarbiger Druck/Filamentwechsel/Druckpause.
    Von den Plugins für Cura hat „Filament Change i3Mega / i3Mega S v1.3“ für meinen „Anet A8 Plus“ am besten funktioniert. Das Bordbedienteil akzeptiert den G4-Befehl des Plugins. Die interne Temperatursteuerung des Bordbedienteils und die Pausenfestlegung in Verbindung mit G4 sind nicht optimal, weshalb ich seit langem den Befehl „@pause“ anstelle G4 benutze und den Filamentwechsel direkt per Repetier-Host steuere. Da kann man den Druck nach beliebig langer Pause fortsetzen.

    Mit freundlichen Grüßen
    Mikro

  • Ich werde das mal heute Abend mit meinem Neptune 3 versuchen. Den Filament Change aus Cura ignoriert er einfach. Und wenn ich über Pause ab Layer…….gehe dann schmeister er mir das Filament zwar raus versucht aber sofort wieder einzuziehen und druckt einfach weiter. Zum Teil sogar ohne Filament obwohl da ja der Sensor unterbrechen müsste. Oder ich schaffe es mal irgendwie Filament zu wechseln und er Druckt einfach a paar Milimeter weiter oben in der Luft weiter anstatt da wo er aufgehört hatte. Das einzige was funktioniert, ist wenn ich direkt am Drucker Pause drücke, das Filament wechsel und dann auf Fortsetzen gehe )-: Irgendwie blicke ich nicht ganz durch….. Ist aber auch mein erster Drucker (-:

    • Und…hat es geklappt?
      Auch ich habe nur einen Drucker, einen ca 4 Jahre alten Anycubic Mega-S, und ich habe den Prusa-Code sowie das Post-Skript für Cüra nur auf diesem testen können. Deshalb wäre ein Feedback von Nutzern anderer Drucker natürlich willkommen 🙂

      LG 0,02 Inch

  • Danke dir @Uwe für deine freundliche Erwähnung. Eine große Motivation, weiter an den Codes zu arbeiten. Da ist ja noch jede Menge Luft nach oben :-).

    Für alle Interessenten…schaut bitte ab und zu mal in den von Uwe verlinkten Beitrag rein. Dort werde ich weiterhin mögliche Verbesserungen zur Diskussion stellen.

    LG 0,02 Inch

    • Danke für die Anregung. Ich hab es ja schon geschrieben. Da gibt es nicht eine Lösung und möglicher Weise hat einer noch eine bessere Idee. Wirklich optimal ist die Änderung an der Python-Datei im Cura ohnehin nicht. Die wirkt sich auf alle Drucker aus und das kann schon beim 2. Drucker unangenehm werden.

Kommentar hinterlassen

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