Jump to content

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.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 7 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...