diff --git a/klippy/extras/pid_calibrate.py b/klippy/extras/pid_calibrate.py index ba3a6a14a..d7605a52c 100644 --- a/klippy/extras/pid_calibrate.py +++ b/klippy/extras/pid_calibrate.py @@ -108,7 +108,7 @@ class ControlAutoTune: return False # Analysis def check_peaks(self): - self.peaks.append((self.peak, self.peak_time)) + self.peaks.append((self.peak_time, self.peak)) if self.heating: self.peak = 9999999. else: @@ -117,8 +117,8 @@ class ControlAutoTune: return self.calc_pid(len(self.peaks)-1) def calc_pid(self, pos): - temp_diff = self.peaks[pos][0] - self.peaks[pos-1][0] - time_diff = self.peaks[pos][1] - self.peaks[pos-2][1] + temp_diff = self.peaks[pos][1] - self.peaks[pos-1][1] + time_diff = self.peaks[pos][0] - self.peaks[pos-2][0] # Use Astrom-Hagglund method to estimate Ku and Tu amplitude = .5 * abs(temp_diff) power_amplitude = .5 * self.heater_max_power @@ -134,7 +134,7 @@ class ControlAutoTune: temp_diff, self.heater_max_power, Ku, Tu, Kp, Ki, Kd) return Kp, Ki, Kd def calc_final_pid(self): - cycle_times = [(self.peaks[pos][1] - self.peaks[pos-2][1], pos) + cycle_times = [(self.peaks[pos][0] - self.peaks[pos-2][0], pos) for pos in range(4, len(self.peaks))] midpoint_pos = sorted(cycle_times)[len(cycle_times)//2][1] return self.calc_pid(midpoint_pos)