проблема в Настройке PID регулятора

Dr.Seldom

✩✩✩✩✩✩✩
6 Фев 2022
1
0
Собираю инкубатор, все работает но есть проблема в подборе параметров.
Для управления нагревом взял код
C++:
// (вход, установка, п, и, д, период в секундах, мин.выход, макс. выход)
int computePID(float input, float setpoint, float kp, float ki, float kd, float dt, int minOut, int maxOut) {
  float err = setpoint - input;
  static float integral = 0, prevErr = 0;
  integral = constrain(integral + (float)err * dt * ki, minOut, maxOut);
  float D = (err - prevErr) / dt;
  prevErr = err;
  return constrain(err * kp + integral + D * kd, minOut, maxOut);
}
сейчас параметры P = 11000
I =6.2
D =1.1

Самое интересное, что система выходит на нужный режим через 21 час
подбор параметром по предложенному варианту
  • kP = 0.6 * kP1
  • kI = kP / T * 2 * dt
  • kD = kP * T / 8 / dt
ни к чему не привели, P=6600 I=488,8889 D=61875 приводят к жуткому перерегулированию, и вероятности того яйца в инкубаторе запекутся.
Для люто инерционных систем длительный выход на заданную температуру норм или что-то можно поправить?