From d6037b33d3df4897967a434a267622b3a4974353 Mon Sep 17 00:00:00 2001 From: jens Date: Tue, 1 Dec 2020 23:21:45 +0100 Subject: [PATCH] - PID: Modified AWU code --- brewpi.py | 2 +- components/pid/pid.py | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/brewpi.py b/brewpi.py index 86406a8..b021503 100644 --- a/brewpi.py +++ b/brewpi.py @@ -227,7 +227,7 @@ if __name__ == '__main__': "Hold": { "Pid": { "kp": 0.8, - "ki": 0.00001, + "ki": 0.002, "kd": 0.0, "rho": 1.0 } diff --git a/components/pid/pid.py b/components/pid/pid.py index 06441d6..d1b4ee6 100644 --- a/components/pid/pid.py +++ b/components/pid/pid.py @@ -31,23 +31,20 @@ class Pid: kd = params['kd'] rho = params['rho'] - yi = rho*self.yi + ki*dt * err - yd = err - self.err - - _yp = kp * err - _yi = yi - _yd = kd/dt * yd + self.yi = rho*self.yi + ki*dt * err + yd = kd/dt*(err - self.err) + yp = kp * err # Reset yi on error sign changes - if np.sign(err) != np.sign(self.err): - _yi = 0 + if yp > self.y_max or yp < self.y_min: + self.yi = 0 - y = _yp + _yi + _yd + self.err = err + + y = yp + self.yi + yd self.y = max(self.y_min, min(self.y_max, y)) - print("y = {}".format(_yi)) - self.yi = yi - self.err = err + print("yi = {}".format(self.yi)) def get_y(self): return self.y