Fan Speed Delay + Fan Kickstart Feature (#910)

Initial commit for fan speed delay, required some changes when porting from SuperSlicer.

Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
Scott Mudge 2023-05-06 01:41:47 -04:00 committed by GitHub
parent d6290fdbbb
commit 2e223551e4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 691 additions and 4 deletions

View file

@ -1773,6 +1773,35 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("fan_speedup_time", coFloat);
def->label = L("");
def->tooltip = L("Start the fan this number of seconds earlier than its target start time (you can use fractional seconds)."
" It assumes infinite acceleration for this time estimation, and will only take into account G1 and G0 moves (arc fitting"
" is unsupported)."
"\nIt won't move fan comands from custom gcodes (they act as a sort of 'barrier')."
"\nIt won't move fan comands into the start gcode if the 'only custom start gcode' is activated."
"\nUse 0 to deactivate.");
def->sidetext = L("s");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(0));
def = this->add("fan_speedup_overhangs", coBool);
def->label = L("Only overhangs");
def->tooltip = L("Will only take into account the delay for the cooling of overhangs.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(true));
def = this->add("fan_kickstart", coFloat);
def->label = L("Fan kick-start time");
def->tooltip = L("Emit a max fan speed command for this amount of seconds before reducing to target speed to kick-start the cooling fan."
"\nThis is useful for fans where a low PWM/power may be insufficient to get the fan started spinning from a stop, or to "
"get the fan up to speed faster."
"\nSet to 0 to deactivate.");
def->sidetext = L("s");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(0));
def = this->add("gcode_flavor", coEnum);
def->label = L("G-code flavor");
def->tooltip = L("What kind of gcode the printer is compatible with");