Farbwechsel funktioniert bei manchen Druckern nicht---Eine mögliche Lösung

  • Vor kurzem bin ich im Verlauf eines Threads auf ein Problem gestoßen, von dem auch mein Drucker betroffen ist. Nach einem Farbwechsel auf einer vom Slicer bestimmten Schichthöhe nimmt der Drucker den Druck nicht wieder auf und friert scheinbar ein. Deshalb habe ich mal die Befehlsfolge, die zu der Zeit an den Drucker gesendet werden, mitgeloggt und dabei gemerkt, daß der Befehl M600 zwar von der Firmware verstanden und auch teilweise ausgeführt wird, jedoch weitere Bestätigungen verlangt. Diese Abfragen kommen aber bei manchen Displays nicht an, und so reden Drucker und Display aneinander vorbei, wenn man auf "Resume" drückt -> der Drucker hängt in einer Schleife fest und muß ausgeschaltet werden.


    Falls ihr einen Drucker habt, der auch von diesem Problem betroffen ist (soweit ich bisher erfahren konnte, nur Drucker mit neuerer Marlin-Firmware und gewissen Displays), habe ich mal ein kleines Workaround für den PrusaSlicer und für Cura geschrieben. Beide Erweiterungen umgehen M600 und funktionieren bei Aktivierung vollautomatisch.


    PrusaSlicer


    Den folgenden Code

    M400

    G91

    G0 Z50 F500

    G90

    G0 Y0 X0 F5000

    M83

    G1 E5 F50

    G1 E-300 F1600

    G1 E-300 F1600

    M300 S664 P500

    G4 P60000

    M83

    G1 E300 F1600

    G1 E350 F1000

    G4 P10000

    G91

    G0 Z-50 F500

    G90

    M83

    M108

    hier eintragen:



    Objektvorschau wählen und Schicht über den Slider bestimmen



    Das war's eigentlich schon. Wann in etwa der Farbwechsel erfolgt und eure unbedingte Anwesenheit erfordert wird, könnt ihr hier sehen.




    Cura


    Da 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 as 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


    Erfahrungen und Anregungen gerne hier...






  • Wenn das klappt, dann ist schön. Nach meiner Erfahrung hat M600 weniger mit den bunten Displays zu tun. (Ich schimpfe ja auch gerne auf Touchdisplays) So weit ich das überblicke funktioniert M600 mit allen Druckern mit einem Filamentsensor. Da wird für den Sensor die erweiterte Pause im Marlin genutzt. So hab ich bisher auch bei entsprechenden Druckern mit Nachrüstung des Filamentsensors das M600 aktiviert bekommen. Ohne den SourceCode wird das natürlich etwas sehr aufwändig. Im Marlin wird auch die Einzugslänge eingetragen.

  • So weit ich das überblicke funktioniert M600 mit allen Druckern mit einem Filamentsensor

    Das ist ja gerade die Crux. Bevor ich nach einer Möglichkeit gesucht habe, M600 zu umgehen, habe ich alle Varianten probiert. Mit und ohne Filamentsensor, Druck über Octopi oder SD-Karte, mit dem PrusaSlicer oder Cura, alles ohne Erfolg. Der Raspi hat mir wenigstens einen Dialog zum Fortsetzen angeboten, auf dem Display hingegen kam nie was in der Art an. Das Problem scheint auch bei den Entwicklern der Marlin-Firmware bekannt zu sein, genießt aber wohl keine hohe Priorität. Knutwurst schlägt vor, das Problem über G-Code/USB zu lösen. Auf Grund dieser Aussage habe ich begonnen, nach einer anderen Lösung als M600 zu suchen und nach ausgiebigen Tests mal einen vorläufigen Workaround anzubieten.

    Ein Leben ohne 3D-Drucker ist möglich, aber sinnlos. (Frei nach Loriot)

  • Ja. Wenn der Drucker nicht mit Filamentsensor ausgeliefert wird und das nur auf dem Board aktiviert wird dann kann ich mir das mit den blöden Displays allerdings vorstellen. Die müssen das Fortsetzen des Drucks da irgendwie integrieren. Bei den alten Displays erscheint das automatisch mit der Änderung auf dem Board. Wenn ich mir das recht überlege hab ich halt noch immer überwiegend CR-10 Displays an den Druckern. Hilft dann wohl nur einen Timer zu verwenden.

  • Hab mal ne Frage zu deinem Vorschlag. Was passiert wenn ich die Pause verpasse? Wird das alte Filament wieder eingezogen und es entsteht ein einfarbige Druck, oder kann er das nicht mehr einziehen und der Drucker läuft ohne Filament weiter?


    PS: Kennst du oder jemand anderes die Vorteile von der aktuellen Knutwurst FW für den Mega S? Weil sonst wäre die Alternative zurück auf eine FW die noch auf die Tasten reagiert (so wie meine)...

  • ...Wenn der Drucker nicht mit Filamentsensor ausgeliefert wird und das nur auf dem Board aktiviert wird dann kann ich mir das mit den blöden Displays allerdings vorstellen.

    ...

    Bei meinem Mega-S ist der Sensor standardmäßig mit dabei und bringt auch brav ein Meldung auf dem Display, wenn ich ihn mal vor einem Druck mit einbeziehe und das Filament entferne. Ob das je mit der Firmware, die bei Auslieferung des Druckers dabei war, richtig funktioniert hat, kann ich gar nicht mal sagen. Das war ja meine Hoffnung, daß bei einem M600 das Filament nach einer kurzen Latenzzeit nach dem Füttern des Sensors neu eingezogen wird und der Druck dann automatisch weitergeht, aber Pustekuchen :)

    Ein Leben ohne 3D-Drucker ist möglich, aber sinnlos. (Frei nach Loriot)

  • Hab mal ne Frage zu deinem Vorschlag. Was passiert wenn ich die Pause verpasse? Wird das alte Filament wieder eingezogen und es entsteht ein einfarbige Druck, oder kann er das nicht mehr einziehen und der Drucker läuft ohne Filament weiter?

    Du kannst im PrusaSlicer bei einem der beiden G1 E-300 F1600 den E-Wert herabsetzen, dann verbleibt ein Teil des Filaments im Feeder und die nachfolgenden Befehle ziehen das Filament wieder ein. Wenn das aber ganz rausgeschoben wird, druckt der Drucker hemmungslos ohne Filament weiter :)

    Ein Leben ohne 3D-Drucker ist möglich, aber sinnlos. (Frei nach Loriot)

    Edited once, last by 0.02 Inch ().

  • Hab mal ne Frage zu deinem Vorschlag. Was passiert wenn ich die Pause verpasse? Wird das alte Filament wieder eingezogen und es entsteht ein einfarbige Druck, oder kann er das nicht mehr einziehen und der Drucker läuft ohne Filament weiter?


    PS: Kennst du oder jemand anderes die Vorteile von der aktuellen Knutwurst FW für den Mega S? Weil sonst wäre die Alternative zurück auf eine FW die noch auf die Tasten reagiert (so wie meine)...

    Das ist abhängig vom Abstand des Feeders zum Hotend. Wenn das Filament noch im Feeder steckt dann ja.


    Ich würde da noch paar cm Filament zum "Spülen" durch die Düse schicken. Sonst vermischt das zu stark.

  • Das ist abhängig vom Abstand des Feeders zum Hotend. Wenn das Filament noch im Feeder steckt dann ja.


    Ich würde da noch paar cm Filament zum "Spülen" durch die Düse schicken. Sonst vermischt das zu stark.

    Genau. Aber auch hier zählt der olympische Gedanke...Dabeisein ist alles :)


    PS: Kennst du oder jemand anderes die Vorteile von der aktuellen Knutwurst FW für den Mega S? Weil sonst wäre die Alternative zurück auf eine FW die noch auf die Tasten reagiert (so wie meine)...

    Schau mal bei Knutwurst in's Wiki. Falls du aber ohne Meshleveling, Arc Welder und vieles andere mehr gut zurecht kommst, laß alles beim Alten.

    Ein Leben ohne 3D-Drucker ist möglich, aber sinnlos. (Frei nach Loriot)

  • Eigentlich müßte ich das nun irgendwie in unsere kleine Curafiebel und in die Beiträge zum Filamentwechsel einarbeiten aber die FilamentChange.zip paßt ja schlecht in die pdf und igendwie würde ich das vielleicht noch etwas allgemeiner und anpaßbarer auf den jeweiligen Drucker erklären. Muß mal überlegen, wie ich das am besten rüber bringe.

  • Nicht mehr die Originale, aber eine alte Knutwurst, 1.3.1 oder so. Die hab ich Ende 2020 runtergeladen um mir das umpinnen für die TMCs zu sparen. Bis jetzt läuft die immer noch ohne Mesh, mein Bett scheint ziemlich eben zu sein.

  • Nicht mehr die Originale, aber eine alte Knutwurst, 1.3.1 oder so

    Dann brauchst die Codes auch nicht, außer natürlich, du möchtest mittesten :) Beide Codes funktionieren ja, aber da ist selbstverständlich noch Luft nach oben.

    Ich bin immer offen für neue Inspirationen :)

    Ein Leben ohne 3D-Drucker ist möglich, aber sinnlos. (Frei nach Loriot)

  • So weit ich das überblicke funktioniert M600 mit allen Druckern mit einem Filamentsensor.

    Sogar auf einem Mega X! Bloss sorgt dessen verbuggte Displayfirmware eben dafür, dass der Drucker sofort wieder zum Druck zurückkehrt und den Filamentwechsel erst gar nicht ermöglicht. Die Nutzung von M600 ist also auch dort prinzipiell möglich, wenn man tatsächlich schnell genug ist, während des wegfahrens vom Objekt und der Rückkehr an die letzte Position das Filament zu wechseln. Ist angesichts des nicht mal einsekündigen Stopps an der Parkposition eben nicht zu machen.


    Mit dem Filamentsensor hat das da auch nichts zu tun, denn selbst wenn man dort den Sensor rausnimmt, tut er das gleiche. Auch mit der Knutwurst, sogar selbst noch weiter angepasst, gleiches Ergebnis.


    Aber, mit der Dummymethode: RE: Cura Filamentwechsel hab ich das zumindest für mich zufriedenstellend gelöst und damit komm ich inzwischen sehr gut zurecht.


    Gruss Alex


    Mein Drucker ist ein Anycubic Mega X, mein Slicer ist Ultimaker Cura und mit Tinkercad erstelle ich meine Konstruktionen. Gedruckt wird inzwischen über einen Raspi 4, auf dem Octoprint läuft.

  • Ist ne Möglichkeit aber wirklich gefallen kann mir der Dummy nicht. Das nagelt mich am Drucker fest.


    Ich hab mal die Lösung von 0,508 mm in einen Blog-Beitrag gepackt und um eine Lösung für den Farbwechsel innerhalb des Layers mit Cura erweitert. Das gefällt mir deutlich besser, da es sich nicht auf das gesamte Cura sondern nur auf den Drucker auswirkt wie beim Prusa.


    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…
    drucktipps3d.de

  • Erfahrungen und Anregungen gerne hier...

    Ich kann keine Anregung geben, da Ihr alles schon gut durchdacht habt.


    Ich persönlich allerdings habe noch nie einen M600 verwendet.

    Ich füge einen Pausebefehl in die Gcodedatei ein - meistens ist das M25 - entweder manuell oder wenn's mehrere sind mit "Pause at Height" o.ä.


    Da ich alle Drucker über Octoprint steuere, klappt es prima in der Pause

    1. die Temperatur zu halten

    2. Z- anzuheben

    3. Filament manuell zu wechseln, Düse sauberzumachen

    4. Z wieder runter

    5. "WEITER" in Octoprint anzuklicken


    Was natürlich nicht funktioniert, wenn man auf das Druckerdisplay alleine angewiesen ist. ;)

    Darum ist es gut dass Uwe und Du etwas gebastelt habt!

  • Ist ne Möglichkeit aber wirklich gefallen kann mir der Dummy nicht. Das nagelt mich am Drucker fest.

    Naja, das Filament wechselt sich ja auch nicht von alleine und bei M600 muss man ja auch rechtzeitig am Drucker sein, um den Wechsel zu vollziehen.


    Da ich auf dem Handy ausserdem die Octoapp hab und mir dort die aktuelle Layernummer anzeigen lasse, muss ich auch nicht die ganze Zeit neben dem Drucker sitzen. Weil ich den Drucker ausserdem zeitgesteuert einschalten und mit dem Print Scheduler auch die Drucke nach Zeitplan starten kann, werden grössere Druckjobs dann auch eher automatisch gestartet, so dass ich den Filamentwechsel dann zu erwarten hab, wenn ich selbst am Drucker ankomme.

    Gruss Alex


    Mein Drucker ist ein Anycubic Mega X, mein Slicer ist Ultimaker Cura und mit Tinkercad erstelle ich meine Konstruktionen. Gedruckt wird inzwischen über einen Raspi 4, auf dem Octoprint läuft.

  • Danke aber ich hab ja nicht mit gebastelt. Hab es nur in meine Worte gepackt und paar Erklärungen hinzu gefügt und den Filamentwechsel im Layer hinzu gefügt. Wenn M600 funktioniert kann man sich all den Spaß sparen. Pause at Height hat meist genau das gleiche Problem. Das ist genau der erweiterte Pause-Befehl, den auch M600 nutzt. M600 erweitert den nur um den Filamentwechsel. OctoPrint ist schon ne feine Sache. Hilft immer wieder über die Probleme hinweg.

  • 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 :) Das ist bisher die einzige Änderung, ich plane jedoch, noch ein paar Eingabefelder anzulegen, um beispielsweise die Gedenkminute oder die Auswurf- und Einzugslänge im Interface zugänglich zu machen. Falls für sowas Bedarf besteht, bleibt einfach dran.

    Ein Leben ohne 3D-Drucker ist möglich, aber sinnlos. (Frei nach Loriot)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!

Unread Threads

    1. Title
    2. Replies
    3. Last Reply
    1. Material Druckbettisolierung 6

      • lightsource
    2. Replies
      6
      Views
      64
      6
    3. Nobs_3D

    1. Fix für Spiel in der Y Achse 47

      • millenniumpilot
    2. Replies
      47
      Views
      1.1k
      47
    3. NikNolte7

    1. Creality Sonic Pad + Ender 3 S1 + Timelapse Error 1

      • Holger
    2. Replies
      1
      Views
      104
      1
    3. mrsmokie

    1. Z-Axis fährt weiter nach unten während BLTouch eingebaut…🤷🏼‍♂️ 2

      • mario1982
    2. Replies
      2
      Views
      42
      2
    3. Hoschited

    1. Anycubic Vyper - Touchdisplay ohne Funktion 69

      • Franky4Print
    2. Replies
      69
      Views
      3.4k
      69
    3. spritzer