mirror of
https://github.com/Klipper3d/klipper.git
synced 2026-10-19 01:59:55 -05:00
pid_calibrate: Store peaks in same format as other samples
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
This commit is contained in:
1 parent
c7eb62e0fe
commit
f2c06289b7
1 file changed
+4
-4
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user