ARDUINO Пауза PID регулятора

ScAle.x

✩✩✩✩✩✩✩
19 Фев 2021
2
0
Я делаю инкубатор. Использую код PID регулятора (не библиотеку) GyverPID (https://alexgyver.ru/gyverpid/).

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);
}
Иногда нагреватель нужно временно выключать. Так вот вопрос: как можно временно выключить регулятор, чтобы при включении не появилась какая-нибудь ошибка? Подозреваю, что если просто временно не передавать регулятору данные и не использовать его выходное значение, то при включении можно резко перегреть систему из-за интегральной состовляющей.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
А что мешает вместе с выключением нагревателя не использовать ПИД?
Но вообще такого быть не должно, в нагревателе все равно есть минимальные и максимальные значения, выше которых он не будет греть, а как только пойдет ошибка то он выключится. Когда запускаешь мотор на удержание оборотов и начинаешь его тормозить, а потом отпускаешь тормоз, то обороты на краткое время взлетают выше установленных, но очень быстро опускаются.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,412
978
58
Марий-Эл
У нас все технологические ванны построены на PID регуляторах.
При включении на многих ваннах температура сначала проскакивает верхний порог, потом устаканивается.
Но я заметил что такая хрень происходит когда нагреватель слишком мощный.
 
  • Лойс +1
Реакции: Старик Похабыч

Nikanor

★★✩✩✩✩✩
1 Окт 2020
178
51
У нас все технологические ванны построены на PID регуляторах.
При включении на многих ваннах температура сначала проскакивает верхний порог, потом устаканивается.
Но я заметил что такая хрень происходит когда нагреватель слишком мощный.
или пид не настроен))))
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,272
1,303
Москва
@Эдуард Анисимов,
Кстати да! Я вот хотел написать, что если резко перегревает, то это не верно подобранный нагреватель.
Одно время для аквариумов продавались обогреватели без регулирования температуры. Там надо было рассчитать на сколько поднимется температура , зная исходные данные: температура окружающей среды, объем аквариума, мощность нагревателя. При таком подходе перегреть было сложно. А потом нас завалили импортным товарам, потом дешевым импортным.. И народ получил доступ к мощным китайским нагревателям с регулятором температуры. И, не подобрав мощность, или сделав с запасом на случай ядерной зимы, бывали случаи при залипании контактов варили уху из своего аквариума.
 

ScAle.x

✩✩✩✩✩✩✩
19 Фев 2021
2
0
А если вынести static float integral = 0, prevErr = 0; в глобальные переменные и обнулять их перед включенпем нагревателя, то пид начнёт работать как будто сначала?
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,412
978
58
Марий-Эл
или пид не настроен
Обидеть хочешь? ;)
Просто у мощных нагревателей инерционность большая. А управление релейное. Если бы было токовое через БУСТ, тогда такого не было бы.
А всё эффективные менеджеры. Ведь было дешевле на 1500 на ячейку.