aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2024-09-21 15:42:26 -0400
committerKevin O'Connor <kevin@koconnor.net>2024-09-30 12:23:24 -0400
commitf4143af4fa26822db2e1c4321de7377b808ce16f (patch)
treeb07f9b1027b2cb09232896545aca7befbf842e42
parent1c0adb9af88411116a4980636e8070ae1decd457 (diff)
downloadkutter-f4143af4fa26822db2e1c4321de7377b808ce16f.tar.gz
kutter-f4143af4fa26822db2e1c4321de7377b808ce16f.tar.xz
kutter-f4143af4fa26822db2e1c4321de7377b808ce16f.zip
fan: Support calling set_speed() without a print_time
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--klippy/extras/controller_fan.py4
-rw-r--r--klippy/extras/fan.py2
-rw-r--r--klippy/extras/heater_fan.py4
-rw-r--r--klippy/extras/temperature_fan.py12
4 files changed, 9 insertions, 13 deletions
diff --git a/klippy/extras/controller_fan.py b/klippy/extras/controller_fan.py
index df141e7e..b1286b59 100644
--- a/klippy/extras/controller_fan.py
+++ b/klippy/extras/controller_fan.py
@@ -62,9 +62,7 @@ class ControllerFan:
self.last_on += 1
if speed != self.last_speed:
self.last_speed = speed
- curtime = self.printer.get_reactor().monotonic()
- print_time = self.fan.get_mcu().estimated_print_time(curtime)
- self.fan.set_speed(print_time + PIN_MIN_TIME, speed)
+ self.fan.set_speed(speed)
return eventtime + 1.
def load_config_prefix(config):
diff --git a/klippy/extras/fan.py b/klippy/extras/fan.py
index 0fc88a37..37b531ba 100644
--- a/klippy/extras/fan.py
+++ b/klippy/extras/fan.py
@@ -66,7 +66,7 @@ class Fan:
return "delay", self.kick_start_time
self.last_fan_value = self.last_req_value = value
self.mcu_fan.set_pwm(print_time, value)
- def set_speed(self, print_time, value):
+ def set_speed(self, value, print_time=None):
self.gcrq.send_async_request(value, print_time)
def set_speed_from_command(self, value):
self.gcrq.queue_gcode_request(value)
diff --git a/klippy/extras/heater_fan.py b/klippy/extras/heater_fan.py
index ab4c8a81..3630366e 100644
--- a/klippy/extras/heater_fan.py
+++ b/klippy/extras/heater_fan.py
@@ -33,9 +33,7 @@ class PrinterHeaterFan:
speed = self.fan_speed
if speed != self.last_speed:
self.last_speed = speed
- curtime = self.printer.get_reactor().monotonic()
- print_time = self.fan.get_mcu().estimated_print_time(curtime)
- self.fan.set_speed(print_time + PIN_MIN_TIME, speed)
+ self.fan.set_speed(speed)
return eventtime + 1.
def load_config_prefix(config):
diff --git a/klippy/extras/temperature_fan.py b/klippy/extras/temperature_fan.py
index aee94f28..a9aa4d0b 100644
--- a/klippy/extras/temperature_fan.py
+++ b/klippy/extras/temperature_fan.py
@@ -46,7 +46,7 @@ class TemperatureFan:
self.cmd_SET_TEMPERATURE_FAN_TARGET,
desc=self.cmd_SET_TEMPERATURE_FAN_TARGET_help)
- def set_speed(self, read_time, value):
+ def set_tf_speed(self, read_time, value):
if value <= 0.:
value = 0.
elif value < self.min_speed:
@@ -60,7 +60,7 @@ class TemperatureFan:
speed_time = read_time + self.speed_delay
self.next_speed_time = speed_time + 0.75 * MAX_FAN_TIME
self.last_speed_value = value
- self.fan.set_speed(speed_time, value)
+ self.fan.set_speed(value, speed_time)
def temperature_callback(self, read_time, temp):
self.last_temp = temp
self.control.temperature_callback(read_time, temp)
@@ -128,10 +128,10 @@ class ControlBangBang:
and temp <= target_temp-self.max_delta):
self.heating = True
if self.heating:
- self.temperature_fan.set_speed(read_time, 0.)
+ self.temperature_fan.set_tf_speed(read_time, 0.)
else:
- self.temperature_fan.set_speed(read_time,
- self.temperature_fan.get_max_speed())
+ self.temperature_fan.set_tf_speed(
+ read_time, self.temperature_fan.get_max_speed())
######################################################################
# Proportional Integral Derivative (PID) control algo
@@ -171,7 +171,7 @@ class ControlPID:
# Calculate output
co = self.Kp*temp_err + self.Ki*temp_integ - self.Kd*temp_deriv
bounded_co = max(0., min(self.temperature_fan.get_max_speed(), co))
- self.temperature_fan.set_speed(
+ self.temperature_fan.set_tf_speed(
read_time, max(self.temperature_fan.get_min_speed(),
self.temperature_fan.get_max_speed() - bounded_co))
# Store state for next measurement