Jump to content
UltiMaker Community of 3D Printing Experts

Enabling M600 (filament change) on a UM2


JonGregory

Recommended Posts

Posted · Enabling M600 (filament change) on a UM2

Hi all - I'm trying to enable the M600 command so that I can change filament using the post-processing script in Cura (4.13). I understand that this command is not enabled by default in the firmware, so have dipped my toe into firmware modification - which I have never done before ... so go easy on me!

 

I downloaded what I understand is the latest version of the firmware for UM2 GitHub - Ultimaker/UM2.1-Firmware

 

Installed the Arduino IDE and opened up the Marlin.ino project file, set the processor type and serial port. Looked for the M600 command in the configuration_adv.h file and uncommented the line that defines the FILAMENTCHANGEENABLE variable:

 

//adds support for experimental filament exchange support M600; requires display
#ifdef ULTIPANEL
  #define FILAMENTCHANGEENABLE
  #ifdef FILAMENTCHANGEENABLE
    #define FILAMENTCHANGE_XPOS 3
    #define FILAMENTCHANGE_YPOS 3
    #define FILAMENTCHANGE_ZADD 10
    #define FILAMENTCHANGE_FIRSTRETRACT -2
    #define FILAMENTCHANGE_FINALRETRACT -100
  #endif
#endif

 

... and the complied and uploaded the firmware. That seemed to work in that the firmware version changed from 3.3.0 to DEV - so something happened. However, when I test the command with a doctored gcode file (below), the print starts normally but seems t ignore the M600 command and go straight to the cool-down cycle as if the print has finished (the only commands in the gcode are to move to a safe place, extrude a little filament and then change the filament).

 

What am I doing wrong???

 

gcode that I used:

 

;FLAVOR:UltiGCode
;TIME:43424
;MATERIAL:44253
;MATERIAL2:0
;NOZZLE_DIAMETER:0.4
;MINX:9.7
;MINY:9.7
;MINZ:0.27
;MAXX:213.3
;MAXY:213.3
;MAXZ:1.97
;POSTPROCESSED
;Generated with Cura_SteamEngine 4.13.1
M82 ;absolute extrusion mode
G1 Y50 F2400
G92 E0
G92 E0
G10

M107

M600 E30.00 U300.00 X0.00 Y0.00 ; Generated by FilamentChange plugin

G10
M107
;Version _2.6 of the firmware can abort the print too early if the file ends
;too soon. However if the file hasn't ended yet because there are comments at
;the end of the file, it won't abort yet. Therefore we have to put at least 512
;bytes at the end of the g-code so that the file is not yet finished by the
;time that the motion planner gets flushed. With firmware version _3.3 this
;should be fixed, so this comment wouldn't be necessary any more. Now we have
;to pad this text to make precisely 512 bytes.
M82 ;absolute extrusion mode
;End of Gcode
;SETTING_3 {"global_quality": "[general]\\nversion = 4\\nname = Not supported #2
;SETTING_3 \\ndefinition = ultimaker2_plus\\n\\n[metadata]\\ntype = quality_chan
;SETTING_3 ges\\nquality_type = not_supported\\nsetting_version = None\\n\\n[val
;SETTING_3 ues]\\nadhesion_type = none\\nretraction_combing = infill\\n\\n", "ex
;SETTING_3 truder_quality": ["[general]\\nversion = 4\\nname = Not supported #2\
;SETTING_3 \ndefinition = ultimaker2_plus\\n\\n[metadata]\\ntype = quality_chang
;SETTING_3 es\\nquality_type = not_supported\\nsetting_version = None\\nposition
;SETTING_3  = 0\\n\\n[values]\\ncoasting_enable = True\\ninfill_enable_travel_op
;SETTING_3 timization = True\\ntravel_avoid_other_parts = False\\n\\n"]}

 

  • Link to post
    Share on other sites

    Posted · Enabling M600 (filament change) on a UM2
    10 hours ago, JonGregory said:

    M600 E30.00 U300.00 X0.00 Y0.00 ; Generated by FilamentChange plugin

    the command does not process a U parameter I think you FilamentChange plugin and firmware might have a version/implementation  mismatch but it should certainly do the first unloading moves even then, does it not retract filament?

    that said the display of the UM2 is very different from the default marlin you'll need to change quite a bit more code to get the screen button interaction. have a look at the M601 right below which has this wait until a bit is set in a global variable to wait for the user. and is running lcd_update() in that loop amongst other things...

    https://github.com/Ultimaker/UM2.1-Firmware/blob/UM2.1_JarJar/Marlin/Marlin_main.cpp#L2175

     

  • Link to post
    Share on other sites

    Posted · Enabling M600 (filament change) on a UM2
    21 hours ago, JonGregory said:

    I downloaded what I understand is the latest version of the firmware for UM2 GitHub - Ultimaker/UM2.1-Firmware

     

    Just to be sure that you are using the correct repository as the base: your link leads to the firmware for the UM2+ series.

    For an UM2 (without "plus") it's this one:

     

    https://github.com/Ultimaker/Ultimaker2Marlin

     

    And be aware that there are separate git-branches for the different models. ("extended" and "go").

     

     

    21 hours ago, JonGregory said:

    Looked for the M600 command in the configuration_adv.h file and uncommented the line that defines the FILAMENTCHANGEENABLE variable

     

    I'm pretty sure the enclosing "ULTIPANEL" is not defined - that means your modification has no effect at all on the C pre-processor.

     

     

    22 hours ago, JonGregory said:

    Hi all - I'm trying to enable the M600 command so that I can change filament using the post-processing script in Cura (4.13).

     

    Sorry - but i have to ask....  why M600...?

     

    The usual way for UM2 printers with Cura is the "Pause at Height" post-processing script. And then use the material change feature on the pause screen of the printer.

    Is there any advantage by using M600 instead?

     

  • Link to post
    Share on other sites

    Posted (edited) · Enabling M600 (filament change) on a UM2
    On 3/1/2022 at 8:27 PM, tinkergnome said:

    Sorry - but i have to ask....  why M600...?

     

    The usual way for UM2 printers with Cura is the "Pause at Height" post-processing script. And then use the material change feature on the pause screen of the printer.

    Is there any advantage by using M600 instead?

     

     

    I also want M600, and it's to change filament in the *middle* of a layer. This would enable me to add virtual extruders in the printer profile of my slicer. I would then run M600 on tool change: instead of changing the tool, I'd just change filament.

     

    See here how it can be used on Marlin FW.

    Edited by gauthier
  • Link to post
    Share on other sites

    Posted · Enabling M600 (filament change) on a UM2

    The 'PauseAtHeight' plugin uses the M0 command. Have you tried using that instead of the M600?

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.3 stable released
        In this stable release, Cura 5.3 achieves yet another huge leap forward in 3D printing thanks to material interlocking! As well as introducing an expanded recommended print settings menu and lots of print quality improvements. Not to mention, a whole bunch of new printer profiles for non-UltiMaker printers!
          • Thanks
          • Like
        • 24 replies
      • Here it is. The new UltiMaker S7
        The UltiMaker S7 is built on the success of the UltiMaker S5 and its design decisions were heavily based on feedback from customers.
         
         
        So what’s new?
        The obvious change is the S7’s height. It now includes an integrated Air Manager. This filters the exhaust air of every print and also improves build temperature stability. To further enclose the build chamber the S7 only has one magnetically latched door.
         
        The build stack has also been completely redesigned. A PEI-coated flexible steel build plate makes a big difference to productivity. Not only do you not need tools to pop a printed part off. But we also don’t recommend using or adhesion structures for UltiMaker materials (except PC, because...it’s PC). Along with that, 4 pins and 25 magnets make it easy to replace the flex plate perfectly – even with one hand.
         
        The re-engineered print head has an inductive sensor which reduces noise when probing the build plate. This effectively makes it much harder to not achieve a perfect first layer, improving overall print success. We also reversed the front fan direction (fewer plastic hairs, less maintenance), made the print core door magnets stronger, and add a sensor that helps avoid flooding.
         

         
        The UltiMaker S7 also includes quality of life improvements:
        Reliable bed tilt compensation (no more thumbscrews) 2.4 and 5 GHz Wi-Fi A 1080p camera (mounted higher for a better view) Compatibility with 280+ Marketplace materials Compatibility with S5 project files (no reslicing needed) And a whole lot more  
        Curious to see the S7 in action?
        We’re hosting a free tech demo on February 7.
        It will be live and you can ask any questions to our CTO, Miguel Calvo.
        Register here for the Webinar
          • Like
        • 18 replies
      • UltiMaker Cura Alpha 🎄 Tree Support Spotlight 🎄
        Are you a fan of tree support, but dislike the removal process and the amount of filament it uses? Then we would like to invite you to try this special release of UltiMaker Cura. Brought to you by our special community contributor @thomasrahm
         
        We generated a special version of Cura 5.2 called 5.3.0 Alpha + Xmas. The only changes we introduced compared to UltiMaker Cura 5.2.1 are those which are needed for the new supports. So keep in mind, this is not a sneak peek for Cura 5.3 (there are some really cool new features coming up) but a spotlight release highlighting this new version of tree supports.  
          • Like
        • 22 replies
    ×
    ×
    • Create New...