What's new
VORON Design

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members!

Question Differing Nozzle Sizes?

Durahl

Well-known member
Do different Nozzle Sizes require different calibration values for the Extrusion Multiplier and Pressure Advance?

In the case of SuperSlicer ( which seems to get more and more outdated as time progresses ) the most obvious laymen's solution seems to be to create copies of the same filament with the various values, then assigning them in the dependencies to a compatible Printer Profile in which the Nozzle is defined. The other being an If / Else Logic buried somewhere? 🤔

How would / could this be done in something like OrcaSlicer which doesn't seem to have the dependencies feature a Filament could be assigned to?
 
The short answer is yes, each nozzle size requires calibration.

A little more detailed answer is, well it depends on the end product and your desired outcome. Can you get away without tuning each nozzle? Maybe, depends on the jump in size. I often go between .4 and .6 and the changes are subtle but they are there. I am usually okay with the outcome between the two but if you go from .4 to .8 the changes are much larger.

And think about Pressure Advance, it does in fact adjust for the pressure it is putting at the tip of the nozzle. Also Orca, and Bambu slicer do allow you to change the values of each filament. If you click on the edit button circled in red you can change any parameter to filament you need.

1691580257875.png
 
Thats my way of handling filament variables:
Code:
# SuperSlicer: SET_MATERIAL MATERIAL=[filament_type] FILAMENT="[filament_settings_id]" NOZZLE=[nozzle_diameter]
[gcode_macro SET_MATERIAL]
description: SET_MATERIAL MATERIAL=[filament_type] FILAMENT="[filament_settings_id]" NOZZLE=[nozzle_diameter]
variable_presets: {
      '0.4': {
        'ASA':  { 'pa': 0.030, 'z': 0.225, 'em': 96  },
        'ASA PRUSAMENT':  { 'pa': 0.020, 'em': 95  },
        'ASA FIBERLOGY':  { 'pa': 0.018, 'em': 95  },
        'ASA ROSA':       { 'pa': 0.035, 'em': 100  },

        # 'PETG': { 'pa': 0.050, 'z':  0.020, 'em': 100 },

        'PLA':  { 'pa': 0.040, 'z':  0.000, 'em': 100 },
        'PLA ROSA':  { 'pa': 0.020, 'em': 96 }
        }
      }
gcode:
    {% set material = params.MATERIAL | default('PLA') | upper %}
    {% set filament = params.FILAMENT | default('PLA') | upper %}
    {% set nozzle = params.NOZZLE | default('0.4') | lower %}

    {% set z_offset = printer["gcode_macro SET_MATERIAL"].presets[nozzle][material]['z'] %}
    {% set pressure_advance = printer["gcode_macro SET_MATERIAL"].presets[nozzle][filament]['pa'] %}  
    {% set extrusion_multiplier = printer["gcode_macro SET_MATERIAL"].presets[nozzle][filament]['em'] %}
   
    SET_PRESSURE_ADVANCE ADVANCE={pressure_advance}  
    SET_GCODE_OFFSET Z={z_offset}  
    RESPOND PREFIX="//" MSG="z_offset: {z_offset}"
    M221 S{extrusion_multiplier}
    RESPOND PREFIX="//" MSG="extrusion_multiplier: {extrusion_multiplier/100}"
It work with OrcaSlicer just fine too
 
The short answer is yes, each nozzle size requires calibration.
For both the Extrusion Multiplier and Pressure Advance?
Also Orca, and Bambu slicer do allow you to change the values of each filament. If you click on the edit button circled in red you can change any parameter to filament you need.


View attachment 2972
This I was aware of and am already using.

The Problem I have is with how my current understanding works is that I'd need to have Duplicates for each Nozzle Size I plan to use of each Filament I have which seems excessive as it bloats the Filament Dropdown List with each Nozzle Size I might add.
PrusaSlicer and SuperSlicer at least let you tie the various Filament Dupes to Profiles ( in my Case related to the Nozzle Diameter, in yours it might be a 45° Angle Orientation ) so you would only be seeing the Filaments compatible with the currently selected Profile but OrcaSlicer doesn't seem to have that functionality?:
Screenshot 2023-08-10 002744.png

What I meant was what filipk_ was explaining in more detail:
Thats my way of handling filament variables:
Code:
# SuperSlicer: SET_MATERIAL MATERIAL=[filament_type] FILAMENT="[filament_settings_id]" NOZZLE=[nozzle_diameter]
...
It work with OrcaSlicer just fine too
Uhh... Where in the Slicer ( OrcaSlicer in particular but also SuperSlicer ) would all of that have to be stored? 🤨
 
Uhh... Where in the Slicer ( OrcaSlicer in particular but also SuperSlicer ) would all of that have to be stored?
Macro goes to your printer.cfg
SET_MATERIAL MATERIAL=[filament_type] FILAMENT="[filament_settings_id]" NOZZLE=[nozzle_diameter]
This line above goes to your start gcode in slicer

First line of each filament describes generic material and also contains z_offset used for that particular type. Later ones have precise PA and EM values for each brand.
 
Last edited:
Macro goes to your printer.cfg

This line above goes to your start gcode in slicer

First line of each filament describes generic material and also contains z_offset used for that particular type. Later ones have precise PA and EM values for each brand.
Sorry the late reply... Was still working on my new PC 😅

I'm kinda confused about how this works...
Am I right to assume that your solution now parses the Filament and Nozzle Diameter to the Printer with the Macro stored on it and the Macro will then combine the proper Values together for the Printer to use? Do you still store the SET_PRESSURE_ADVANCE ADVANCE=0.034 setting in the Slicers > Filament > Custom G-Code Tab?

I tried to cobble up a mockup Code using my own nomenclature and some fake values since your example didn't include a Nozzle variation - Would the below example look right? 🤨
Code:
variable_presets: {
      '0.4': {
        'Fiberlogy ASA ( BLK )':       { 'pa': 0.035, 'em': 95  },
        'Fiberlogy ASA ( WHT )':       { 'pa': 0.034, 'em': 95  },
        'Dutch Filament ASA ( RED )':       { 'pa': 0.034, 'em': 95  },
        }
      '0.6': {
        'Fiberlogy ASA ( BLK )':       { 'pa': 0.032, 'em': 98  },
        'Fiberlogy ASA ( WHT )':       { 'pa': 0.037, 'em': 97  },
        'Dutch Filament ASA ( RED )':       { 'pa': 0.040, 'em': 99  },
        }
      }
Also... NOZZLE=[nozzle_diameter] is kinda obvious what it is supposed to but what are MATERIAL=[filament_type] and FILAMENT="[filament_settings_id]" doing/referring to? 🤔
 
Do you still store the SET_PRESSURE_ADVANCE ADVANCE=0.034 setting in the Slicers > Filament > Custom G-Code Tab?
No, pressure advance is set by the macro. I prefer to store these values in klipper because it's easier to change them later.

I tried to cobble up a mockup Code using my own nomenclature and some fake values since your example didn't include a Nozzle variation - Would the below example look right? 🤨
Code:
variable_presets: {
      '0.4': {
        'Fiberlogy ASA ( BLK )':       { 'pa': 0.035, 'em': 95  },
        'Fiberlogy ASA ( WHT )':       { 'pa': 0.034, 'em': 95  },
        'Dutch Filament ASA ( RED )':       { 'pa': 0.034, 'em': 95  },
        }
      '0.6': {
        'Fiberlogy ASA ( BLK )':       { 'pa': 0.032, 'em': 98  },
        'Fiberlogy ASA ( WHT )':       { 'pa': 0.037, 'em': 97  },
        'Dutch Filament ASA ( RED )':       { 'pa': 0.040, 'em': 99  },
        }
      }
Almost perfect but you're missing generic preset like 'ASA' or 'PLA' that would also include z offset for the specific material type to compensate for termal expansion at different temperatures, like this:
Code:
variable_presets: {
      '0.4': {
          'ASA': { 'pa': 0.030, 'z': 0.000, 'em': 95  },            #here
        'Fiberlogy ASA ( BLK )':       { 'pa': 0.035, 'em': 95  },
        'Fiberlogy ASA ( WHT )':       { 'pa': 0.034, 'em': 95  },
        'Dutch Filament ASA ( RED )':       { 'pa': 0.034, 'em': 95  },
        }
      '0.6': {
          'ASA': {  'z': 0.100 },                #here. I use preset 'ASA' as a default base, but if you don't you can leave it only with 'z' value
        'Fiberlogy ASA ( BLK )':       { 'pa': 0.032, 'em': 98  },
        'Fiberlogy ASA ( WHT )':       { 'pa': 0.037, 'em': 97  },
        'Dutch Filament ASA ( RED )':       { 'pa': 0.040, 'em': 99  },
        }
      }
Also... NOZZLE=[nozzle_diameter] is kinda obvious what it is supposed to but what are MATERIAL=[filament_type] and FILAMENT="[filament_settings_id]" doing/referring to?🤔
MATERIAL=[filament_type] is reffering to value chosen in the dropdown menu in slicer, eg. 'PLA', 'ABS', 'ASA' etc.
1692178550537.png
FILAMENT="[filament_settings_id]" is whatever you named your preset, eg. 'Fiberlogy ASA ( BLK ) SuperSpeed 300' from your screenshot, 'ASA Fiberlogy' on mine
 
Top