По русски это понятие, кстати, сокращается в те же буквы — ПИД, Пропорционально-Интегрирующе-Дифференцирующая регуляция.
В инете множество статей, посвященных ПИД, но очень мало рассказывающих об этом понятными словами. Я не популяризатор, но постараюсь изложить принцип работы ПИД-регуляторов максимально доступно :)
ЗЫ: конкретные цифры на графиках могут не совпадать с цифрами в примерах, но принцип сохраняется :)
Представьте, что у нас есть банка с водой, температуру которой нужно поддерживать 70 градусов с помощью вставленного в эту банку нагревателя мощностью 100 Ватт. Для измерения температуры в воду опущен термометр.
Самый простой способ сделать это как раз применяется в однбаксовых терморегуляторах: включаем нагреватель, температура достигает заданной, выключаем нагреватель, температура падает ниже заданной — включаем нагреватель, и т.д.
Элементарнейший и дешевейший способ, не требующий никаких вычислительных ресурсов. На этом принципе делают как цифровые контроллеры, так и аналоговые, и даже механические. Однако есть у него большой недостаток — он не поддерживает более-менее точно заданную температуру. С таким регулятором температура воды в нашей банке будет гулять вокруг заданной, то превышая ее, то падая ниже. График температуры будет напоминать пилу. Это называется пороговый регулятор, то есть который включает или выключает нагреватель по достижении заданных порогов:
А что если не просто включать-выключать нагреватель, а регулировать его мощность — чем температура воды ниже заданной тем больше мощности подаем на нагреватель? Звучит логично и вот так у нас и начинает появляться ПИД :) Точнее, появилась первая его составляющая
Пс — пропорциональная, значение которой прямо пропорционально разнице между заданной и текущей температурами. Итак, будем выдавать на нагреватель значение
Пс: при текущей температуре воды 20 градусов он выдаст в нагреватель 70-20=50 Ватт. Когда вода нагреется до 40 градусов, он уже будет выдавать 70-40=30 Ватт. При температуре воды 60 градусов он будет выдавать 70-60=10 Ватт. Отлично, никаких прыжков вокруг заданной температуры, все плавно :) Однако есть одна закавыка: при мощности на нагревателе 10 Ватт он уже не может и дальше нагревать воду, а может только удерживать эти достигнутые 60 градусов. Итак, вода 60 градусов,
Пс соответственно выдает 10 Ватт и температура воды стоит на месте, до 70 градусов с таким регулятором ей не добраться:
Нужно что-то добавлять к пропорциональной составляющей, какое-то значение, причем не постоянное. На помощь приходит
Ис — интегрирующая составляющая. Это накопитель ошибок. При каждом измерении в него добавляется разница между заданной и текущей температурами. Если заданная температура больше, то добавляется положительное число, если меньше, то отрицательное. У этой составляющей есть заданное максимальное значение, превысить которое она не может, то есть если при очередном добавлении оказывается, что сумма превысит максимум, то
Ис становится равной максимуму, но не больше. То же касается нуля — отрицательным числом она тоже не может стать. Пусть у нас этот максимум будет равен мощности нагревателя — 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 Ватт.
Вода перегрелась. И хотя, как видно, мощность пошла вниз, температура еще будет какое-то время колебаться пока не успокоится на заданном значении:
Это называется перерегулирование. Происходит оно из-за того, что и нагреватель и термометр и, главное, вода имеют какую-то инерцию, регулятор получает обратную связь (показания температуры) с определенным запаздыванием. При подаче на нагреватель полной мощности вода не нагреется мгновенно до 100 градусов, и точно так же она не остынет мгновенно при выключении нагревателя. Регулятор посмотрел на температуру — холодная вода, добавил мощности. Через 2 секунды глянул — все еще холодная — опять добавил. А когда в очередной раз он обнаруживает, что вода уже дошла до нужной температуры то начинает выдавать мощность, накопленную в
Ис, считая, что это как раз нужное для поддержания температуры значение мощности (на самом деле интегрирующая составляющая после устаканивания всех возмущений действительно содержит значение, необходимое для ровного поддержания регулируемой величины, а пропорциональная призвана только компенсировать случайные отклонения). Но для воды это много и она продолжает нагреваться. И только после превышения заданной температуры регулятор начинает снижать мощность. И эта качка продолжается некоторое время пока значение
Ис не придет к нужной величине.
Что можно предпринять в таком случае? Ну, например можно понизить влияние на выходную мощность
Ис. Это называется коэффициент, у каждой составляющей ПИД может быть свой коэффициент, которым можно повышать или понижать влияние этой составляющей на выходной результат. Уменьшим влияние
Ис до 0.3 от его значения —
Ис*0.3:
Уже лучше, но все равно есть колебание в начале. Это из-за слишком большого влияния пропорциональной составляющей, давайте уменьшим и ее влияние в 2 раз —
Пс*0.5:
Идеально, правда? :)
Нуу… Почти. Колебаний нет, но вот время нагрева увеличилось. Оно пришло к заданной температуре только к 25-му отсчету.
На самом деле зачастую используют ПИ-регулятор, без его дифференцирующей части и это вполне работает, как видно. Однако часто можно добиться еще лучшего результата с использованием третьей составляющей — дифференцирующей,
Дс.
Она является «демпфером», не дающим регулируемому устройству слишком быстро менять свое состояние. В нашем примере
Дс начнет снижать выходную мощность тем сильнее чем быстрее будет нагреваться вода, иными словами она не даст «разогнаться» графику роста температуры настолько, чтобы он проскочил заданную температуру :) При этом, пока до заданной температуры далеко влияние
Дс не очень значительно на фоне других составляющих, температура может расти быстро. Но чем ближе она к заданной тем сильнее становится влияние
Дс на фоне все уменьшающихся
Ис и
Пс.
Дс в отличии от
Пс и
Ис не прибавляется к выходному сигналу (в нашем примере- мощности), а вычитается из него. Она равна скорости изменения регулируемой величины (в нашем примере — температуры). Например, если в прошлый замер температура была 28 градусов, а в текущем замере она уже 31 градус, то
Дс будет равна 3 — на столько температура выросла с прошлого замера, это скорость роста температуры. И это значение, возможно умноженное на свой коэффициент, вычитается из выходной мощности, потому эта составляющая и называется дифференцирующей :)
Вот что получится при добавлении
Дс:
Как видно, температура вышла на режим гораздо быстрее и при этом без всплесков и колебаний. Попытку регулятора проскочить температуру вверх погасила как раз дифференцирующая составляющая.
Вот, если интересно, график изменения значений
Пс,
Ис и
Дс в этом регуляторе в том же временном масштабе:
А вот что было бы без дифференцирующей составляющей при тех же условиях:
И еще раз коротким итогом :)
ПИД — это регулятор, который формирует сигнал воздействия на регулируемую величину из трех составляющих: пропорциональной, интегрирующей и дифференцирующей.
Пропорциональная составляющая добавляет в выходной сигнал сиюминутную разницу между заданной и текущей измеренной величинами (т.н. ошибку). Интегрирующая накапливает (интегрирует) разницы всех измерений и добавляет в выходной сигнал накопленное значение (но не превышающее заданного максимума). Дифференцирующая определяет скорость изменения регулируемой величины (на сколько она изменилась с прошлого измерения) и вычитает эту величину из выходного сигнала. Все три составляющие могут иметь свои коэффициенты, усиливающие или ослабляющие их влияние на выходной сигнал.
Уфф… :) Ну, я говорил, что не являюсь популяризатором, поэтому за доходчивость своего изложения не отвечаю. Но я старался :)
ЗЫ: самое веселое заключается в подборе коэффициентов этих составляющих, т.к. без правильных (хотя бы примерно) значений этих коэффициентов ПИД-регулятор или вообще не будет регулировать или будет регулировать очень плохо. Подбор идеальных коэффициентов, как я понял, дело весьма нетривиальное. Пока я не встречал в инете доступное объяснение как их рассчитывать, в основном приводятся методики их экспериментального подбора. Что, впрочем, достаточно логично, т.к. для расчета нужно столько всего знать о регулируемом механизме, сколько о нем не всегда знают даже его создатели :))
А то температура гуляет и получается неоднородно, но все равно вкусно. На фото 7 кг, уже почти нет, разобрали знакомые.
Дома у меня такая:
На работе для пайки такая же, но чуть меньше объемом.
А что за моделька, и ширина камеры? :)
Это Rolsen KW-2626 WT, покупал полтора года назад тут — www.dns-shop.ru/product/7c6f59e6558b3120/elektropec-rolsen-kw-2626-wt-belyj/
Ширину камеры точно не скажу, сейчас не дома, но где-то на 2-3 см шире чем у рабочей, у которой 33.5 см.
чееееегооо?
Да ужжж…
Надеюсь, что немного позже поставлю еще один плюс за обзор паяльной печки, как я понимаю, на РС410 :)
У меня там до сих пор все на соплях и проводках. Да и разбирать духовку очень уж не хочется, тем более, что многие изменения в ней нужно было фотографировать в процессе их совершения :)
Но может быть и напишу коротко когда-нибудь.
Да, управляет ею PC410, замечтальная штука для этих целей :)
Так вот: мне ехать.
Мне мало интересно, насколько там все красиво выглядит, да и как оно там доподлино устроено — желательно, конечно, но тоже переживу.
А вот результат — интересен.
Потому как тепловая инерционность у всех этих печек достаточно приличная, и если таки удается выдержать что то близкое к термопрофилю, особенно при понижении температуры — вот это и интересно.
Мне приходится не очень часто, но в количествах больше десятка (скажем так) паять светодиоды.
Сначала было желание (оно и сейчас есть в общем то) собрать что то вроде относительно нормального паяльного стола, типа керамика (или длинные галогенки от прожекторов/нагревателей) под сеткой, РС410, накидал на сетку подготовленные звездочки/платы или что в голову придет, нажал кнопочку и пошел пить кофе.
С остальным все равно завязал.
Из этого без изменения остался только последний пункт, про кофе, но и то не после нажатия кнопочки, а после окончания пайки.
Электроплитка с закрытым нагревателем, REX-C100, вместо термопрофиля выставляется температура, кидаешь звездочку на плитку, начала паста плыть — кидаешь рядом вторую, первая доходит и снимаешь, ставишь следующую, предыдущая доходит до кондиции…
В общем, пока за раз больше полусотни сделать не надо — вроде еще ничего, хотя уже напрягает…
Без принудительной вентиляции или приоткрывания дверцы нормальной скорости остывания добиться нельзя.
У PC410 есть выход охлаждения, и ПИД для него так же автоматически может быть настроен. Я планировал сделать на основе этого выхода приоткрывание дверцы с помощью моторчика с редуктором, даже заказал моторчик и шкив. Планировал просто привязать нитку к ручке дверцы и моторчиком ее ослаблять, чтобы дверца под своим весом приоткрывалась (она открывается вниз). Но возникла проблема — испарения флюса при пайке оседают на дверце и на тех плоскостях, к которым дверца примыкает, так что после цикла пайки дверца оказывается слегка прилипшей и не открывается сама, без приложения к ней усилия. Так пока и не придумал ничего :) Поставил платы, включил, пошел заварить себе кофе, к приходу профиль уже почти завершен и по его окончанию я просто руками приоткрываю дверцу духовки :)
Может быть сделать на задней стенке вентиляцию с заслонкой, управляемой мотором… Не знаю пока.
Мысль была использовать выход охлаждения у контроллера примерно так: если сигнал охлаждения выдается в течении 2 секунд — приоткрываем на 10% и начинаем отсчет времени заново, если сигнала нет 2 секунды — прикрываем на 10% и начинаем отсчет времени заново.
1. Не хочет показывать оставшееся по программе время, в любом режиме показывает там одно и то же число 1376, кажется.
2. В профилях отсутствует возможность организации «цепочки», когда по окончании одного профиля контроллер автоматически переходит к другому. Параметр профилей, отвечающий за это, в их настройках просто отсутствует.
А вот по духовке и по общей конструкции шишек полно :)
1. Проблема с охлаждением по окончанию профиля. Закрытая духовка остывает очень медленно, нужно приоткрывать ее при остывании. Возможно, самой простой автоматизацией этого будет сделать щель в задней стенке и заслонку, которая будет с помощью моторчика приоткрывать эту щель.
2. Проблема с нагревом. Духовка в стоке нагревается медленно. По распространенным термопрофилям скорость нагрева требуется довольно высокая, особенно в пике температуры, до 2-3 градусов в секунду, но стоковая духовка могла обеспечить максимум 1 градус в 4-5 секунды при температуре близкой к 200 градусам. Разобрал, утеплил базальтовой ватой (слоем около 2 см) стенки и крышу (низ и задняя стенка выходят «на улицу»), стало получше, но все равно не так хорошо как хотелось бы, где-то 1 градус в 1-2 секунды. Нужно добавлять нагреватели еще Ватт на 500 к имеющимся 1500.
3. Термопара у меня выходит из потолка и висит примерно в 1.5 см над платой, но по хорошему термопара должна лежать на плате, желательно уткнутая в какую-нить металлизированную площадку.
Трафаретами я пока не пользуюсь, но подумываю перейти на них. Если буду заказывать, то, скорее всего, там же где и платы — в Резоните :) И там же закажу и пасту, предназначенную для нанесения через трафареты.
А пока я наношу пасту пневмодозатором. В принципе и им получается не так уж долго, в среднем выходит где-то 120 точек в минуту :)
Можете преобразовывать в ток, в напряжение, в громкость, в световой поток, в ШИМ — это все уже за пределами ПИД-а, он к этому не имеет отношения.
Но для печки или самогонного аппарата оно вполне подходит. И там как правило можно обойтись простым Р-регулятором.
В данном дивайсе мне понравилась возможность автонастройки параметров, т.к. IRL это может быть порядочный геморрой.
PID применим вообще везде где можно регулировать и есть обратная связь, он просто считает и выдает результаты расчетов. А во что Вы потом превратите этот результат — в аналоговую мощность, в широтную/фазовую/амплитудную/частотную модуляцию, в данные по какому-то интерфейсу — PID-у глубоко фиолетово :)
В данном случае, как и с любым мощным инертным исполнителем, ШИМ просто удобнее и выгоднее. Но никто не мешает перевести результаты PID-а не в широтно-импульсную, а в фазовую модуляцию и подавать полученный сигнал на управляющий электрод симистора, получив регулирование почти напрямую :) Точно так же можно превратить результат PID-а в ток и подавать на базу мощного транзистора, питающего нагреватель — будет вообще прямее некуда :) И все это будет PID :)
И почему вы и уважаемый ksiman mySKU.me/blog/aliexpress/58532.html#comment2392570 говорите, что на выходе ШИМ? Ведь один из признаков ШИМ это постоянство частоты с которой следуют импульсы регулируемой ширины. Здесь же и ширина и период следования «плавают».
Во-первых в широком смысле ШИМ-ом можно называть и сигнал с плавающей частотой. Во-вторых тут период неизменный, меняется только ширина импульсов, классический ШИМ.
Надо добавить картинку для порогового регулятора и всё.
Сейчас попробую поправить под более реальный вид.
Исправил. Прямоугольника там все равно не будет, т.к. это график из экселя, но ввел небольшую инерционность температуры и пороговые значения выше и ниже заданной температуры :)
Родная слишком массивная, у нее довольно большая инерционность. Хотя в воде она может быть и не так инертна будет как в воздухе :)
Месье знает толк в извращениях.
ПИД нужен где исполнительный механизм инерционен и не следует его часто включать отключать.
aliexpress.com/store/product/AC-220V-30A-Digital-Thermostat-Temperature-Regulator-Controller-with-NTC-sensor-LED-Display/525387_32464628190.html
Ну то есть обозреваемый лучше, да :)
Обычно мощность нагревателей так и регулируется, прямое управление мощностью слишком неэффективно.
А вообще статья интересная, особенно этапы сборки.
Опишу вкратце. У него можно задать 10 отдельных профилей. Каждый профиль может включать в себя от 1 до 8 шагов. Каждый из этих шагов задается несколькими параметрами:
— r — скорость изменения (подъема или опускания) температуры, градусов в секунду, до 99 с шагом 0.01. При нуле (точнее, вместо нуля отображается StEP) подразумевается, что скорость не учитывается, нужно просто довести температуру до заданной. В этом же параметре можно выставить признак окончания профиля (отображается как End), при этом контроллер отключает нагрев и переходит в режим ожидания.
— L — заданной температурой, до которой она должна дойти на этом шаге, с шагом 1 градус.
— d — временем удержания заданной температуры в секундах, до 9999 с шагом 1.
Работает не только на нагрев, но и на охлаждение, для этого у него есть отдельный выход, тоже регулируемый ПИД-регулятором.
Например, если Вам нужна программа:
— поднять температуру до 80 градусов со скоростью 2 град/сек и затем удерживать ее 40 секунд
— поднять температуру до 120 градусов со скоростью 1.5 град/сек и продержать ее 60 сек
— поднять температуру до 180 градусов со скоростью 3 град/сек
— поднять температуру до 210 градусов без оглядки на скорость роста
— опустить температуру до 40 градусов со скоростью 5 град/сек
— выключиться
То получается 6 шагов (включая последний с признаком окончания профиля):
1. r = 2.00, L = 80, d = 40
2. r = 1.50, L = 120, d = 60
3. r = 3.00, L = 180, d = 0
4. r = StEP, L = 210, d = 0
5. r = 5.00, L = 40, d = 0
6. r = End
(сорри, сначала неправильно написал два последних шага, потом исправил)
На предпоследнем шаге (опускание температуры до 40) он отключит нагрев и начнет регулировать охлаждение если увидит, что без этого скорость падения температуры недостаточна.
И таких профилей можно запрограммировать до 10 штук. В каждом профиле кроме всех шагов можно еще задать отклонение температуры, при котором начинается отсчет времени удержания — одно значение на профиль.
Плюс там еще куча разных параметров и режимов. Плюс возможность подключения к компу и работы под управлением софта, тогда возможности еще более расширяются
Вот мануал на этот терморегулятор, можете изучить подробнее :) Правда на английском — drive.google.com/open?id=1pBnaYKok_rYRcoeTao5_iEZbGLoXVEFY
Влияние изменения параметров ПИД
Во-вторых если Вы думаете, что подобрать хорошо работающие коэффициенты так просто как может показаться из этой гифки («сейчас вот это накручу побольше, а вот это поменьше и все будет зашибись»), то вынужден Вас разочаровать :) В реальной жизни коэффициенты очень тесно связаны друг с другом, и меняя один из них Вы в большинстве случаев ломаете целиком всю работу ПИД, после чего требуется заново подбирать и остальные коэффициенты.
А графиков таки в инете полно. И обычно перед ними идут формулы с интегралом :)
Случаи бываю сильно разные. И не надо всё гнать под «в большинстве». Где, в большинстве? Если взять завод (я работал на трубном), где громадная печь для закалки труб, то там, пожалуй, Ваше «большинство» будет актуальным. Если в повседневную жизнь окунуться, то по моему опыту «большинство» — это теплопункты, имеющиеся практически в каждой многоэтажке, и насосы повышающие давление (поддерживающие) на ГВС и ХВС, опть же имеются почти в каждой многоэтажке. В моём большинстве настройка длится от двух часов до пары дней, в основном по удалёнке (спасибо MOXA), и связано с тем, что пики потребления воды приходятся на утро и вечер, то есть за пару часов в любое время не настроить, не видя реальных перепадов.
Так что не надо нагнетать, не у всех всё сложно. В моём «большинстве» всё просто, и моё «большинство» встречается чаще.
Принцип работы ПИД регулятора не очень прост и очевиден, пока сам не столкнёшься.
Но ваш вариант очень понравился.)))
Более того, у меня корпус и с входной вилкой, и с выходной. Редко, но такие встречаются. Использую, для подключения нагрузки.
Ну и период ШИМ побольше задали, наверное?
Постараюсь проверить это в ближайшие дни.
А вот такой, похоже, то что надо aliexpress.com/item/General-damper-Actuator-2Nm-modulating-for-operation-of-air-control-dampers-in-HVAC-system-ADC24V-AC100/32794338611.html