M200 Volumetric issue, revisited



  • I've been trying to get my head around volumetric extrusion and the "filaments" features. Read this post, which is informative, but I could still use some help.

    I got volumetric printing working, with the appropriate filament-specific stuff buried in the Prusa Slicer filament start g-code. What I think I would like to do is have the all the filament-specific stuff in the appropriate filament config.g instead, like this:

    ; Filament diameter and extrusion multiplier
    M200 D1.71
    M221 D0 S84.15
    
    ; Firmware retraction
    M207 S0.30 F2400 T1800 R0 Z0.2 
    
    ; Pressure advance settings
    M572 D0 S0.04
    
    

    Then I could just call M703 at the beginning of a specific gcode file for a print (e.g., in the custom gcode within Slicer), and if I need to switch mid-print I can just load that config file.

    I can see that the extrusion multiplier, retraction, and pressure advance settings are all being applied by calling the appropriate [M221|M207|M572] commands in the console, but an "M200" indicates that volumetric is off. This isn't helpful, but is explained in the linked post above.

    However, what I'm observing is that unless I actually place the M200 within the body of the top-level gcode file (i.e., the thing that Slicer is generating), that this value doesn't seem to be applied at all (i.e., the Duet overextrudes heavily). This is (a) pretty confusing, and (b) seems inconsistent given that all the other settings are applied and easily visible.

    So, I guess I'm wondering if I understand things correctly and really do need to make sure I have the right filament diameter applied via the "top-level" gcode file (whatever the term is, not down in the filament config.g)? Or is there something else going on that I've mucked up in this transition? And if I do understand things, is there a work-around?

    Thanks!


  • administrators

    Volumetric extrusion is done or not on a per-input-channel basis. This is so that the extrusion commands on PanelDue and in DWC will work as normal even after you are doing a print with volumetric extrusion enabled, or when you pause a print which uses volumetric extrusion. So to use volumetric extrusion, put the M200 command in your slicer start GCode.



  • @dc42 Thanks. So to be clear: I can put retraction, pressure advance, and extrusion multiplier wherever I want, but this one thing has to be in the slicer gcode?

    Is standard practice (when using volumetric) just to put in (e.g.) 1.75mm and do all the work with extrusion multiplier? Because if I cannot change the filament diameter during the print, then I have to have some other mechanism to get the extrusion rate right if I switch filament...

    Thanks again!


  • administrators

    @paralepsis said in M200 Volumetric issue, revisited:

    @dc42 Thanks. So to be clear: I can put retraction, pressure advance, and extrusion multiplier wherever I want, but this one thing has to be in the slicer gcode?

    Is standard practice (when using volumetric) just to put in (e.g.) 1.75mm and do all the work with extrusion multiplier? Because if I cannot change the filament diameter during the print, then I have to have some other mechanism to get the extrusion rate right if I switch filament...

    Thanks again!

    I haven't used volumetric extrusion except during testing, so I can't really advise you. Setting the filament diameter to 1.75mm and tweaking the extrusion multiplier using M221 sounds good to me, assuming that all your filament is nominally 1.75mm diameter.

    In fact, if you issue M200 from another channel, it will affect the extrusion. Volumetric extrusion on/off is handled per-input-channel, but the filament diameters are stored globally.



  • @dc42 Heh ok...so I can in fact use M200 commands from outside the "input channel" (i.e., the slicer-generated gcode file) to change the filament diameter, and they will be applied, I just cannot observe the change anywhere?


  • administrators

    @paralepsis said in M200 Volumetric issue, revisited:

    @dc42 Heh ok...so I can in fact use M200 commands from outside the "input channel" (i.e., the slicer-generated gcode file) to change the filament diameter, and they will be applied, I just cannot observe the change anywhere?

    M200 without parameters should report the filament diameters.



  • I'm pretty sure that when I use M200 outside the scope of the input channel, during a volumetric run, I just get the message about volumetric extrusion not being enabled.



  • Ok, I can confirm that this (in the input channel gcode):

    ; Set dummy filament diameter and then load filament settings
    M200 D1.75 
    M703
    
    ; report filament diameter?
    M200
    
    

    Does get me into volumetric extrusion mode, and that the M703 does result in a change in the filament diameter. Somewhat bogus way to have to do things, but this does solve my problem for me.

    Thanks for the discussion, it helped.


Log in to reply