Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Y Adapter filament switching

    Scheduled Pinned Locked Moved
    General Discussion
    11
    75
    15.9k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • kraegarundefined
      kraegar
      last edited by

      You must retract, pause a bit, unretract. This is the "trick" I found with the v6, to get around needing a "ramming" swap. The goal is to get a clean break on the filament by having as little melted filament in the nozzle as possible, for as short of a time as possible.

      The other option would be to ram 5mm of filament out by doing something like:
      G1 E5 F1200

      Then immediately do a single long (150mm) retraction @ 100mm/s. But that leaves a lot of filament mess, where the above process achieves almost the same thing.

      Co-Creator of the RailcoreII CoreXY printer
      https://www.thingiverse.com/thing:2407174

      1 Reply Last reply Reply Quote 0
      • Yonkimanundefined
        Yonkiman
        last edited by

        Ahโ€ฆmy problem was thinking that "change filaments" meant switch between extruders, not swap out spools of filament.

        So you're saying that before pulling all of the filament out of the extruder/bowden tube, etc., this code [retract, wait, and unretract] makes the filament come out cleaner and with less mess than not doing it. What I still don't get is it seems like after the unretract, the filament is now just minus 0.1mm away from where it started. It seems to me like it would just melt again and leave you basically where you started.

        I'm not saying you're wrong or anything - I'm just trying to understand what's happening.

        1 Reply Last reply Reply Quote 0
        • kraegarundefined
          kraegar
          last edited by

          Yes, this is to switch two filaments with one hotend (two extruders). The goal is to have the filament look like this:
          http://imgur.com/msU4hia

          There are a couple ways I've found to accomplish that, depending on what your extruder is capable of. If you just pull the filament back, you get long tails, and it doesn't look like that at all. The tails WILL jam an e3d v6. In quite spectacular fashion (I had to take mine apart to clear one)

          The first effort was around ramming / purging. The idea was to push out filament as fast as possible, then yank it back. This generated an awesome break, very clean. But left a ton of filament mess. It was basically:
          G1 E5 F1200
          G1 E-150 F3600

          Simple. But messy, and requires a very fast retract.

          Step two, I figured out how to get rid of that purge. The trick was to mimic what it's doing. So you unretract, then PAUSE. 2 seconds or so of pause is enough to actually cool the retracted filament down. Then you push it forward, and pull immediately. Clean break, if you can retract at 100mm/s. So, basically this:
          G1 E-3 F3600 <- whatever a "normal" retract is for your setup
          G4 S2 <- pause two seconds, to cool the retracted filament
          G1 E2.9 F3600 <- whatever a "normal" unretract is for your setup
          G1 E-150 F6000 <- yank the filament back

          Then I hit a new issue, I put on titans (for more torque, so I could lower my temps some). But 100mm/s retractions don't work, so I played around (lots of jams) until I could generate a clean-ish break. This involves "packing" the filament.

          G1 E-3 F3600 <- whatever a "normal" retract is for your setup
          G4 S2 <- pause two seconds, to cool the retracted filament
          G1 E2.9 F3600 <- whatever a "normal" unretract is for your setup
          G1 E-20 F3600 <-Retract enough to pull it into the heatbreak
          G1 E20 F3600 <- Pack the filament in, this will get rid of most of the stringing
          G1 E-150 F3600 <- Pull the filament out past the Y adapter.

          There may be simpler ways to do this with an e3d v6, I've just been playing with it until I find something that works. If you can retract at 100mm/s, the 2nd method above has worked for me for over 2500 filament swaps in a row, with no jams. If you can only retract at ~60mm/s, I've just started with the third method, but it's worked around 500 times now, with no jams.

          My testing method is to just swap filament in air, extruding 20mm between each swap using a macro. It looks something like this:
          http://imgur.com/DXYp6nT

          Once I can complete 50 in a row, I try a print.

          Co-Creator of the RailcoreII CoreXY printer
          https://www.thingiverse.com/thing:2407174

          1 Reply Last reply Reply Quote 0
          • Yonkimanundefined
            Yonkiman
            last edited by

            Thanks - I understand all that (and am fortunate enough to be able to retract at 100mm/s).

            OK, I just realized what my confusion was. Your T0.g script was:

            G1 E-5 F3600 ; Retract 5mm - adjust this to your standard retraction
            G4 S2 ; pause 2 seconds
            G1 E**-**4.9 F1200 ; unretract 4.9mm

            When I saw the "unretract 4.9mm", I thought that was a fancy way to say you were pushing the filament back into the hot end. (4.9mm seemed so precise I assumed this was some sort of filament shaping trick.) I didn't look at the command itself which clearly shows you are actually retracting 4.9mm farther (my bad).

            I totally understand now - thanks for your patience!!!

            1 Reply Last reply Reply Quote 0
            • kraegarundefined
              kraegar
              last edited by

              Doh, no, that was a typo, you are pushing it back (extruding it). It is a filament shaping trick ๐Ÿ™‚

              I'll edit.

              The goal is to have your nozzle filled with melted filament, but for as little time as possible. That's what gets it to break, rather than string. It seems pointless, but with the E3d v6, if you don't do it, you will get constant jams.

              Co-Creator of the RailcoreII CoreXY printer
              https://www.thingiverse.com/thing:2407174

              1 Reply Last reply Reply Quote 0
              • DjDemonDundefined
                DjDemonD
                last edited by

                I cant wait to try it sounds like fun, and we will be so far into it thanks kraegar for all the hard work you've done here. Now just finding time to install the Y adaptor and second extruder.

                Simon. Precision Piezo Z-Probe Technology
                www.precisionpiezo.co.uk
                PT1000 cartridge sensors NOW IN, just attach to your Duet board directly!

                1 Reply Last reply Reply Quote 0
                • kraegarundefined
                  kraegar
                  last edited by

                  I'm not entirely convinced on my newer packing method for slower extruders. I'd much prefer to get the kind of break I was getting with 100mm/s retractions. Maybe once more of us are doing it, we'll find a better method.

                  Also, I really don't like that my retractions are currently at 5mm, so we need more people using the Y adapter with the v6, to see if we can find retraction settings that don't string, and aren't so long!

                  Co-Creator of the RailcoreII CoreXY printer
                  https://www.thingiverse.com/thing:2407174

                  1 Reply Last reply Reply Quote 0
                  • Yonkimanundefined
                    Yonkiman
                    last edited by

                    @kraegar:

                    Doh, no, that was a typo, you are pushing it back (extruding it). It is a filament shaping trick ๐Ÿ™‚

                    Ok, now you're just f-ing with me. ๐Ÿ™‚

                    So back to a rephrasing of my original question: what happens immediately after the 4.9mm extrusion/unretraction? Something has to happen next, right?

                    1 Reply Last reply Reply Quote 0
                    • kraegarundefined
                      kraegar
                      last edited by

                      @Yonkiman:

                      @kraegar:

                      Doh, no, that was a typo, you are pushing it back (extruding it). It is a filament shaping trick ๐Ÿ™‚

                      Ok, now you're just f-ing with me. ๐Ÿ™‚

                      So back to a rephrasing of my original question: what happens immediately after the 4.9mm extrusion/unretraction? Something has to happen next, right?

                      If must seem like I am just screwing with you!

                      Ignore the "some happens in the slicer, some happens in the firmware" aspects of this, and let's take the simplest case, where we can do 100mm/s retraction, ok?

                      So, here would be the "during a print" steps.

                      Retract (G1 E-5 F3600) and zhop to clear your print
                      Move to your purge area (G90; G1 X0 Y130)
                      Pause two seconds to let the filament cool (G4 S2)
                      Extrude all or nearly all; aka, unretract (G1 E4.9 F1200)
                      Retract 150mm of filament (G1 E-150 F6000)
                      <new tool="" becomes="" active,="" same="" hotend,="" second="" extruder="">Feed in new filament (G1 E142 F6000; G1 E3 F1200 )
                      Unzhop and get back to printing.

                      That's it. You can't just remove the filament to switch. You have to pull a bit back, cool it, extrude it, then yank it back again. Or, that's what I've found works for me anyway.</new>

                      Co-Creator of the RailcoreII CoreXY printer
                      https://www.thingiverse.com/thing:2407174

                      1 Reply Last reply Reply Quote 0
                      • Yonkimanundefined
                        Yonkiman
                        last edited by

                        I totally get the basic principles. It's just that your T0.g script seems incomplete:

                        You have to pull a bit back, cool it, extrude it, then yank it back again.

                        Where is the "yank it back again" part in the T0.g procedure? Does another macro start that yanks it back? Does control go back to the object's gcode file where the Tool Change script yanks it back?

                        Maybe I just don't understand when/how T0.g and T1.g are supposed to be used. To me they look like scripts that retract the filament, then shove it back in (minus 1/10 of a mm), and then things go idle, almost as if Tx.g had never been run.

                        Thanks again for bearing with me!

                        1 Reply Last reply Reply Quote 0
                        • kraegarundefined
                          kraegar
                          last edited by

                          Ok, now we're on the same page. T0.g does the "prep" work of priming the filament, so to speak, then at the end of it is the command "T0"

                          So, if your current extruder is T1, and you run my "T0.g" it will do the following:

                          Run T0.g
                          Run tpre1.g
                          Run tfree1.g
                          Run tpost0.g

                          Those last 3 are called when the T0 command is interpreted by RRF.

                          Co-Creator of the RailcoreII CoreXY printer
                          https://www.thingiverse.com/thing:2407174

                          1 Reply Last reply Reply Quote 0
                          • Yonkimanundefined
                            Yonkiman
                            last edited by

                            That's it! Should have realized that a tool change will call those three .g files regardless of where it comes from. Thanks!

                            1 Reply Last reply Reply Quote 0
                            • Yonkimanundefined
                              Yonkiman
                              last edited by

                              I got it (mostly) working! Can swap filaments with T0.g and T1.g doing your packing trick. Dealing with some bed-leveling issues (the two Bowden tubes are causing some flexing of my printhead) and working on the same trade-off between putting the code in S3D vs in the Duet's .g files. I also think the swapping might be easier with my Lite6 (bowden tube all the way down to the nozzle) than with an original V6. Before I got your packing working reliably, I saw some pretty ugly, long filament trails, but it never jammed. Also, I didn't appreciate how useful it is to have a transparent Y adapter! Was originally going to try this with a printed Y, but the ability to see what's happening is alone worth the $20.

                              I also had an entertaining accident: S3D writes the extruder commands in absolute mode, but somewhere an M83 was accidentally inserted (or an M82 was missing), so my extruder was interpreting absolute commands as relative, and my 4:1 geared extruder sounded like a jet's turbine engine as it started spinning up with no end in sight. Apparently the right commands in the right order is sorta important. ๐Ÿ˜•

                              Thanks again for your help, kraegar. Will post my best config once I dial things in a little more. Please let me know where you settle on the S3D/macro split.

                              1 Reply Last reply Reply Quote 0
                              • kraegarundefined
                                kraegar
                                last edited by

                                Awesome, glad it's working. I suspect the lite6 will indeed do better - it should suffer from heat creep less. Depending on what extruder you're running, if you can retract at 100mm/s you might want to try that method, as it was by far the cleanest.

                                Playing with the pause and such can make a big difference, too.

                                Co-Creator of the RailcoreII CoreXY printer
                                https://www.thingiverse.com/thing:2407174

                                1 Reply Last reply Reply Quote 0
                                • DjDemonDundefined
                                  DjDemonD
                                  last edited by

                                  This seems very relevant to the latest edge firmware:

                                  Known issues

                                  If you enable tool mixing, you should use relative extrusion only. If you use absolute extrusion, then if you pause and resume the print, the extruder is likely to extrude the wrong amount of filament in the first move after resuming.

                                  Simon. Precision Piezo Z-Probe Technology
                                  www.precisionpiezo.co.uk
                                  PT1000 cartridge sensors NOW IN, just attach to your Duet board directly!

                                  1 Reply Last reply Reply Quote 0
                                  • kraegarundefined
                                    kraegar
                                    last edited by

                                    I only use relative extrusion during my prints, anyway, but I've wondered what would happen if you were switching from absolute to relative & back within your free/post scripts. I was guessing it probably wouldn't go so well.

                                    Co-Creator of the RailcoreII CoreXY printer
                                    https://www.thingiverse.com/thing:2407174

                                    1 Reply Last reply Reply Quote 0
                                    • Yonkimanundefined
                                      Yonkiman
                                      last edited by

                                      Ahโ€ฆdidn't know there was an S3D option for relative extrusion. That should make things a lot safer!

                                      Here's my current setup/scripts:

                                      S3D Tool Change Script (at this point I'm doing it all in tpost and tfree):

                                      T[new_tool]		; Change tool
                                      

                                      tfree:

                                      ; tfree0.g
                                      ; called when tool 0 is freed
                                      
                                      M83			; Make sure extruder is in relative mode (prob not needed anymore)
                                      G1 E-5.0 F3600		; Retract filament as soon as possible...
                                      G91			; Relative
                                      G1 Z2 F6000		; ...Then lower the bed...
                                      G90			; Absolute
                                      G1 X115 Y232 F18000	; ...Then get the hell away from the print
                                      G4 S2			; Pause two seconds to cool the retracted filament
                                      G1 E4.9    F3600	; Pack the filament to eliminate the tail
                                      G1 E-150.1 F6000	; Yank the filament past the Y adapter and into its Bowden tube
                                      

                                      tpost:

                                      ; tpost0.g
                                      ; called after tool 0 has been selected
                                      
                                      G1 E145 F6000		; Extrude 145mm @ 100mm/s
                                      G1 E5   F1500		; Extrude   5mm @  25mm/s
                                      G91			; Relative
                                      G1 Z-2  F6000		; Raise bed
                                      G90			; Absolute
                                      

                                      The retracted filament end doesn't look perfect (needs to be optimized for PLA with an E3D Lite6):

                                      But it was working well enough that I could print this:

                                      It's pretty ugly because I just built this printer and have a lot of single-filament fine-tuning to do, but it's a solid piece of plastic in two colors! Thanks for all your help, kraegar!

                                      Now back to the fine-tuningโ€ฆ

                                      1 Reply Last reply Reply Quote 0
                                      • kraegarundefined
                                        kraegar
                                        last edited by

                                        Off to a good start!

                                        To test my switching, I just made a macro to retract a single extruder, and ran it over and over, slightly changing things until I got the cleanest break I could. I literally ran hundreds of tests. That break isn't bad, but for the lite6, I'd guess you can improve it

                                        Co-Creator of the RailcoreII CoreXY printer
                                        https://www.thingiverse.com/thing:2407174

                                        1 Reply Last reply Reply Quote 0
                                        • kraegarundefined
                                          kraegar
                                          last edited by

                                          Ok, so I couldn't figure out why my single color s3d prints with firmware retracts looked fine, but my dual color prints had stringing and super blobby retraction pointsโ€ฆ but only on the retraction points before filament change. Going to software based retraction didn't fix that - it got rid of the blobs, but made the stringing worse.

                                          Turns out, s3d does some odd things on tool change, particularly if you use z-hop with retraction. Before a tool change, s3d will trigger a Z-Hop without retraction.

                                          See here: http://imgur.com/p4WAb1k

                                          The line after the highlighted one is the hop, but there's no retract before it. That'll cause a string.

                                          You can stop that by going to Firmware retraction, but I was getting strings with it with the titans - dc42's response to me about how firmware retraction works - it spreads out the z-hop speed so it takes the same time as the retraction - was the key. I have to do very short z-hops (0.1mm) or I get very blobby retraction points.

                                          I think this is due to the extra hysteresis in the bowden from the Y adapter - it's hard to clear the pressure on it fast enough, and during a z-hop on retraction the filament oozes, causing a blob. Going to a very short z-hop takes care of that.

                                          Of course, short z-hops cause other problems, like the nozzle dragging over curled parts. Solve one thing, cause another issue.

                                          So, for now, I'm back to firmware retracts along with some pressure advance like this:
                                          M207 S3 R-0.2 F1500 T1200 Z0.1 ; y adapter
                                          M572 D0 S0.1
                                          M572 D1 S0.1

                                          And it's yielding decent results.

                                          Co-Creator of the RailcoreII CoreXY printer
                                          https://www.thingiverse.com/thing:2407174

                                          1 Reply Last reply Reply Quote 0
                                          • Yonkimanundefined
                                            Yonkiman
                                            last edited by

                                            So the dual filament switching is working pretty reliably (though if kraegar has any new tweaks I'd love to see them, particularly since I upgraded my Lite6 to a full E3D V6 so our setups are that much more identical). But I'm running into a problem when I try to run SINGLE filament that I'd like to see if anyone else has run into.

                                            I use T0 exclusively for single-filament printing. When I cancel a print from Duet Web Control, something (not sure if it's the firmware or the web interface) releases T0. So to start a new print, I have to Select Tool T0 from the Heater 1 pulldown. When that happens, the tpost0.g file is run, which is a big problem since that script tries to feed 150mm of filament at high speed, when the filament is already loaded into the hotend.

                                            So is there a way to make sure either:

                                            1. T0 is not released when a print is canceled, or
                                            2. tpostX.g is not run if the previous tool was TX

                                            I think 1 is probably the cleanest answer since 2 might be the right thing to do in other use cases.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA