mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-07-22 22:24:02 -06:00
fan: Add off_below option for fans (#1897)
Below off_below the fan will be turned off. When configured correctly this can prevent stalling, which may lead to overheating and failed fans. To simplify calibration and use of this setting, off_below is applied in the input duty cycle domain, prior to any scaling due to e.g. max_power. Signed-off-by: Nicholas Seckar <nseckar@gmail.com>
This commit is contained in:
parent
27717440aa
commit
004edb9613
2 changed files with 17 additions and 0 deletions
|
@ -16,6 +16,8 @@ class PrinterFan:
|
|||
self.max_power = config.getfloat('max_power', 1., above=0., maxval=1.)
|
||||
self.kick_start_time = config.getfloat('kick_start_time', 0.1,
|
||||
minval=0.)
|
||||
self.off_below = config.getfloat(
|
||||
'off_below', default=0., minval=0., maxval=1.)
|
||||
ppins = printer.lookup_object('pins')
|
||||
self.mcu_fan = ppins.setup_pin('pwm', config.get('pin'))
|
||||
self.mcu_fan.setup_max_duration(0.)
|
||||
|
@ -29,6 +31,8 @@ class PrinterFan:
|
|||
def handle_request_restart(self, print_time):
|
||||
self.set_speed(print_time, 0.)
|
||||
def set_speed(self, print_time, value):
|
||||
if value < self.off_below:
|
||||
value = 0.
|
||||
value = max(0., min(self.max_power, value * self.max_power))
|
||||
if value == self.last_fan_value:
|
||||
return
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue