Jump to content
Электронщик

Настройка реального ПИ(ПИД)-регулятора температуры

Recommended Posts

Делаю себе ПИ - регулятор(или ПИД-регулятор, впринципе и ПИ хватит) с пропуском периода на STM32 все прописал все работает использую термопару + max6675 + дисплей на ili9341+ MOC3041+ симистор, все бы хорошо но когда-то делал на ардуино и коэффициенты подобрал методом проб и ошибок, сейчас отстраиваю для другого устройства, и с ардуино давно перешел на STM32  все это на  утюге, так как по мощности и по параметрам приблизительно такой же и ТЭН будет, суть в чем самый простой базовый вариант это расчет по Методу Зиглера–Никольса по реакции объекта на ступенчатое изменение управляющего воздействия. Эту характеристику объекта обычно называют кривой разгона.( и не понял так метод по реакции объекта на ступенчатое изменение управляющего воздействия и метод по отклику объекта на единичный скачок, это одно и тоже?

Ок. Взял оставил только одну P-составляющую сделал уставку 90 градусов и начал подбирать Kp - коэффициент пропорциональности,  при 0.5 вышло такое Screenshot_19.jpg.329b87cef739736fda4668c26b6269d6.jpg

, при 0.8 такое  291267601_Screenshot_21-.jpg.99fcc988766f556ade78f0a96688581e.jpg

, следовательно 0.8 это нужный вариант Kp как я понимаю, но как теперь вычесть Ki-коэффициент интегрирования, из этой статьи https://www.bookasutp.ru/Chapter5_5.aspx высчитывается так Screenshot_23.jpg.37002b6118df0090944cce762438d233.jpg

Но не понятно где взять a? K-как я понимаю это коэффициент передачи, а Ti Td- это коэффициент интегрирования и диффиринцирования соответственно?

Из методички для универа найденной в нете(прилагаю эту методичку), формулы такие Screenshot_24.jpg.1cf1888de03d207ec839f7562be5d6b3.jpg

Вообщем не понятно какие формулы правильнее, и где взять данные для формул, и как посчитать? Из этой статьи понял https://www.bookasutp.ru/Chapter5_1_4.aspx#рис. 5.29 что нужно взять 63% от шкалы температуры по градусам, соответственно если у меня температура начинается с 25 градусов и до 90 градусов это 65, а 63% это 41+ начальные 25=66 градусов проводим прямую до нашей кривой графика и чертим прямоугольный треугольник, из этого находим T и t(обозначил так тау)826766273_Screenshot_21-.jpg.d36a29b17227c16d71cf9cedcbc22e32.jpg

, а где взять k? и почему в последней картинке рассчитывается kп, если мы его уже определили экспериментально?

-

06-labtau-2014.pdf

Edited by Электронщик

Share this post


Link to post
Share on other sites

Тут вообще написано что гипотенуза треугольника должна проходить через точку перегиба кривой должен http://my.elvisti.com/shov/tune1.html

Screenshot_25.jpg.07738532413dddb86330cd8903744ab5.jpg

Тогда вот по моему графику , думаю это самый правильный вариант 2009421731_Screenshot_21-(3).jpg.8b6a000e7efea4ef69d6ebb5bd5af0f9.jpg

Осталось понять где взять Коу-коэффициент усиления объекта? И Ti, Td - это коэффициенты интегрирования и дифферинцирования? Если да то тогда Ti=2.4*30, где 30, это по моему графику величина T, и тогда если это коэффициент интегрирования то он у меня аж 72, как по мне то это много? И зачем считать Kp, если он у меня известен как 0.8 при экспременте при котором я и получил такой график?

Edited by Электронщик

Share this post


Link to post
Share on other sites

Металл-композит как альтернатива ферриту: дроссели Panasonic семейства ETQP

Современные электронные устройства требуют все более компактных и эффективных компонентов. Новые металл-композитные дроссели обладают рядом преимуществ перед дросселями с ферритовым сердечником. Они не имеют ярко выраженного насыщения, обладают отличными частотными свойствами и способны работать при температурах до 150°C и выше. Все это делает их альтернативой стандартным дросселям с ферритовым сердечником в широком спектре автомобильных и промышленных приложений.

Подробнее

Спасибо IMHO, вот только не понял как находится а на рисунке? Вести гипотенузу до оси температуры, при этом шкалу паралельно разбить до 1, это оно и будет? По времени интегрирования и диферинцирования, это хорошо что оно посчиталось, но в моей программе я не использую это время(хотя где-то в формулах по интернету находил), а только использую коэффициент пропорциональности и коэфициент интегрирования,  а как найти коэффициент интегрирования и дифееринцирования по этому графику? Или снова эксперементально и строя график?

Share this post


Link to post
Share on other sites
8 часов назад, Электронщик сказал:

 это оно и будет?

да.

 

9 часов назад, Электронщик сказал:

 а как найти коэффициент интегрирования и дифееринцирования по этому графику?

ну так я написал как , согласно таблице 27 (которую вы привели выше), найденные коэффициенты подставляются  в уравнение 5.36 (читаем прим. к таблице).

Share this post


Link to post
Share on other sites
                     

Новые литиевые ХИТы Fanso работают даже при +150ºС!

Когда приходится учитывать работу в экстремальных условиях, к выбору электронных компонентов подходишь с особой тщательностью. Высокие температуры, большие перепады давления, труднодоступность – все это требует специальной продукции. Склад КОМПЭЛ пополнился новыми литиевыми ХИТами Fanso, стабильно работающими даже при температуре до 150 ºС. Батарейки имеют номинальное напряжение 3,6 В, обладают ёмкостью от 700 до 14000 мАч, работоспособны в широком температурном диапазоне -20…150ºС и имеют низкий саморазряд (не более 3% в год в нормальных условиях хранения).

Подробнее о высокотемпературной линейке

Вот формула 5.36,

Screenshot_24.jpg.747da36718fe7fea570c744138149527.jpg

но по ней не возможно найти Ki и Kd 

Вот к примеру из книг программная реализация ПИД-регулятора 

// Параметры пропорционального звена
float kp = 10; // Коэффициент пропорционального звена
// Параметры интегратора
float ki = 0.001; // Коэффициент интегрального звена
#define iMin -0.2 // Минимальное значение интегратора
#define iMax 0.2 // Максимальное значение интегратора
float iSum = 0; // Сумма ошибок (значение, накопленное в интеграторе)
// Параметры дифференциатора
float kd = 1; // Коэффициент дифференциального звена
float old_y = 0; // Предыдущее значение сигнала
float PIDctl(float error, float y)
{ float up, ui, ud;
 // Пропорциональная компонента
 up = kp*error;
 // Интегральная компонента
 iSum = iSum+error; // Накапливаем (суммируем)
 if(iSum<iMin) iSum = iMin; // Проверяем граничные значение
 if(iSum>iMax) iSum = iMax;
 ui = ki*iSum;
 // Дифференциальная компонента
 ud = kd*(y-old_y);
 old_y = y;
 return up+ui+ud;
}

Тут нигде нет времени интегрирования Ti и времени диффиринцирования Td, а только коэффициенты интегрирования ki и диффиренцирования kd

Или вот тут да есть время интегрирования Ti и времени диффиринцирования Td

void computePID() {
  int ust=0;  
  readCelsius();  
  error = ust - k;           // ошибка регулирования
  float delta_input = prevInput - k;    // изменение входного сигнала
  output = 0;
  output += (float)error * Kp;                  // пропорционально ошибке регулирования
  output += (float)delta_input * Kd / Td;    // дифференциальная составляющая
  integral += (float)error * Ki * Ti;        // расчёт интегральной составляющей
  // тут можно ограничить интегральную составляющую!
  output += integral;                           // прибавляем интегральную составляющую
  output = constrain(output, pidMin, pidMax);   // ограничиваем выход

  prevInput=k;    // формируем придедущее значение

}

Но вот как рассчитать коэффициенты ki kd ?

Вот к примеру по тому же эмперическому Методу Зиглера–Никольса, когда мы пытаемся ловить колебания регулируя kp, и измеряя их период,9 но я то пользуюсь методом по отклику системы), так вот, хоть это и не мой случай 

Screenshot_23.jpg.289d6110193fd2f3b09f629ce7d75599.jpg

 

Edited by Электронщик

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • что у .... в уме - то у жирика на языке)https://yandex.ru/turbo?text=https%3A%2F%2Ftsargrad.tv%2Fnews%2Fnarod-v-rossii-jeto-problema-zhirinovskij-zajavil-chto-my-slishkom-horosho-zhivjom_240563
    • Темка не умерла , жила- двигалась потихоньку . В общем отказался от двойного преобразования . Сейчас так - мостовой  преобразователь  . Вернее пара плат с гибридного авто . Эстима 10 . Древнее авто , но в тему )  . В стоке они выдавали 100 ампер и 14 вольт . Так мотаем трансформатор , мучаемся . Итог имеем 30 вольт и 50 ампер .  Вольты от нуля  как и амперы . На фото в правом углу ( желтая плата ) - модуль от фалкониста . 
    • а замена шунта ни чего не даст ? 
    • Вот это приложение 
    • Скачать схему Корвета и посмотреть - как там. Включить желательно по схеме. Так же, как там нарисовано. Хотя б примерно так же. Но лучше совсем-совсем так же.
    • ключи IRF640, что стояло те и поставили (менял не я), в моей глуши irfb5615 не найти, есть irfb4227 да питание около 60в, частоту мерять не чем... осцила у меня нет, есть мультиметр с такой функцией... ( но что он там намерит х.з.)   З Ы  погонял в нагрузку 2ом, через 20 минут средней громкости начал отрубатсо... радиатор на ирске нагрелсо, но рука терпит дросель на выходе нагрелся очень сильно... рука не терпит       
    • @Андрей Богатырев , если совсем туго с определением на плате приёмника точек "земли" (туда чёрный с новой активной антенны), питания (туда красный, см. Примечание) и входа антенны, куда была припаяна телескопическая антенна (туда коричневый), то напишите модель приёмника. Можно будет указать эти точки на его плате.   Примечание. Напряжение питания новой антенны и имеющееся в приёмнике должны более-менее совпадать. Если в приёмнике две пальчиковые батарейки (3 В питание), а на новой антенне написано "12 В", то работать не будет.
×
×
  • Create New...