mirror of https://github.com/Desuuuu/klipper.git
pid_calibrate: Update the heater's target temperature during calibration
Update the target temperature during the pid calibration. This gives additional feedback to the user and it makes it less likely that a verify_heater error will be raised during calibration. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
7e497af184
commit
4889e8241d
|
@ -24,7 +24,7 @@ class PIDCalibrate:
|
|||
except self.printer.config_error as e:
|
||||
raise self.gcode.error(str(e))
|
||||
print_time = self.printer.lookup_object('toolhead').get_last_move_time()
|
||||
calibrate = ControlAutoTune(heater)
|
||||
calibrate = ControlAutoTune(heater, target)
|
||||
old_control = heater.set_control(calibrate)
|
||||
try:
|
||||
heater.set_temp(print_time, target)
|
||||
|
@ -45,9 +45,10 @@ class PIDCalibrate:
|
|||
TUNE_PID_DELTA = 5.0
|
||||
|
||||
class ControlAutoTune:
|
||||
def __init__(self, heater):
|
||||
def __init__(self, heater, target):
|
||||
self.heater = heater
|
||||
self.heater_max_power = heater.get_max_power()
|
||||
self.calibrate_temp = target
|
||||
# Heating control
|
||||
self.heating = False
|
||||
self.peak = 0.
|
||||
|
@ -70,10 +71,11 @@ class ControlAutoTune:
|
|||
if self.heating and temp >= target_temp:
|
||||
self.heating = False
|
||||
self.check_peaks()
|
||||
elif (not self.heating
|
||||
and temp <= target_temp - TUNE_PID_DELTA):
|
||||
self.heater.alter_target(self.calibrate_temp - TUNE_PID_DELTA)
|
||||
elif not self.heating and temp <= target_temp:
|
||||
self.heating = True
|
||||
self.check_peaks()
|
||||
self.heater.alter_target(self.calibrate_temp)
|
||||
if self.heating:
|
||||
self.set_pwm(read_time, self.heater_max_power)
|
||||
if temp < self.peak:
|
||||
|
|
|
@ -105,6 +105,10 @@ class Heater:
|
|||
self.control = control
|
||||
self.target_temp = 0.
|
||||
return old_control
|
||||
def alter_target(self, target_temp):
|
||||
if target_temp:
|
||||
target_temp = max(self.min_temp, min(self.max_temp, target_temp))
|
||||
self.target_temp = target_temp
|
||||
def stats(self, eventtime):
|
||||
with self.lock:
|
||||
target_temp = self.target_temp
|
||||
|
|
Loading…
Reference in New Issue