Filament Management - Duet 6HC



  • Is there a 'feature' to permit changing out filament in mid print such as the one in Marlin ?

    I don't mean load and unload when not printing I mean a sequence executed mid print i.e.

    Pause current print
    move extruder / hot end to safe location
    unload current filament
    confirm unloading successful
    load and purge new filament - repeat purge until user confirms OK.
    resume printing from last step

    What value if any would a 'Rotating Magnet Filament Monitor' be - some threads I've read indicate it needs calibrating every time the printer is power cycled. Can information from the monitor be used to pause the print whilst the operator 'fixes' something and continues or aborts the print ?

    Could a similar 'feature' to the filament change be created to allow an external nozzle clean if some blobs or otherwise are threatening to destroy a print ?

    Pause current print
    move extruder / hot end to safe location
    wait for operator to say OK to proceed
    purge some small amount of filament
    after short delay resume print from last step



  • You Mean M600?

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M600_Filament_change_pause

    Make your own macro named filament-change.g, set it up to be whatever ya like, and there ya go!



  • Thanks, guess I'll need to experiment. I'd seen the macro's option but how this all works isn't something I'm used to (no need with a Prusa).

    It isn't clear though how this all hooks into the web gui - say I wanted to run such a gcode script and allocate it a 'button' on the GUI - that much isn't very clear to me currently. I see that you can edit and manage files but actually adding to a menu option for excecution so more reading to do I guess.

    I don't think I'll be bothering with the filament monitor - seems a lot of people have more trouble with it than I think it is worth, I always disable the one on my Prusa for similar reasons oddly enough.



  • Figured the GUI thing - is there anywhere that describes M600 behaviour / sequence beyond the GCODE i.e. the unload and subsequent purge I don't want to be coding macros for stuff that is already built in.

    Seems like M600 is just a 'pause' that triggers execution of a gcode script so would I be correct in thinking that I need to code for the unload and purge within that script - since M600 simply seems to pause and move to a specific location.

    Sorry if I seem a little dim.



  • @Garfield Not within the pause script but a separate macro called "filament-change.g" and put that macro in the .sys directory. https://duet3d.dozuki.com/Wiki/Gcode#Section_M600_Filament_change_pause

    But you don't need to use M600 although you can do. A macro is simply a bunch of commands which get carried out in sequence. To initiate the macro you run M98 https://duet3d.dozuki.com/Wiki/Gcode#Section_M98_Call_Macro_Subprogram

    So a macro to carry out you last "feature" might look like :

    M25 (pause print)
    G1 Xnn Ynn (move to safe location)
    M291 (display message and optionally wait for a response)
    G1 Enn Fnn (extrude an amount of filament).
    G4 Snn (wait a few seconds)
    M24 (resume print).

    Save those commands and give it a name like "NozzleClean" and put it in the macros folder. Then whenever you want to run it send M98 P"0:/macros/NozzleClean" (or whatever path you need).



  • Total thumbs up ... it's starting to make sense now, definitely a bit more powerful than I thought with multiple options to achieve objectives.



  • @Garfield said in Filament Management - Duet 6HC:

    multiple options to achieve objectives.

    RepRapFirmware in 5 words or less.


  • administrators

    @Garfield said in Filament Management - Duet 6HC:

    Figured the GUI thing - is there anywhere that describes M600 behaviour / sequence beyond the GCODE i.e. the unload and subsequent purge I don't want to be coding macros for stuff that is already built in.

    Seems like M600 is just a 'pause' that triggers execution of a gcode script so would I be correct in thinking that I need to code for the unload and purge within that script - since M600 simply seems to pause and move to a specific location.

    Sorry if I seem a little dim.

    M600 is only supported for compatibility with Marlin. One example of using it would be if your slicer inserts a M600 command in the GCode file to allow you to swap filament types at that point.


Log in to reply