Unretract after Tool Change



  • Hi,

    I am looking for a solution for the following problem.
    My goal is to handle the whole tool change process by the firmware.
    My tool change process is like the E3D tool changer:

    1. clear tool (tfree.g)
    2. grab new tool (tpre.g)
    3. stabilize temp and clean nozzle (tpost.g)
      • after cleaning with a brush, I retract with a G10

    Then all the scripts a finished and the printer continue with the print.

    The problem is that the printer not doing the unretraction.

    Is there a possibility to do the unretraction after the printer has moved to the next printing position?



  • @smoki3 I'm not sure that I understand the problem. If you are using firmware retraction, then G10 retracts and G11 does the un-retrcat. However, one must follow the other and you can't do multiple un-retracts (G11s) without there being a retract (G10) in between. So if you have a sequence which consists of G10, then G11, then another G11, the second G11 will not be acted on. Nor will any further G11 commands until a G10 is sent. The same applies to multiple G10 commands. Only the first will be acted on until another G11 is sent.

    Does that answer your question?



  • No sorry 🙂

    The problem is that the slicer moves the tool head to next position. And after this it have to unretract. If I unretract in the tpost.g script then I get stringing between my brush and the next print move.

    So actually:
    tpost.g:
    G1 X0 Y80 ; brush position
    G1 E5 F200 ; prime extruder
    G10 ; retract
    G1 X0 Y100 F1000 ; clean nozzle with brush
    G11 ; unretract
    Slicer commands:
    G1 X155 Y120 F18000 ; move fast to next print positon
    .....

    and it should more like this:

    So actually:
    tpost.g:
    G1 X0 Y80 ; brush position
    G1 E5 F200 ; prime extruder
    G10 ; retract
    G1 X0 Y100 F1000 ; clean nozzle with brush
    Slicer commands:
    G1 X155 Y120 F18000 ; move fast to next print positon
    G11 ; unretract
    .....


  • administrators

    I think what you are asking for is for the firmware to do an automatic G10 G11 just before the next printing move (i.e. the next move that has both XY movement and extrusion). Is that right?



  • @smoki3 First off it's G10 to retract and G11 to unretract - you have G11 for both.

    As for the rest, I do a similar thing for purging and wiping the nozzle on tool change but I use a post process script which makes use of the "R" parameter in G1 to return the print head from where it left. I think this might work in tpost.g but I'm not 100% sure

    So......

    G1 X0 Y80 ; brush position
    G1 E5 F200 ; prime extruder
    G10 ; retract
    G1 X0 Y100 F1000 ; clean nozzle with brush

    Then add
    G1 R2 X0 Y0 Z0 F18000
    followed by
    G11 ; unretract

    The G1 R2 ..... line will cause the print head to move quickly back to where it started. Then the G11 will unretract and the slicer commands will continue from that point. That's what happens with my post processing script so I'd have thought it should work with tpost.g too.

    HTH



  • @dc42

    yes extacly... is this actually possible?



  • @deckingman

    sorry just a typo.

    No this is not working. Because G1 R2 moves to last position where the tool change was called and not the next print move.



  • @smoki3 said in Unretract after Tool Change:

    @deckingman

    sorry just a typo.

    No this is not working. Because G1 R2 moves to last position where the tool change was called and not the next print move.

    Yes that's what I'd expect. Move to the last known position, un-retract, then the next move in gcode file will be the next print move. Is that a problem with a tool changer?



  • @deckingman
    yes because you get stringing between the last known position and the next print move


  • administrators

    @smoki3 said in Unretract after Tool Change:

    @dc42

    yes extacly... is this actually possible?

    Not yet. Can't you get your slicer to do a G10 retract before the travel move after the tool change, and a G11 afterwards? If you can't, then I can see that having RRF do an automatic G11 when it starts to print again would be useful. It seeds some thought because RRF would need to remember the G10 status of each extruder separately, assume that you hadn't cancelled it with a separate G1 E command, also it might or might not need to undo the Z hop depending on whether there was a Z hop before or at the start of the tool change. And behave differently if the machine is in CNC mode, because CNC machines don't do extrusion.



  • @dc42
    Sure some slicer can do this. But simplify does not directly support firmware retraction and I noticed that's it is hard to get the RRF and slicer work nice together. Especially if I do some manually extrusion in the tpost.g.
    So I am looking forward to such a solution in the firmware



  • I got another idea:

    What's if we use "G11 S1" to set a trigger. That means if the RRF received this code then it is watching out for the next movement with an extrusion. Then you don't have to remember the retraction state of each tool and it's controlable by the user.



  • @smoki3 said in Unretract after Tool Change:

    @deckingman
    yes because you get stringing between the last known position and the next print move

    But if the next move is a print move including extrusion, then you need to unretract before making that move, so you won't get stringing. If on the other hand, the next move is simply a change of position without extrusion, then you might get stringing. In that case, the unretract needs to happen after the first non print move and before the next print move.
    So the unretract needs to be conditional depending on whether the next move has an "E" element.
    I can't off hand think of a way to do that other than a post processing script.


Log in to reply