From 0b8d67538737541f597e2999b7b4890b5f96a2df Mon Sep 17 00:00:00 2001 From: reffu42 <1823982+reffu42@users.noreply.github.com> Date: Thu, 4 Jul 2024 11:01:04 -0400 Subject: [PATCH] Update fans-control.cfg Instead of adding fanX_min to the set fan value, use the larger of either the set value or the fan minimum value. This prevents unexpectedly high fan when setting the fan to a relatively low value in the slicer. No changes were directly made to the Qmode settings. --- files/macros/fans-control.cfg | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/files/macros/fans-control.cfg b/files/macros/fans-control.cfg index 4753f6f..efa8a48 100644 --- a/files/macros/fans-control.cfg +++ b/files/macros/fans-control.cfg @@ -98,41 +98,43 @@ gcode: {% if tmp > 0 %} {% if fan == 0 %} {% set value = (255 - printer["gcode_macro PRINTER_PARAM"].fan0_min) / 255 * tmp %} + {% set f0min = printer["gcode_macro PRINTER_PARAM"].fan0_min %} {% if printer['gcode_macro Qmode'].flag | int == 1 %} - SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan0_value VALUE={printer["gcode_macro PRINTER_PARAM"].fan0_min + value} + SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan0_value VALUE={([f0min,value]|max)} {% if value > (255 - printer['gcode_macro PRINTER_PARAM'].fan0_min) / 2 %} {% set value = printer["gcode_macro PRINTER_PARAM"].fan0_min + (255 - printer['gcode_macro PRINTER_PARAM'].fan0_min) / 2 %} {% else %} - {% set value = printer["gcode_macro PRINTER_PARAM"].fan0_min + value %} + {% set value = ([f0min, value]|max) %} {% endif %} {% else %} - {% set value = printer["gcode_macro PRINTER_PARAM"].fan0_min + value %} {% endif %} {% endif %} {% if fan == 1 %} {% set value = (255 - printer["gcode_macro PRINTER_PARAM"].fan1_min) / 255 * tmp %} + {% set f1min = printer["gcode_macro PRINTER_PARAM"].fan1_min %} {% if printer['gcode_macro Qmode'].flag | int == 1 %} - SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan1_value VALUE={printer["gcode_macro PRINTER_PARAM"].fan1_min + value} + SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan1_value VALUE={([f1min,value]|max)} {% if value > (255 - printer['gcode_macro PRINTER_PARAM'].fan1_min) / 2 %} {% set value = printer["gcode_macro PRINTER_PARAM"].fan1_min + (255 - printer['gcode_macro PRINTER_PARAM'].fan1_min) / 2 %} {% else %} - {% set value = printer["gcode_macro PRINTER_PARAM"].fan1_min + value %} + {% set value = ([f1min,value]|max) %} {% endif %} {% else %} - {% set value = printer["gcode_macro PRINTER_PARAM"].fan1_min + value %} + {% set value = ([f1min,value]|max) %} {% endif %} {% endif %} {% if fan == 2 %} {% set value = (255 - printer["gcode_macro PRINTER_PARAM"].fan2_min) / 255 * tmp %} + {% set f2min = printer["gcode_macro PRINTER_PARAM"].fan2_min %} {% if printer['gcode_macro Qmode'].flag | int == 1 %} - SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan2_value VALUE={printer["gcode_macro PRINTER_PARAM"].fan2_min + value} + SET_GCODE_VARIABLE MACRO=Qmode VARIABLE=fan2_value VALUE={([f2min,value]|max)} {% if value > (255 - printer['gcode_macro PRINTER_PARAM'].fan2_min) / 2 %} {% set value = printer["gcode_macro PRINTER_PARAM"].fan2_min + (255 - printer['gcode_macro PRINTER_PARAM'].fan2_min) / 2 %} {% else %} - {% set value = printer["gcode_macro PRINTER_PARAM"].fan2_min + value %} + {% set value = ([f2min,value]|max) %} {% endif %} {% else %} - {% set value = printer["gcode_macro PRINTER_PARAM"].fan2_min + value %} + {% set value = ([f2min,value]|max) %} {% endif %} {% endif %} {% endif %}