diff --git a/printer_data/config/CUSTOM/m_set_pa.cfg b/printer_data/config/CUSTOM/m_set_pa.cfg index afbee2a..e64f031 100644 --- a/printer_data/config/CUSTOM/m_set_pa.cfg +++ b/printer_data/config/CUSTOM/m_set_pa.cfg @@ -6,21 +6,23 @@ variable_pa: 0.04 # Fully dynamic Pressure Advance tuning: # - Uses nozzle diameter from printer.cfg # - Scales PA by nozzle and flow ratio -# - Automatically sets EXP (flow exponent) as 2x nozzle +# - Automatically sets EXP (flow exponent) as 2x nozzle diameter +# - Supports optional flow exponent factor for fine-tuning # - Dynamically sets SMOOTH_TIME unless overridden # # === HOW TO USE === -# SET_PA PA= [FLOW=] [MAX_FLOW=] [SMOOTH=] [EXP=] +# SET_PA PA= [FLOW=] [MAX_FLOW=] [SMOOTH=] [EXP=] [FLOW_FACTOR=] # # Example: -# SET_PA PA=0.05 FLOW=30 MAX_FLOW=70 -# SET_PA PA=0.05 ; uses defaults (FLOW=10, MAX_FLOW=15) +# SET_PA PA=0.05 FLOW=25 MAX_FLOW=35 FLOW_FACTOR=1.2 +# SET_PA PA=0.05 ; uses defaults with FLOW_FACTOR=1.0 gcode: - {% set base_pa = params.PA|float %} - {% set flow = params.FLOW|default(25.0)|float %} - {% set max_flow = params.MAX_FLOW|default(35.0)|float %} - {% set nozzle = printer.configfile.settings.extruder.nozzle_diameter|float %} + {% set base_pa = params.PA|float %} + {% set flow = params.FLOW|default(25.0)|float %} + {% set max_flow = params.MAX_FLOW|default(35.0)|float %} + {% set nozzle = printer.configfile.settings.extruder.nozzle_diameter|float %} + {% set flow_factor = params.FLOW_FACTOR|default(2.7)|float %} # === Scale PA based on nozzle diameter === {% if nozzle <= 0.2 %} @@ -38,8 +40,9 @@ gcode: {% endif %} {% set scaled_pa = base_pa * nozzle_scale %} - # === Calculate exponent from nozzle size unless overridden === - {% set exp = params.EXP|default(2.0 * nozzle)|float %} + # === Base exponent from nozzle size unless overridden === + {% set base_exp = params.EXP|default(2.0 * nozzle)|float %} + {% set exp = base_exp * flow_factor %} # === Flow ratio and flow scale === {% set flow_ratio = flow / max_flow %} @@ -65,10 +68,10 @@ gcode: {% set smooth_source = "dynamic" %} {% endif %} - # === Set and store final values === + # === Apply values === SET_PRESSURE_ADVANCE ADVANCE={adjusted_pa} SMOOTH_TIME={smooth} SET_GCODE_VARIABLE MACRO=SET_PA VARIABLE=pa VALUE={adjusted_pa} # === Logging === - {% set msg = "📐 PA scaled | Nozzle: " ~ nozzle|string ~ "mm | Base: " ~ base_pa|string ~ " ➜ x" ~ nozzle_scale|string ~ " ➜ x" ~ flow_scale|string ~ " (flow^" ~ exp|string ~ ") = " ~ adjusted_pa|string ~ " | Smooth: " ~ smooth|string ~ " (" ~ smooth_source ~ ")" %} + {% set msg = "📐 PA scaled | Nozzle: " ~ nozzle|string ~ "mm | Base PA: " ~ base_pa|string ~ " x" ~ nozzle_scale|string ~ " x" ~ flow_scale|string ~ " (exp=" ~ exp|string ~ ") = " ~ adjusted_pa|string ~ " | Smooth: " ~ smooth|string ~ " (" ~ smooth_source ~ ")" %} RESPOND MSG="{msg}"