Найти тему
mysku.ru

Термоконтроллер с PID-регулированием в мирно-хозяйственных целях

Я брал год назад по другой ссылке за 50 с лишним долларов, но там комплект с еще одним, более навороченным термоконтроллером. Поэтому даю ссылку на другой лот с вроде бы нормальным продавцом и множеством заказов.

Брался для совсем других целей, но оказался приделан к кухонной электродуховке :) В этом применении работает отлично :)

Подробнее под катом.

Год назад я заказал себе для паяльной печи комплект из двух термоконтроллеров — один обозреваемый и второй гораздо более функциональный. Почему-то у меня появилась глупая мысль использовать их вместе, но когда уже получил заказ резко поумнел и этот сравнительно простой термоконтроллер остался не удел.

Итак, что этот термоконтроллер может. Самое главное, конечно же, это поддерживать заданную температуру, управляя нагревателем. Но чем он лучше любого термоконтроллера за 1.5-2 бакса, которых полно на Али? Самое главное — тем, что он обеспечивает регулирование температуры PID-регулятором.

По русски это понятие, кстати, сокращается в те же буквы — ПИД, Пропорционально-Интегрирующе-Дифференцирующая регуляция.

В инете множество статей, посвященных ПИД, но очень мало рассказывающих об этом понятными словами. Я не популяризатор, но постараюсь изложить принцип работы ПИД-регуляторов максимально доступно :)

ЗЫ: конкретные цифры на графиках могут не совпадать с цифрами в примерах, но принцип сохраняется :)

Представьте, что у нас есть банка с водой, температуру которой нужно поддерживать 70 градусов с помощью вставленного в эту банку нагревателя мощностью 100 Ватт. Для измерения температуры в воду опущен термометр.

Самый простой способ сделать это как раз применяется в однбаксовых терморегуляторах: включаем нагреватель, температура достигает заданной, выключаем нагреватель, температура падает ниже заданной — включаем нагреватель, и т.д.

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

-2

А что если не просто включать-выключать нагреватель, а регулировать его мощность — чем температура воды ниже заданной тем больше мощности подаем на нагреватель? Звучит логично и вот так у нас и начинает появляться ПИД :) Точнее, появилась первая его составляющая Пс — пропорциональная, значение которой прямо пропорционально разнице между заданной и текущей температурами. Итак, будем выдавать на нагреватель значение Пс: при текущей температуре воды 20 градусов он выдаст в нагреватель 70-20=50 Ватт. Когда вода нагреется до 40 градусов, он уже будет выдавать 70-40=30 Ватт. При температуре воды 60 градусов он будет выдавать 70-60=10 Ватт. Отлично, никаких прыжков вокруг заданной температуры, все плавно :) Однако есть одна закавыка: при мощности на нагревателе 10 Ватт он уже не может и дальше нагревать воду, а может только удерживать эти достигнутые 60 градусов. Итак, вода 60 градусов, Пс соответственно выдает 10 Ватт и температура воды стоит на месте, до 70 градусов с таким регулятором ей не добраться:

-3

Нужно что-то добавлять к пропорциональной составляющей, какое-то значение, причем не постоянное. На помощь приходит Ис — интегрирующая составляющая. Это накопитель ошибок. При каждом измерении в него добавляется разница между заданной и текущей температурами. Если заданная температура больше, то добавляется положительное число, если меньше, то отрицательное. У этой составляющей есть заданное максимальное значение, превысить которое она не может, то есть если при очередном добавлении оказывается, что сумма превысит максимум, то Ис становится равной максимуму, но не больше. То же касается нуля — отрицательным числом она тоже не может стать. Пусть у нас этот максимум будет равен мощности нагревателя — 100. Теперь на нагреватель будет выдаваться суммарное значение мощности Пс+Ис. Для примера последовательность температур и что при этом получается:

1. Температура 20 градусов, Ис изначально равна нулю, Пс=70-20=50, в нагреватель выдается Ис+Пс=0+50=50 Ватт.

2. Вода нагрелась до 30 градусов, Ис=0(ее предыдущее значение)+(70-30)=40, Пс=70-30=40, в нагреватель выдается Ис+Пс=40+40=80 Ватт.

3. Вода нагрелась до 40 градусов, Ис=40(ее предыдущее значение)+(70-40)=70, Пс=70-40=30, в нагреватель выдается Ис+Пс=70+30=100 Ватт.

4. Вода нагрелась до 60 градусов, Ис=70(ее предыдущее значение)+(70-60)=80, Пс=70-60=10, в нагреватель выдается Ис+Пс=80+10=90 Ватт.

Смотрите-ка, пока все выглядит неплохо, вода уже 60 градусов, а нагреватель все еще греет воду, хотя и начал снижать мощность :)

5. Вода нагрелась до 70 градусов, Ис=80(ее предыдущее значение)+(70-70)=80, Пс=70-70=0, в нагреватель выдается Ис+Пс=80+0=80 Ватт.

6. Вода нагрелась до 80 градусов, Ис=80(ее предыдущее значение)+(70-80)=70, Пс=70-80=-10, в нагреватель выдается Ис+Пс=70+(-10)=60 Ватт.

Вода перегрелась. И хотя, как видно, мощность пошла вниз, температура еще будет какое-то время колебаться пока не успокоится на заданном значении:

-4

Это называется перерегулирование. Происходит оно из-за того, что и нагреватель и термометр и, главное, вода имеют какую-то инерцию, регулятор получает обратную связь (показания температуры) с определенным запаздыванием. При подаче на нагреватель полной мощности вода не нагреется мгновенно до 100 градусов, и точно так же она не остынет мгновенно при выключении нагревателя. Регулятор посмотрел на температуру — холодная вода, добавил мощности. Через 2 секунды глянул — все еще холодная — опять добавил. А когда в очередной раз он обнаруживает, что вода уже дошла до нужной температуры то начинает выдавать мощность, накопленную в Ис, считая, что это как раз нужное для поддержания температуры значение мощности (на самом деле интегрирующая составляющая после устаканивания всех возмущений действительно содержит значение, необходимое для ровного поддержания регулируемой величины, а пропорциональная призвана только компенсировать случайные отклонения). Но для воды это много и она продолжает нагреваться. И только после превышения заданной температуры регулятор начинает снижать мощность. И эта качка продолжается некоторое время пока значение Ис не придет к нужной величине.

Что можно предпринять в таком случае? Ну, например можно понизить влияние на выходную мощность Ис. Это называется коэффициент, у каждой составляющей ПИД может быть свой коэффициент, которым можно повышать или понижать влияние этой составляющей на выходной результат. Уменьшим влияние Ис до 0.3 от его значения — Ис*0.3:

-5

Уже лучше, но все равно есть колебание в начале. Это из-за слишком большого влияния пропорциональной составляющей, давайте уменьшим и ее влияние в 2 раз — Пс*0.5:

-6

Идеально, правда? :)

Нуу… Почти. Колебаний нет, но вот время нагрева увеличилось. Оно пришло к заданной температуре только к 25-му отсчету.

На самом деле зачастую используют ПИ-регулятор, без его дифференцирующей части и это вполне работает, как видно. Однако часто можно добиться еще лучшего результата с использованием третьей составляющей — дифференцирующей, Дс.

Она является «демпфером», не дающим регулируемому устройству слишком быстро менять свое состояние. В нашем примере Дс начнет снижать выходную мощность тем сильнее чем быстрее будет нагреваться вода, иными словами она не даст «разогнаться» графику роста температуры настолько, чтобы он проскочил заданную температуру :) При этом, пока до заданной температуры далеко влияние Дс не очень значительно на фоне других составляющих, температура может расти быстро. Но чем ближе она к заданной тем сильнее становится влияние Дс на фоне все уменьшающихся Ис и Пс.

Дс в отличии от Пс и Ис не прибавляется к выходному сигналу (в нашем примере- мощности), а вычитается из него. Она равна скорости изменения регулируемой величины (в нашем примере — температуры). Например, если в прошлый замер температура была 28 градусов, а в текущем замере она уже 31 градус, то Дс будет равна 3 — на столько температура выросла с прошлого замера, это скорость роста температуры. И это значение, возможно умноженное на свой коэффициент, вычитается из выходной мощности, потому эта составляющая и называется дифференцирующей :)

Вот что получится при добавлении Дс:

-7

Как видно, температура вышла на режим гораздо быстрее и при этом без всплесков и колебаний. Попытку регулятора проскочить температуру вверх погасила как раз дифференцирующая составляющая.

Вот, если интересно, график изменения значений Пс, Ис и Дс в этом регуляторе в том же временном масштабе:

-8

А вот что было бы без дифференцирующей составляющей при тех же условиях:

-9

И еще раз коротким итогом :)

ПИД — это регулятор, который формирует сигнал воздействия на регулируемую величину из трех составляющих: пропорциональной, интегрирующей и дифференцирующей.

Пропорциональная составляющая добавляет в выходной сигнал сиюминутную разницу между заданной и текущей измеренной величинами (т.н. ошибку). Интегрирующая накапливает (интегрирует) разницы всех измерений и добавляет в выходной сигнал накопленное значение (но не превышающее заданного максимума). Дифференцирующая определяет скорость изменения регулируемой величины (на сколько она изменилась с прошлого измерения) и вычитает эту величину из выходного сигнала. Все три составляющие могут иметь свои коэффициенты, усиливающие или ослабляющие их влияние на выходной сигнал.

Уфф… :) Ну, я говорил, что не являюсь популяризатором, поэтому за доходчивость своего изложения не отвечаю. Но я старался :)

ЗЫ: самое веселое заключается в подборе коэффициентов этих составляющих, т.к. без правильных (хотя бы примерно) значений этих коэффициентов ПИД-регулятор или вообще не будет регулировать или будет регулировать очень плохо. Подбор идеальных коэффициентов, как я понял, дело весьма нетривиальное. Пока я не встречал в инете доступное объяснение как их рассчитывать, в основном приводятся методики их экспериментального подбора. Что, впрочем, достаточно логично, т.к. для расчета нужно столько всего знать о регулируемом механизме, сколько о нем не всегда знают даже его создатели :))

Основные параметры этого регулятора (именно этой модели — REX-C100FK02-V*AN):

— питание — 24 вольта постоянного напряжения / 24 вольта переменного напряжения / 85-264 вольта переменного напряжения

— потребление — не более 9 VA при питании 240 вольт

— выход — напряжение, 12 вольт, сопротивление нагрузки 600 Ом и выше

— тип подключаемой термопары — K (в настройках можно выбрать целую кучу типов, но я не уверен, что железо универсальное и поддерживает всю эту кучу)

— диапазон регулирования температуры — 0-400 градусов Цельсия (зависит от типа термопары)

— выход аварийной сигнализации — один выход, реле на замыкание

— период цикла регулирования — 0.5 сек

— метод регулирования — PID, вкл/выкл (дискретный), P, PI, PD (настраивается)

— вес — около 170 грамм

— крепление — в отверстие панели

Вот русскоязычный мануал на этот контроллер (нашел где-то в сети) — drive.google.com/open?id=1HDs7UX5rllDy8GFdYrdINbcGI_Snoo00

А вот качественный англоязычный, чуть более полный, но по настройкам немного не соответствует — drive.google.com/open?id=1Ez--F-3hjLzNtKP36FkGy6vfGQ_AkPkn

И пролежал бы он у меня еще неизвестно сколько, если бы жена не пожаловалась, что в нашей электродуховке она не может запекать полимерную глину — температуру там нормально не выставить. Да и пироги порой подгорают :) Духовка из самых дешевых, увы :) И я вспомнил об этом контроллере. Мне он не понадобился, слишком примитивен, а вот для духовки — самое то. Но решил я не курочить духовку, а сделать отдельную коробочку с этим регулятором и твердотельным реле на 40 ампер. Точно такое же реле уже год трудится у меня на почти такой же духовке (переделанной в паяльную печь) и не жужжит.

Крепится контроллер очень просто — вставляется в панель и с обратной стороны поджимается рамкой с защелками. Рамка снабжена пружинными рычажками, поджимающими регулятор:

-10

Все подключения производятся через винтовые клеммы на задней стенке:

-11

Подключение очень понятно расписано как на наклейке на корпусе контроллера, так и в мануале.

-12

Меня интересует: питание (220 вольт), выход управляющего напряжения (прямиком на твердотельное реле), вход термопары.

При желании можно еще подключить выход аварийной сигнализации. Ее можно отключить или настроить на один из режимов:

— превышение заданной температуры

— падение ниже заданной температуры

— попадание в заданный промежуток температуры

— выход за заданный промежуток температуры

Это может быть полезно, например, для аварийного отключения питания нагревателя, на случай если будет пробит ключ, управляющий нагревателем (мосфет, твердотельное реле) и начнется неконтролируемый разогрев.

Разбирается контроллер очень легко и даже без применения инструментов...

Расширенная версия обзора доступна на сайте MYSKU.ru

Итог:

Контроллер своих денег стоит и с работой справляется очень неплохо, особенно если настроить его чуть более тонко, чем предполагает автонастройка. Твердотельное реле тоже отлично справляется с достаточно большой нагрузкой, хотя насчет заявленных 40 ампер у меня очень большие сомнения. Максимум 20, да и то с хорошим радиатором и его активным охлаждением.

Все :)