Jump to content

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.9 stable released!
        Here comes Cura 5.9 and in this stable release we have lots of material and printer profiles for UltiMaker printers, including the newly released Sketch Sprint. Additionally, scarf seams have been introduced alongside even more print settings and improvements.  Check out the rest of this article to find out the details on all of that and more
          • Like
        • 5 replies
      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Heart
          • Thanks
          • Like
        • 4 replies
    ×
    ×
    • Create New...