Mehrfarbdruck - Poor man's solution

Ein Farbwechsel während des Druckens ist möglich, allerdings müssen gewisse Einschränkungen in Kauf genommen werden

Die Geschichte

Schon längere Zeit wollte ich ausprobieren wie ich mit meinem Drucker und lediglich einem Extruder Objekte in mehreren Farben drucken kann. Hierzu gibt es diverse Ansätze, teilweise wurden sie auch schon von der RepRap-Community umgesetzt: Der Erste Vorschlag ist schwer umzusetzen, das Material muss exakt berechnet werden und dass sich die Farben vermischen lässt sich leider nicht vermeiden.

Der Zweite Ansatz ist schon besser, erfodert allerdings einiges an Entwicklungsarbeit. Ein Farbmischer muss entwickelt und gebaut werden, dadurch entstehen Kosten und zudem wird eine passende Software gebraucht. Erste Ansätze davon gibt es bereits, es ist trotzdem fraglich inwiefern diese Lösung tatsächlich für jeden nutzbar und umsetzbar ist.

Ich habe mich für die 3. Lösung entschieden. Hierbei wird bei einem bestimmten Layer das Filament über ein paar Zeilen G-Code gewechselt, der Aufwand ist dementsprechend gering, eine Unterstützung durch den Slicer oder die Druckeransteuerung ist nicht erforderlich. Optimal ist diese Lösung trotzdem nicht.

Einschränkungen

Ein paar offensichtliche Probleme und Einschränkungen lassen sich leider nicht vermeiden:

Unterstützung durch die Firmware

Es gibt bereits vorgefertigte G-Code-Befehle, welche den Drucker pausieren lassen könnten oder einen Filamentwechsel initiieren. Darunter fallen die Befehle M25, M226 und M600.

M25 funktioniert nur bei Druckvorgängen von der SD-Karte (und braucht vermutlich ein LCD Display sowie Steuerbuttons), M226 ist in der Marlin-Firmware nach letztem mir bekanntem Stand nicht implementiert und M600 funktioniert ausschließlich wenn ein LCD Display an den Drucker angeschlossen ist (und auch hier braucht man vermutlich noch Steuerbuttons am Drucker).

Also habe ich mich auf die Befehle gestürzt die der Drucker versteht, herausgekommen ist folgendes Codeschnipsel:
; Filament change
; Move nozzle a few mm upwards
G1 Z10 F7800
; Move heatbed out of the way
G1 Y5
; Retract 40cm old filament
G92 E200
G1 E0 F500
G92 E200
G1 E0 F500
; Extrude 60cm new filament
G92 E0
G1 E200 F500
G92 E0
G1 E200 F500
G92 E0
G1 E200 F500
; Move the bed to its new approximate position
G1 X30
G1 Y82
; Filament change end

Wer sich den Code jetzt ansieht und denkt „hey, das kenn ich doch“: Ja, G-Code wird eigentlich für CNC-Maschinen verwendet, läuft aber auch wunderbar auf 3D-Druckern. Eine Erklärung der Codezeilen:

Praktische Anwendung

Die praktische Anwendung gestaltet sich bei mir wie folgt:

Zuerst drucke ich das Objekt einfarbig. Hierzu verwende ich für gewöhnlich weißes Filament von dem Unmengen vorhanden sind. Wenn ich mit dem Druckergebnis zufrieden bin geht es darum den Code an die richtige Stelle zu kopieren.

Dafür lade ich die vom Slicer generierte G-Code-Datei in Pronterface und nutze das Visualisierungstool zur Darstellung der einzelnen Layer. In meinem Beispiel Möchte ich die Farbe zwischen dem 11. und 12. Layer ändern. Das entspricht einer Höhe Z von 3.7mm bzw. 3.9mm.

Im folgenden sieht man den Teil meiner G-Code-Datei, zur Übersichtlichkeit sind ein paar Zeilen kommentiert:
[…]
G1 X52.217 Y67.749 F7800.000
G1 X52.251 Y67.783 F3000.000 E20.96337
M106 S255 ; Einschalten des Lüfters
G1 F1800.000 E19.96337 ; Retraction damit das Filament nicht tropft
G92 E0 ; Reset des Extruders
G1 Z3.900 F7800.000 ; Änderung der Layerhöhe auf 3.9mm (Layer 12)
G1 X59.681 Y81.800 ; Beginn des Druckvorgangs auf dem neuen Layer
G1 F1800.000 E1.00000
G1 X59.965 Y81.693 F919.808 E1.02040
[…]

Der G-Code muss zwischen der Retraction des Filament und dem Zurücksetzen des Extruders eingefügt werden. In meinem Beispiel sieht das Endergebnis so aus:
[…]
G1 X52.217 Y67.749 F7800.000
G1 X52.251 Y67.783 F3000.000 E20.96337
M106 S255 ; Einschalten des Lüfters
G1 F1800.000 E19.96337 ; Retraction damit das Filament nicht tropft

; Filament change
; Move nozzle a few mm upwards
G1 Z10 F7800
; Move heatbed out of the way
G1 Y5
; Retract 40cm old filament
G92 E200
G1 E0 F500
G92 E200
G1 E0 F500
; Extrude 60cm new filament
G92 E0
G1 E200 F500
G92 E0
G1 E200 F500
G92 E0
G1 E200 F500
; Move the bed to its new approximate position
G1 X30
G1 Y82
; Filament change end

G92 E0 ; Reset des Extruders
G1 Z3.900 F7800.000 ; Änderung der Layerhöhe auf 3.9mm (Layer 12)
G1 X59.681 Y81.800 ; Beginn des Druckvorgangs auf dem neuen Layer
G1 F1800.000 E1.00000
G1 X59.965 Y81.693 F919.808 E1.02040
[…]

Das war's im Prinzip auch schon. Mittlerweile habe ich mehrere Objekte mittels dieser Technik in 2 Farben gedruckt, allen voran Logos meiner Website:

Logos meiner Website

Revision 3 | 2014-03-20 19:36:09
Wer bin ich? | Impressum
Copyright © r3v0luti0n