Форум РадиоКот https://radiokot.ru/forum/ |
|
ПИД-регулятор нагревателя -как сделать ??? https://radiokot.ru/forum/viewtopic.php?f=20&t=43790 |
Страница 1 из 2 |
Автор: | Alexeus [ Пн фев 28, 2011 18:57:09 ] |
Заголовок сообщения: | ПИД-регулятор нагревателя -как сделать ??? |
Собственно нужно держать температуру нагрева как можно точнее, ровнее. Хотелось бы сделать ПИД регулятор. Почитал про принцип действия, но как организовать на мк и настроить его- пока мыслей нет. Может кто уже делал или знает как- подскажите пожалуйста. (мк типа МЕГА8) Есть термопара с платой усилителя сигнала. мк АЦП можно захватывать значение входа усилителя термопары, а вот что далее, как это значение в какие формулы пихать, да еще и коэффициенты применять... поделитесь дельными предложениями, ссылками... (готовые решения что то дороги очень 3500-6500руб.) |
Автор: | Furius [ Пн фев 28, 2011 20:42:04 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Я не буду сильно оригинальным, но предложу http://ru.wikipedia.org/wiki/PID |
Автор: | ChipKiller [ Пн фев 28, 2011 20:58:23 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Alexeus писал(а): нужно держать температуру нагрева как можно точнее, ровнее. Хотелось бы сделать ПИД регулятор. ... до конца не знаю задачу, но скорее всего достаточно ПИ-регулятора. Диф.-составляющая влияет на скоростные характеристики, а раз нагреватели инерционны, то можно без нее.
|
Автор: | Alexeus [ Пн фев 28, 2011 21:57:35 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
я тоже думаю нафига дифференциальная составляющая- может она и не нужна вовсе? скажем так -задача регулировать нагреватели ИК станции. Нижний- просто держать температуру уставки, верхний -программный, поход по нескольким температурам (термопрофиль). Интересует, конечно, если кто уже сам делал. Поделитесь практической реализацией, кода, схемотехники, алгоритм... (понятно, что управление симистором через оптопару с детектором перехода через ноль, а как мк сигнал на оптопару формирует- шим? как связать шим с расчетом ПИ, как применить коэффициенты и расчитать их значение...) ![]() |
Автор: | Сэр Мурр [ Пн фев 28, 2011 23:45:05 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Можно обойтись без ПИД. Нагревайте на полной мощности до уровня, например, 80% от заданного. Затем перейдите на половинный уровень мощности (или несколько другой). За несколько таких проходов подберёте нужные коэффициенты мощности. Правда, этот способ больше подходит для нагревателей с большой тепловой инерцией. |
Автор: | maglev [ Вт мар 01, 2011 00:23:23 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Если использовать ПИД, то примерно так: in - входная переменная, out - выход, setpoint - уставка, max_error - предел интегрирования. Код: error = in - setpoint; velocity = error - error_1; error_1 = error; sum_error += error; if (sum_error > max_error) sum_error = max_error; else if (sum_error < -max_error) sum_error = -max_error; out = Kp * error + Ki * sum_error + Kd * velocity; Смысл коэффициентов в том, что без П работать не будет вовсе. Без И будет отлично, только возможно постоянное смещение. Без Д будут колебания в районе уставки, придется снизить П и сильно растянуть по времени выход на температуру. Настраивать можно по-всякому, проще всего И=0, Д=0, поднимаем П до возникновения колебаний. Поднимаем Д до исчезновения колебаний. Поднимаем И до исчезновения смещения. Далее, управление нагрузкой: можно коммутировать целые периоды сети по Брезенхему, а можно фазовый регулятор. ШИМ не нужен. Это если питание от 50Гц. |
Автор: | ChipKiller [ Вт мар 01, 2011 10:31:32 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
maglev писал(а): Если использовать ПИД, то примерно так: ... ну "на пальцах" лучше не объяснишь... Стоит, наверное, еще добавить о периоде квантования - при больших значениях, ухудшается реакция регулятора, а при малых - возрастает нагрузка на МК и появляются шумы.
|
Автор: | Alexeus [ Вт мар 01, 2011 12:16:25 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
maglev писал(а): Далее, управление нагрузкой: можно коммутировать целые периоды сети по Брезенхему, а можно фазовый регулятор. ШИМ не нужен. Это если питание от 50Гц. Спасибо большое за ответы, а можно по подробнее как управлять нагрузкой? Планирую использовать оптопару с детектором нуля и симистор. Оптопара при подаче на нее сигнала управления включит симистор только в ближайший переход через ноль. Как на мк реализовать подачу сигнала на оптопару, ведь скорее всего продолжительность подачи этого сигнала нужно как то увязать с рассчитанным значением ПИД? |
Автор: | ChipKiller [ Вт мар 01, 2011 13:46:48 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Alexeus писал(а): Как на мк реализовать подачу сигнала на оптопару, ведь скорее всего продолжительность подачи этого сигнала нужно как то увязать с рассчитанным значением ПИД? ... Вам же написали maglev писал(а): можно коммутировать целые периоды сети по Брезенхему, а можно фазовый регулятор. что не ясно???В процессе расчета out имеет определенную величину. Скармливаете это значение, например, алгоритму Брезенхема, который равномерно распределяет вкл/выкл состояние на интервал управления нагрузкой. |
Автор: | Pooher [ Вт мар 01, 2011 20:57:27 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Alexeus писал(а): Оптопара при подаче на нее сигнала управления включит симистор только в ближайший переход через ноль. А как симистор откроется при нулевом напряжении? Симистор надо открывать при напряжении отличном от нуля, а вот закрывать в тот момент, кода ток и напряжение равно нулю. На пример: 1-Отследили "ноль" (напр. внешним прерыванием) 2-Запустили таймер 3-Таймер досчитал до нужного значения - подаём импульс открытия. 4-При правильной постройке схемы контроля перехода через ноль, симистор сам закроется в "нуле" |
Автор: | maglev [ Вт мар 01, 2011 23:49:28 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Это вы описали фазовое управление. Для нагревателя допустим и другой вариант, либо целый период пропускаем в нагрузку, либо нет. Для этого при переходе через ноль принимаем решение и либо открываем оптопару, либо нет. Симистор в этом периоде однажды откроется, если нужно. Таймер не нужен. Описание алгоритма Брезенхема на этом форуме я давал, поиск найдет. |
Автор: | Alexeus [ Чт мар 03, 2011 12:48:58 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
для управления симистором предполагается использовать оптопару MOC3083M. у нее на вход просто подается питание, а выход уже сам включается в ближайший, подходящий для включения симистора, момент времени по внутренней схеме с детектором нуля. имхо зачем усложнять и считать периоды, когда подал напряжение и вуаля, в ближайший момент времени открывается симистор, подключается нагрузка, затем, по высчитанному с термопары ПИД значению отключается. вопрос лишь в том, вероятна ли и существенна ли ситуация, что оптопара будет включать симистор например только в положительный полупериод. при поддержании граничных значений температуры, когда уже все прогрелось и стоит лишь немного поддерживать- совпадет например так, что симистор будет открываться интервалами в полупериод и только в положительную его часть. возникнут ли какие неприятные последствия в сети? |
Автор: | maglev [ Пт мар 04, 2011 23:45:46 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Alexeus писал(а): подал напряжение и вуаля, в ближайший момент времени открывается симистор, подключается нагрузка, затем, по высчитанному с термопары ПИД значению отключается. Отключается? Это не симистор. |
Автор: | Roma4ka [ Чт мар 22, 2012 09:29:27 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
добрые коты, помогите разобраться с ПИД регулятором. Есть кусок кода CVAVR для регулировки нагревателям (лампа 60Вт.), управляю нагревом через оптотиристор + симистор, режим роботы: 100% - максимальный нагрев и 30% минимальный нагрев. термометр - термопара. нарыл кусок ПИД регулятора ...ну не могу его превинтить к своим проекту необходимо что бы функция возвращала процент нагрузки в приделах (( Код: #define INTERVAL 0.1 #define MAX 100 #define MIN 30 signed int Kp=2,Ki=1,Kd=0; static signed int last_error; signed int pid_control(signed char setpoint, signed char currentpoint) { signed int P; signed int D; static signed int I; signed int PID; P = (setpoint - currentpoint); I = (I + (setpoint - currentpoint) * INTERVAL); D = (((setpoint - currentpoint) - last_error) / INTERVAL); last_error = setpoint - currentpoint; PID = (Kp * P) + (Ki * I) + (Kd * D); return (PID); } каждые 250 мс. я считываю показания термопары, и передаю показания Код: pid_control(set,temperature);
|
Автор: | GRAF [ Чт мар 22, 2012 15:17:03 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Roma4ka, INTERVAL задаете 250 мс (в тиках). Перед return PID описываете процедуру приведения значения в границы MIN и MAX, например: Код: if(PID>MAX) PID=MAX;
else if(PID<MIN) PID=MIN; |
Автор: | vahoo [ Вс июл 08, 2012 20:05:39 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Roma4ka писал(а): добрые коты, помогите разобраться с ПИД регулятором. Есть кусок кода CVAVR для регулировки нагревателям (лампа 60Вт.), управляю нагревом через оптотиристор + симистор, режим роботы: 100% - максимальный нагрев и 30% минимальный нагрев. термометр - термопара. нарыл кусок ПИД регулятора ...ну не могу его превинтить к своим проекту необходимо что бы функция возвращала процент нагрузки в приделах (( Код: #define INTERVAL 0.1 #define MAX 100 #define MIN 30 signed int Kp=2,Ki=1,Kd=0; static signed int last_error; signed int pid_control(signed char setpoint, signed char currentpoint) { signed int P; signed int D; static signed int I; signed int PID; P = (setpoint - currentpoint); I = (I + (setpoint - currentpoint) * INTERVAL); D = (((setpoint - currentpoint) - last_error) / INTERVAL); last_error = setpoint - currentpoint; PID = (Kp * P) + (Ki * I) + (Kd * D); return (PID); } каждые 250 мс. я считываю показания термопары, и передаю показания Код: pid_control(set,temperature); поделись пожалуйста кодом и схемой если не жалко, заранее спасибо! |
Автор: | da-nie [ Вс июл 08, 2012 21:04:38 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Вот здесь методика настройки ПИД-регулятора: download/file.php?id=112938 |
Автор: | vahoo [ Вс июл 08, 2012 22:07:00 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
da-nie писал(а): Вот здесь методика настройки ПИД-регулятора: download/file.php?id=112938 огромное спасибо! а не подскажите откуда можно скачать готовый проект желательно на CVAVR и на C ? |
Автор: | siamds [ Вс июл 08, 2012 23:49:12 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Уважаемый Alexeus! Чтобы помочь Вам, мне надо знать следующее: Тип термопары (хромель-алюмель, хромель- константан или другая), или, по крайней мере, на какую температуру рассчитана термопара. Также надо знать род тока (постоянный или переменный), а также значения напряжения и тока нагрузки. Будет ли применяться LCD дисплей для вывода задания и контроля температуры, а также желательно схему Вашего усилителя. Пожалуй, пока и все, остальное будем решать в процессе работы. Да еще, нужны ли контроль и регулировка терморегулятора от компьютера? |
Автор: | Леонид Иванович [ Пн июл 09, 2012 00:22:22 ] |
Заголовок сообщения: | Re: ПИД-регулятор нагревателя -как сделать ??? |
Я вот здесь описывал структуру терморегулятора: viewtopic.php?p=1093940#p1093940 |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |