End of print retraction for 3 in 1 out

  • Hello, I have anet a8 with the duet wifi and and a cyclops hotend. I was wondering if there is a way, the end of the print, to retract the filament on the active tool? The reason I am asking this is because it's a non-mixing style and I have no filament sensors.

  • administrators


    Can you not have your end gcode in the slicer have a relative retraction movement of however much you need?

  • Thank you for the quick response. I did some digging and this is what my end g code says in the slicer.

    M104 S0
    M140 S0
    ;Retract the filament
    G92 E1
    G1 E-1 F300
    G28 X0 Y0

    Now about the only thing that makes sense to me is the last two lines. I am still new to g code... what am I looking at here?

  • administrators


    M104 S0 ;set hotend temp to 0
    M140 S0 ;set bed temp to 0
    ;Retract the filament
    G92 E1 ;set extruder to think its at 1mm (is this really necessary? odd)
    G1 E-1 F300 ;retract 1 mm
    G28 X0 Y0 ;home X and Y
    M84 ;turn off motors

    So depending on how much you want to retract you can either :

    1. just up the amount to retract;
      G1 E-10 F300 ;retract 10 mm

    or 2) move away from the print, and then do the remainder of the retract
    G1 E-1 F300 ;retract 1 mm
    G28 X0 Y0 ;home X and Y
    G1 E-10 F300 ;retract 1 mm
    M84 ;turn off motors

    The advantage of 2 is it makes sure the nozzle is not sitting on the top of the print while the longer retract happens

  • Thank you so much! I'll give that second one a try seems how that does make more sense.

  • Woops one more question. Sorry. Is the F300 the speed of retraction?

  • administrators

    @aneta8duet yep, Fnnnn is the feedrate (in mm/minute)

  • ok so after a lot of head scratching i am back here. i couldn't figure out why my printer was grabbing filament with E0 at the very beginning of the print. Now it should be pulling filament with whatever the actual part is being printed with. In this case i am printing one half of this test piece with filament from E1, and in the slicer in the start g code it reads:

    G28 ;Home
    G1 Z15.0 F6000 ;Move the platform down 15mm
    ;Prime the extruder
    G92 E0
    G1 F200 E3
    G92 E0

    my gut instinct is telling me that is wrong. After it prints the brim. It does start trying to extrude from E1, but the filament from E0 is still in the nozzle just sitting there.
    Please advice..

  • @aneta8duet
    I'm not exactly sure what you are asking here.

    Presumably you have 2 tools, each one configured to use a different extruder yes? In which case, to switch between extruders, you simply send a "Tn" command. So if tool 0 uses extruder drive 0 (i.e it is defined as M563 P0 D0 H1 or some such) and you want to use tool 0 to start with, then somewhere near the beginning of the gcode (i.e. in you start code), there needs to be a T0 command. Conversely, if you want to start with tool 1 and that uses etruder1 , then yo would have T1 at the start of the file.

    G92 E0 will set the current position of extruder 0 (E0) to zero. It's only useful if you use absolute extrusion rather than relative. Is it that you are using absolute extrusion and want set extruder 1 to zero? If so, use G92 E1. TBH, you are better off using relative extrusion because the firmware has to convert all absolute moves to relative in any case, and when you use relative, thee is no need to set the extruders to zero at the beginning.

  • yeah honestly this is just what Cura put in there... if it helps at all here is my config.g:
    ; Configuration file for Duet WiFi (firmware version 2.03)
    ; executed by the firmware on start-up
    ; generated by RepRapFirmware Configuration Tool v2.0.0 on Mon Sep 02 2019 11:40:46 GMT-0400 (Eastern Daylight Time)

    ; General preferences
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"My Printer" ; set printer name
    ; automatic saving on power loss is not configured

    ; Drives
    M569 P0 S1 ; physical drive 0 goes forwards
    M569 P1 S1 ; physical drive 1 goes forwards
    M569 P2 S0 ; physical drive 2 goes backwards
    M569 P3 S1 ; physical drive 3 goes forwards
    M569 P4 S1 ; physical drive 4 goes forwards
    M584 X0 Y1 Z2 E3:4 ; set drive mapping
    M350 Z16 I0 ; configure microstepping without interpolation
    M350 X16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation
    M92 X100.00 Y100.00 Z400.00 E100.00:100.00 ; set steps per mm
    M566 X1200.00 Y1200.00 Z180.00 E900.00:900.00 ; set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 Z180.00 E2400.00:2400.00 ; set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00 E250.00:250.00 ; set accelerations (mm/s^2)
    M906 X800 Y800 Z800 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; set axis minima
    M208 X210 Y210 Z240 S0 ; set axis maxima

    ; Endstops
    M574 X1 Y1 Z1 S0 ; set active low and disabled endstops
    M574 Z1 S0 ; set active high endstops

    ; Heaters
    M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit
    M305 P0 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 0
    M143 H0 S85 ; set temperature limit for heater 0 to 85C
    M305 P1 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 1
    M143 H1 S250 ; set temperature limit for heater 1 to 250C

    ; Fans
    M106 P0 S0.3 I0 F500 H1 T45 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P1 S0.3 I0 F500 H1 T45 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on

    ; Tools
    M563 P0 D0 H1 F1 ; define tool 0
    G10 P0 X17 Y-5 Z0 ; set tool 0 axis offsets
    G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
    M563 P1 D1 H1 F1 ; define tool 1
    G10 P1 X17 Y-5 Z0 ; set tool 1 axis offsets
    G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C

    ; Network
    M552 S1 ; enable network
    M586 P0 S1 ; enable HTTP
    M586 P1 S0 ; disable FTP
    M586 P2 S0 ; disable Telnet

    ; Custom settings are not defined

  • Okay, so i figured out part of the problem. The brim had a setting to chose which extruder to use. It was set to extruder 0 while the part was set to extruder 1. Now, that is set to the same extruder to match the model a new problem came up. The first layer went great, but on the second layer it decides to switch filament and prints on the wipe tower then switches back to the original filament and goes over to the part and starts printing with the mix of the two colors. It continues to do that until it gets to the point in the model where it is supposed to actually change color and just stops extruding all together but continues to "print". the one on the left is the 1" square test piece.

  • @aneta8duet TBH, it sounds like slicer settings. Your tool definitions look OK. So basically to switch extruders, the slicer should just be inserting T0 and T1 commands in the appropriate places in the file. So when you say "it decides to switch filament" that isn't a random "decision" on the part of the Duet firmware. It is switching to a different tool because at that point in the gcode file, there is a Tn command that the slicer has inserted. Sorry but I don't use Cura so can't advise where to look. One thing to check is that for the various sections within Cura, you only have the choice of Tool 0 or Tool 1. If the slicer inserts something like T2, that woud cause you problems because you only have Tool 0 and 1.

  • Ah, that makes sense. what for slicer do you use for multicolored prints? honestly i just stuck with cura because that is what came with my Anet A8 way back when i first got it. i just got used to it but that was also when i only had the one extruder motor and the original Arduino board.

  • @aneta8duet Personally, I use Slicer because I have a 5 input Diamond hot end and Slic3R is the only slicer I have so far been able to find that will deal with the number of tools that I require. I've stopped using the PE (Prusa) version because it has become too closely aligned with Prusa's MMU way of doing multi filament prints for my liking.

  • Ok just wanted to put an update on here. I quit using cura slicer. I am now using simplified 3d. First full day of printing dual color prints and I am so happy. I still have some bugs to work out though. I have to be watching my printer until the first tool change very closely. It will retract the filament on one extruder then start "printing" with the second extruder without priming the hot end first. So right now on the first tool change I shove the filament in manually. Then it will be just fine for the rest of the print.0_1567873900510_20190907_123105.jpg the left two were with cura and the right one was simplified 3d.

  • administrators

    I am late to this thread, but for a non mixing 3 in 1 out extruder, I would use the tfree tool change files to retract filament from the active tool when it is freed, the the tpost tool change file to feed the new filament in. Then a T-1 command in your end Gcode will retract the filament from the last tool used.

  • Would you be able to help me with writing that g code?

  • @anetA8Duet Hey there, I just got this set up on my Rostock Max v3.2 with the 2 into 1 style extruder. It isn't perfect because I haven't gotten the jamming issues (oddly shaped/oversized tips where the filament was melted don't fit in the bowden path well) fixed yet but I can link them for you if you want. It should at least give you a place to start.

Log in to reply