pid_calibrate: Store peaks in same format as other samples

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
This commit is contained in:
Timofey Titovets authored and KevinOConnor committed 2026-10-18 22:40:40 -04:00
1 parent c7eb62e0fe
commit f2c06289b7
1 file changed
+4 -4
+4 -4
View File
@@ -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)