Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.
  • Willkommen zur 3D-Druck-Community, einer nichtkommerziellen,
  • werbefreien und privaten Plattform rund um das Thema 3D-Drucken
  • vorrangig im deutschsprachigen Raum. Von User für User.
Hallo, Gast! Anmelden Registrieren


Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DualExtruder-Betrieb mit Cura
#1
Hi,

da die normalen PLA-Drucke (in meinen Augen) schon mal ganz gut aussehen, möchte ich nun auch den zweiten Extruder in Betrieb nehmen. Den Ersten habe ich mit Hilfe von Gauntlets Hilfe-Thread ans laufen bekommen, der schweigt sich aber leider zum Thema "zweiter Extruder" aus.

Meine Versuche, selbst einen Start- und EndCode zu schreiben, bin ich nicht wirklich erfolgreich gewesen - es kommen zwar die Extruder-Wechsel korrekt, aber an vollkommen wirren Positionen. Da durchschaue ich den gcode noch nicht Sad

Mit anderen Slicern komme ich auch nicht zum Ziel: MB Desktop druckt zwar, ich kann aber irgendwie die Positionierung nicht kalibrieren. Egal was ich tue, sie bleibt immer gleich. In Cura kann ich die Positionierung der Düsen ja über die Prefereces machen, aber mir fehlt der richtige Start/Endcode(2).

Wenn ich die im Printer zur Hilfe gestellte Kalibrierung nutze, kocht er das PLA bei 230° und heizt das Bett soweit auf, dass nichts mehr darauf hält. Ergebnis: Ein Großteil der Linien liegt als Gewurschtel rum und ein Vergleich der Linien ist nicht

Kann mir da jemand weiterhelfen? Die Suche habe ich schon malträtiert, bin aber nicht fündig geworden - einziges Ergebnis war ein Startcode von S3D...

Ggf. wäre es auch interessant, wie man in MB-Desktop die Abstände der Extruder kalibriert.

Vielen Dank im Vorraus
Chris
Gruß
Chris                    

Die Summe der Intelligenz auf der Erde ist eine Konstante.
Die Bevölkerung wächst.
 
to top
#2
Hallo, gibt es hier inzwischen was neues dazu? Bin auch interessiert.
 
to top
#3
(09.03.2017, 22:46)ManuelW schrieb: Hallo, gibt es hier inzwischen was neues dazu? Bin auch interessiert.

Ich habe schon eine ganze Zeit nicht mehr beide Extruder gleichzeitig benutzt möchte also nicht meine Hand dafür ins Feuer legen dass folgender Start2/End2 Code noch funktioniert. Das eigentlich Problem ist aber nicht der Start/End Code, sondern dass Cura die E-Achse (extrusion length) anders verwendet als Sailfish. Cura addiert E für beide Extruder während Sailfish E pro Extruder erwartet. Ich habe mir dafür ein Cura Plugin gemacht, welches den G-Code nachbearbeitet.

EDIT: Das Plugin entfernt alle Tool Change Kommandos (T0, T1) und verwendet anstelle des E Parameters in G0 und G1 Kommandos A oder B, je nach Extruder. Der Düsenabstand muss daher in Cura eingestellt werden, die Einstellungen am Drucker werden ignoriert.

start2.gcode
Code:
;Sliced at: {day} {date} {time}
;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
;Print time: {print_time}
;Filament used: {filament_amount}m {filament_weight}g
;Filament cost: {filament_cost}
;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line
;M104 S{print_temperature} ;Uncomment to add your own temperature line
;M109 T1 S{print_temperature2} ;Uncomment to add your own temperature line
;M109 T0 S{print_temperature} ;Uncomment to add your own temperature line
T0; set primary extruder
M73 P0; enable show build progress
M109 S{print_bed_temperature} T0; heat bed up to first layer temperature
M104 S{print_temperature} T0; set nozzle heater to first layer temperature
M104 S{print_temperature2} T1; set nozzle heater to first layer temperature
M103; disable RPM
G21; set units to mm
G162 X Y F6000; home XY axes maximum
G161 Z F9000; home Z axis minimum
G92 Z0; set Z to 0
M132 X Y Z A B; Recall stored home offsets
G90; set positioning to absolute
G1 Z30; move Z to waiting height
G1 X-95 Y-73 Z30 F14000; move to waiting position (front left corner of print bed)
G130 X0 Y0 A0 B0; set stepper motor vref to lower value while heating
M6 T1; wait for left extruder
M6 T0; wait for bed and extruder to heat up
G130 X127 Y127 A127 B127; set stepper motor vref to defaults
M108 T0 R3; set extruder speed
G90; use absolute coordinates
M320; acceleration enabled for all commands that follow
G1 Z{layer_height} F6000.000; move to first layer height
G1 X100 Y-70 A10 B10 F3000; move to front right corner of bed
G1 Z0 F6000.000; lower nozzle height to 0
G1 X-60 Y-73; wipe nozzle
G1 X-115 Z{layer_height} F6000.000; set nozzle to first layer height
G1 F12000; ensure fast travel to first print move
G92 A0 B6 X0 Y0; set E to 0 again
G1 B0 F2400
M73 P0; reset build progress to 0
; Sliced {filename} at: {day} {date} {time}
; Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
; Print time: {print_time}
; Filament used: {filament_amount}m {filament_weight}g
; Filament cost: {filament_cost}
; -- end of START GCODE --

end2.gcode
Code:
;End GCode
M73 P100
M109 S0 T0; set bed temperature to 0
M104 S0 T0; set extruder temperature to 0
M104 S0 T1; set extruder temperature to 0
G1 Z150 F1000; move Z down
G90
G162 X Y F2500; home X and Y axes
M18; disable all stepper motors
M70 P5; Display "We <3 Making Things!" message
M72 P1; Play Ta-Da song

SailfishDual.py
Code:
#Name: Fix E value for Sailfish Firmware
#Info: Sailfish counts extrusion per extruder, while Cura sums it up. This plugin fixes the E value.
#Help: TBD
#Depend: GCode
#Type: postprocess

E = [0.0, 0.0]
lastE = 0.0
tool = 0

with open(filename, "r") as f:
lines = f.readlines()

with open(filename, "w") as f:
 for line in lines:
   code = list(line.split(";"))[0]
   if code.startswith("T0") or code.startswith("M135 T0"):
     E[0] = lastE - E[tool]
     tool = 0
   elif code.startswith("T1") or code.startswith("M135 T1"):
     E[1] = lastE - E[tool]
     tool = 1
   elif code.startswith("G0") or code.startswith("G1"):
     for part in code.split(" "):
       if part.endswith("\n"):
         part = part[:-1]

       if part.startswith("E"):
         lastE = float(part[1:])
         if tool == 0:
           f.write('A{0} '.format(lastE - E[tool]))
         else:
           f.write('B{0} '.format(lastE - E[tool]))
       else:
         f.write('{0} '.format(part))

     f.write('; {1} {2} {3} {4}\n'.format(part[:-1], tool, lastE, E[0], E[1]))
   elif code.startswith("G92"):
     for part in code.split(" "):
       if part.startswith("E"):
         lastE = float(part[1:])
         E[tool] = lastE
     f.write(line)
   else:
     f.write(line)

Unter Linux muss die Plugin Datei in $HOME/.cura/plugins gespeichert werden, Windows/Mac hab ich keine Ahnung.
 
to top
#4
(09.03.2017, 22:46)ManuelW schrieb: Hallo, gibt es hier inzwischen was neues dazu? Bin auch interessiert.

Oh {Überwesen}, eines meiner frühen Werke erblüht zu neuem Leben... Ich habe den CTC nicht mal mehr und Dual-Druck hab ich auch nie sauber hinbekommen Big Grin
Gruß
Chris                    

Die Summe der Intelligenz auf der Erde ist eine Konstante.
Die Bevölkerung wächst.
 
to top
#5
(11.03.2017, 18:47)rmi schrieb: Ich habe schon eine ganze Zeit nicht mehr beide Extruder gleichzeitig benutzt möchte also nicht meine Hand dafür ins Feuer legen dass folgender Start2/End2 Code noch funktioniert. Das eigentlich Problem ist aber nicht der Start/End Code, sondern dass Cura die E-Achse (extrusion length) anders verwendet als Sailfish. Cura addiert E für beide Extruder während Sailfish E pro Extruder erwartet. Ich habe mir dafür ein Cura Plugin gemacht, welches den G-Code nachbearbeitet.

EDIT: Das Plugin entfernt alle Tool Change Kommandos (T0, T1) und verwendet anstelle des E Parameters in G0 und G1 Kommandos A oder B, je nach Extruder. Der Düsenabstand muss daher in Cura eingestellt werden, die Einstellungen am Drucker werden ignoriert.

start2.gcode


Unter Linux muss die Plugin Datei in $HOME/.cura/plugins gespeichert werden, Windows/Mac hab ich keine Ahnung.

Hallo,

wow, rmi! Großartiges Script! Bei mir lief es zwar nicht sofort, aber dann habe ich es etwas formatiert und verändert; jetzt läuft es (siehe unten). Ich habe es so verändert, dass es die M135 Tx-Kommandos drin lässt; damit kann man den Extruderabstand in Cura auf 0/0 lassen und die druckerinterne Kalibrierung der Extruder benutzen. Außerdem habe ich die Debug-Kommentare mit den Werten herauskommentiert, damit die Datei nicht so groß wird. Ich glaube, auch GPX läuft dann schneller durch.
Die erste und einzige Anleitung, die ich bisher gefunden habe, um meinen CTC Dual mit Cura 15.04.6 mit beiden Extrudern zu betreiben! Großartig! Selbst über die Problemstellung, dass die Extruder beim CTC separat hochgezählt werden, konnte ich bisher nicht viel Hilfreiches finden.
Nun bin ich begeistert!

Der Pfad für das Cura-Plugin unter Windows 7 ist übrigens: C:\Program Files (x86)\Cura_15.04.6\plugins (oder in Cura 15.04.6 auf dem Plugins-Tab ganz unten auf "Open plugin location" klicken).

Anbei noch meine Start2- und End2-Gcodes.

Vielen Dank nochmals an rmi!

Grüße,

Olaf


Code:
#Name: Fix E value for Makerbot firmware
#Info: Makerbot counts extrusion per extruder (A/B), while Cura sums it up (E). This plugin fixes the E value.
#Help: TBD
#Depend: GCode
#Type: postprocess

E = [0.0, 0.0]
lastE = 0.0
tool = 0

with open(filename, "r") as f:
 lines = f.readlines()

with open(filename, "w") as f:
 for line in lines:
   code = list(line.split(";"))[0]
   if code.startswith("T0") or code.startswith("M135 T0"):
     E[0] = lastE - E[tool]
     tool = 0
     f.write(line)
   elif code.startswith("T1") or code.startswith("M135 T1"):
     E[1] = lastE - E[tool]
     tool = 1
     f.write(line)
   elif code.startswith("G0") or code.startswith("G1"):
     for part in code.split(" "):
       if part.endswith("\n"):
         part = part[:-1]

       if part.startswith("E"):
         lastE = float(part[1:])
         if tool == 0:
           f.write('A{0} '.format(lastE - E[tool]))
         else:
           f.write('B{0} '.format(lastE - E[tool]))
       else:
         f.write('{0} '.format(part))

#      f.write('; {1} {2} {3} {4}\n'.format(part[:-1], tool, lastE, E[0], E[1]))
     f.write('\n')
   elif code.startswith("G92"):
     for part in code.split(" "):
       if part.startswith("E"):
         lastE = float(part[1:])
         E[tool] = lastE
     f.write(line)
   else:
     f.write(line)

Code:
; Sliced {filename} at: {day} {date} {time}
; Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}
; Print time: {print_time}
; Filament used: {filament_amount}m {filament_weight}g
; Filament cost: {filament_cost}T0; set primary extruder
M73 P0; enable show build progress
M140 S{print_bed_temperature}; heat bed up to first layer temperature
M104 S{print_temperature} T0; set nozzle heater to first layer temperature
M104 S{print_temperature2} T1; set nozzle heater to first layer temperature
M109 S{print_bed_temperature} T0; heat bed up to first layer temperature
M103; disable RPM
G21; set units to mm
G162 X Y F6000; home XY axes maximum
G161 Z F9000; home Z axis minimum
G92 Z0; set Z to 0
M132 X Y Z A B; Recall stored home offsets
G90; set positioning to absolute
G1 Z30; move Z to waiting height
G1 X-95 Y-73 Z30 F14000; move to waiting position (front left corner of print bed)
G130 X0 Y0 A0 B0; set stepper motor vref to lower value while heating
M6 T0; wait for bed and extruder to heat up
G130 X127 Y127 A127 B127; set stepper motor vref to defaults
M108 T0 R3; set extruder speed
G92 E0; set E to 0
G90; use absolute coordinates
M320; acceleration enabled for all commands that follow
G92 A0 B0; set A and B to 0
M135 T1
G1 Z1 F600
G1 X100 Y-75 F6000; move to front right corner of bed
G1 Z{layer_height} F600; move to first layer height
G1 X-90 Y-75 B24 F1500; extrude a line of filament across the front edge of the bed
G92 B0
G1 B-{retraction_dual_amount}
G92 B0
M135 T0
G1 Z1 F600
G1 X100 Y-73 F6000; move to front right corner of bed
G1 Z{layer_height} F600; move to first layer height
G1 X-90 Y-73 A24 F1500; extrude a line of filament across the front edge of the bed
G4 P2000; wait for ooze to slow
G1 Z0 F6000.000; lower nozzle height to 0
G1 X-95; wipe nozzle
G1 Z{layer_height} F600; set nozzle to first layer height
G92 A0 B0; set A and B to 0
M73 P0; reset build progress to 0
M135 T0
; -- end of START GCODE --

Code:
G92 A0; set A to 0 again
G1 A-{retraction_dual_amount}
M73 P100
G162 X Y F2500; home X and Y axes
M18; disable all stepper motors
M109 S0 T0; set bed temperature to 0
M104 S0 T0; set extruder temperature to 0
M104 S0 T1; set extruder temperature to 0
 
to top
  


Möglicherweise verwandte Themen...
Thread Verfasser Replies Views Last Post
  Dual Extruder Betrieb fzahn 1 2.417 23.02.2016, 14:37
Last Post: mamalala



Browsing: 1 Gast/Gäste