Y Adapter filament switching

  • I got one of these: https://www.seemecnc.com/collections/parts-accessories/products/2-into-1-dual-filament-feed-adapter-fitting-only

    With the goal of seeing if I could make it work with the E3D v6. Here's my first "challenging" print with it: http://imgur.com/a/hssVb

    This took some trial and error on retraction (Initially I was just dumping 5mm of filament then retracting fast. Now I retract, un-retract, pause, then pull.)

    It's working well enough, though not ideally, and I'm sure others can help refine the process. I'm doing most of the heavy lifting in RRF's free/post files currently, so that I can quickly test and change things. Some of this is probably better done in the slicer, but for testing this was far easier.

    On the hardware side, it's pretty straightforward. Use locking collars on all the collets. Chamfer every bowden connection. Use a few drops of canola oil to help free things up. Run filament through by and and feel for any points it snags, and smooth those out as best you can. (exiting the Y adapter is the big one). Be extra sure your PTFE into the hotend is really firmly seated.

    When testing, run the swap in air, only pulling out the one filament, not pushing in the second at first. Look for a good clean break on the end of your filament, no worse than pictured here: http://imgur.com/msU4hia If it has a long tail, it will jam. If you get a tail, pull the Y adapter off at the bottom fitting, pull out any filament strands (with tweezers) and push some filament in by hand. If you just run filament in normally, you're in for a bad time.

    So far I have only tested with PLA, and a quick check with PETG (but no PETG prints). I don't print in ABS, so can't say how that'll work. For PLA I get consistent results across two brands, with temps ranging form 195 - 215c. The best breaks occur between 200 - 205c. For the retract length, you can likely shorten it to match your normal retraction. (I have to retract at 3mm with the Y adapter, I was at 2mm without it)

    In my slicer (either Cura or S3D) I just call the tool change per usual (T0/T1) and have the slicer make a prime pillar behind my print on the bed. That way any ooze scrapes off on the prime pillar (because I move to the back during the swap). I also have the slicer set my operating/standby temps in the start script.

    For S3D, that's like this:
    G10 P0 S[extruder0_temperature] R[extruder0_temperature]
    G10 P1 S[extruder0_temperature] R[extruder0_temperature]

    My tool definitions are (Note I'm using Fan 1, you probably don't need/want that):
    M563 P0 D0 H1 F1 ; Define tool 0
    G10 P0 S0 R0 X0 Y0 ; Set tool 0 operating and standby temperatures
    M307 H1 A326.1 C168.0 D6.1 B0 ; PID settings for H1
    M563 P1 D1 H1 F1 ; Define tool 1
    G10 P1 S0 R0 X0 Y0 ; Set tool 1 operating and standby temperatures
    M92 E90.13:92.67 ; Set extruder steps per mm

    So, here's my tfreeX.g script (identical for tfree0 and tfree1):
    M83 ; relative extruder moves
    G91 ; relative moves
    G1 E-3 F1500 ; retract 3mm
    G1 Z10 F9000 ; move up 10mm
    G90 ; absolute moves
    G1 X0 Y130.00 F9000 ; move to back left side of the bed
    G4 S2 ; Pause 2 seconds
    G1 E3 ; Extrude 3mm
    G1 E-150 F6000 ;retract 150mm @ 100mm/s

    And my post script:
    M83 ; relative extruder moves
    G1 E145 F6000 ; Feed 145mm @ 100mm/s
    G1 E3 F1500 ; Feed 3mm @ 25mm/s
    G91 ; relative moves
    G1 Z-10 F9000 ; move down 10mm

    I've spent a good bit of time tweaking and tuning this for my specific E3D v6. Since changing to this script, I've done ~500 swaps with zero jams. If you get a jam with a v6, it may be due to a burr in the heatbreak, see Josef Prusa's post here: http://www.prusaprinters.org/update-multimaterial-upgrade/

  • administrators

    This is really helpful information, thanks alot!

  • The one area I'm still working on improving is the "post" re-feed of filament. An air bubble gets trapped in the hotend. You want to slow down as soon as that air bubble starts to compress, which is why I go from 100mm/s to 25mm/s for that last 3mm, and don't extrude the last 2mm at all. This is working, but generates ooze, which over a long enough print can really build up.

    I suspect there's a better method there, but haven't quite gotten it yet. This is the best I've come up with for now.

  • Thank you for all your work on this procedure. I am in the process of setting 2 E3D heads on independent X carriages and each head will have 2 filament feeds (4 extruders total). This will save me alot of debug setup time.

    Thanks again.

  • Be warned, if you use this with Cura, it works fine, but you'll want to pull out the M109's at the start of the gcode. If you don't, when it does M109 T1… it'll trigger a hotend swap. On a delta, since you're homed, when it tried to move to the back of the bed it'll be bouncing off the end stops, and bad sounds ensue.

    Of course, Cura 2.x doesn't have post processing scripts, either, so that's a manual change.

  • This is great information. Do you print a wipe and prime tower at each tool change?

  • A prime tower, yes. I've tested it with both cura & s3d. I position the prime tower to the back of the bed, so the nozzle passes over it after a switch, to make sure any ooze is trapped on it.

    Also, for the retraction distance I used 3mm. That's what I found I have to retract at with the Y adapter, without it I was at 2mm. Set that value close to your normal retractions in both spots, don't just take 3mm and go. If you only need to retract 1mm, that might cause you jamming.

  • Is there any way to do it in slic3r? No problem if not I have s3d just don't use it day to day.

  • This is great - I've got the same SeeMeCNC Y adapter and will be setting this up soon. I really appreciate all the tips.

  • Slic3r doesn't generate a prime tower. There are post-processing scripts to add them to slic3r, but I didn't want to bother with them.

    Cura does do a prime tower, and I've seen people having good prints with it with dual colors, but it's goofed up for me (didn't prime before printing) on two models I've sliced in it now. I haven't given up on it, but for now I'm having the best luck with s3d.

    The only issue I'm currently fighting is stringing. I've collapsed the short retract / reprime into my standard firmware retract, so I just have a G10 / G11 in the script there. I also shortened up the longer reprime, and it greatly cut down on the ooze. My scripts currently are:

    ;tfreeX.g script (identical for tfree0 and tfree1):
    M83 ; relative extruder moves
    G10 ; retract
    G90 ; absolute moves
    G1 X0 Y130.00 F9000 ; move to back left side of the bed
    G4 S2 ; Pause 2 seconds
    G11 ; unretract
    G1 E-150 F6000 ;retract 150mm @ 100mm/s

    And my post script:
    M83 ; relative extruder moves
    G1 E142 F6000 ; Feed 145mm @ 100mm/s <- play with this tower to eliminate ooze, and watch where your prime pillar starts
    G1 E3 F1500 ; Feed 3mm @ 25mm/s <- the last 3mm should definitely be slower, or you'll get jamming.

    Now if I can eliminate my stringing (just your run of the mill PLA stringing, but it's not going away yet) I'll be all set.

    Here's a (rough, but functional) squirtle. http://imgur.com/WAAoS9e

    The underextrusion in blue was a filament tangle (the long retracts can pop your filament off the side of a spool).

    I'm over 1500 filament swaps with no jams now.

  • So, I was hitting some limits I suspected were from friction added by the Y adapter - it was forcing me to use 205c for most of my printing (anything above 40mms/). Without the Y, I was printing at 195c usually. This was adding stringing.

    I put on some e3d titans for the extra torque, and I could lower the temps down to 195c, but hit a new problem… I can't retract above 60mm/s without the stepper stalling out. (I'm running on 12v, perhaps at 24v I could? Don't know)

    This slow retract speed means I don't get a clean filament break, and therefore, jamming. Did a bunch of testing, and came up with the following. It's not pretty, but it's made it through hundreds of swaps now without a jam. I currently have the Z-lift commented out, I'm doing a .25mm lift in my retraction, and that's enough for now.

    M83 ;relative extruder moves
    G91 ;relative moves
    ;G1 Z10 F12000
    G90 ;absolute moves
    G1 X0 Y130.00 F12000 ; move to back left side of the bed
    G4 S2 ;pause two seconds
    G11 ;unretract
    G1 E-20 F1200 ;retract 20mm fairly slow
    G1 E20 F3600 ;extrude 20mm to "pack" the stringing
    G1 E-150 F3600 ;immediately pull back 150mm as fast as the titan allows

    M83 ;relative extruder moves
    G1 E142 F3600 ; extrude 142mm as fast as the titan can
    G1 E3 F1500 ;extrude 3mm relatively slowly - you may even want to go slower.
    G91 ;relative moves
    ;G1 Z-10 F9000 ;move down 10mm

  • administrators


    …I put on some e3d titans for the extra torque, and I could lower the temps down to 195c, but hit a new problem... I can't retract above 60mm/s without the stepper stalling out. (I'm running on 12v, perhaps at 24v I could? Don't know)

    If you are using a 0.9deg/step extruder motor then it's quite likely that you need 24V to maintain torque at high speed. See https://duet3d.com/wiki/Choosing_stepper_motors#How_to_work_out_the_power_supply_voltage_you_need.

  • This are 1.8 degree steppers. I knew I'd need 24v for 0.9 degree, but with the titan's 3:1 gearing 60mm/s is about all I can do on them without stalling out, even with the 1.8 degree steppers.

  • administrators

    Are you using a low current high inductance motor? That would also give reduced torque at high speeds. See the link I posted earlier.

  • administrators

    If you are running it at 1A then at 60mm/sec the back emf due to inductance comes out at 11.8V and the back emf due to rotation comes out at 12.6V. So yes, you do need more voltage if you want to maintain torque. OTOH that motor is overkill, you could use a shorter one with lower inductance and lower rotor inertia. I use 34mm long motors with about 0.22Nm torque on my 3:1 geared extruders.

  • The goal with going to the titan was to gain a little torque - wouldn't I lose some, or come out about even, with a smaller stepper like that?

  • I'm using a 20mm pancake stepper with genuine and now a clone titan I am testing, works perfectly for almost everything but it can't extrude PLA faster than 30mm/s (just to unambiguous thats extruder speed not print speed - 30mm of filament per second). I will see if it can retract faster, I didn't test that. Im following this closely, I have a y splitter, but it looks much trickier than I thought it would be.

  • The Y adapter has added a crazy amount of hysteresis, and is doing weird things with backpressure.

    It works, but it's taking some definite re-tuning of retraction, including pressure advance, to get dialed in.

    I went through my stepper collection, and I don't have any other small nema17's, just some nema14's. I may get a smaller Nema17 to test with.

  • Do you think the hysteresis is cause by loose fit of the filament through the y-adaptor?

  • At the junction in the Y you can see the filament flex. Not really a way around it, I think it's about as constrained as you can make it.

    I've been having a lot of issues around my retraction points, but now some testing is showing I get nicer results with slicer retracts than FW, despite the same settings. So perhaps not all of it is due to the added hysteresis, some might be good old tuning around the new setup.

    I'm very close to having my prints back at the quality they were before I put it in, it's just taken some learning on what needed done.

  • Today's the day I try to get this going on my new CoreXY with an E3D Lite6! Kraegar, I really appreciate all the work you've done and info you've provided. Since you're back to slicer retracting, could you share your S3D retraction settings? Better still would be an entire factory image for a working print - that would really help eliminate some of the model and process setup mistakes I'm bound to make (I know I'd still have to fine-tune settings for my system).

    Regarding getting extra torque from your extruder without switching to 24V…since you're now using a Titan, I think you might be able to gain some torque by reducing the microstepping by a factor of ~4 (from 1/16 to 1/4 for example), with the Titan's gearing keeping your final resolution roughly the same. This is based on reading somewhere that microstepping increases precision at the cost of torque. I'm no expert on this - just a thought.

  • Well, I'm unhappy with the amount of retraction I'm having to do to combat the stringing. I was very low at it before, under 3mm.


    I'm still getting some light stringing.

    I'm starting to move things into the tool change script in S3D, rather than doing it all in firmware. I haven't moved much of it yet, though, but here's the start:


    The idea being to move everything but the actual switch into the slicer eventually (move to the purge area, etc) rather than having it it tfree/tpost.

    I'm still not exactly sure why changing to slicer based retraction cleaned up the blobs, that's the opposite of my past experiences. But it's working for now, so who knows. (David, I'd love some insight on the actual mechanics of how FW retraction runs… order of moves, speed of the z-hop, etc)

    I'll play with microstepping, see if it lets me do a faster retraction without losing torque, that's not a bad idea. I'll probably also try some smaller steppers in between the monsters I have now, and the small ones David mentioned. Can never have too many spare steppers.

  • Now that the swapping part is working, I wanted to make it all a bit more logical, separating out the filament change itself from the print moves.

    To do this, I put the following in the s3d tool change script:

    That's doing a retract, zhop, move to purge zone, unretract & unhop. Then it runs the tool change.

    Now tfreeX.g is just simply this (this is in both my tfree0.g and tfree1.g in /sys)
    G1 E-20 F1200 ;retract 20mm
    G1 E20 F3600 ;pack the filament to eliminate the tail
    G1 E-150 F3600 ; retract 150mm

    tpost is unchanged (this is in my tpost0g. and tpost1.g in /sys)
    M83 ;relative extruder moves
    G1 E142 F3600
    G1 E3 F1500

    However, that means if I want to change filaments outside of the script, I need an extra step, so I added a T0.g / T1.g macro (Two macros in the macros page, one for each extruder)
    M83 ; relative extrusion
    G1 E-5 F3600 ; Retract 5mm - adjust this to your standard retraction
    G4 S2 ; pause 2 seconds
    G1 E4.9 F1200 ; unretract (extrude) 4.9mm
    T0 ; switch to T0

    If I want to switch active extruders outside of a print, I need to run those macros, not just send a T0 or T1.

    Still, the logic makes more sense now, it's broken out where things feel like they "should" be. And it's easier to adjust based on the print or task I'm trying to do.

  • If I were able to retract at 100mm/s, I'd keep everything the same, except for tfreeX.g would be:

    G1 E150 F6000

    No other changes required.

Log in to reply