ПИД-регулятор температуры с приводом шагового двигателя

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

ПИД-регулятор с приводом шагового двигателя

ПИД-регулятор с приводом шагового двигателя

Что может данная система управления. Осуществлять автоматический процесс регулирования температуры. Выдавать сигнализацию по высокой и низкой температуре. Все события выводятся на LCD-дисплей. Система позволяет настраивать все необходимые параметры и записывать их в память Arduino. В системе есть полностью ручной режим управления клапаном.

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

СОСТАВ СИСТЕМЫ

PLC Arduino UNO с шилдом Sensor Shield v5.0 (питание 7-12 В постоянного тока), LCD-дисплей с шиной I2C, DC-DC конвертер для питания мотора и дисплея, модуль сигнализации, кнопочный пост с пятью кнопками, самодельный температурный преобразователь термосопротивления Pt100, а также клеммницы для подсоединения конечных выключателей. Приводом клапана служит мотор-редуктор 28BYJ-48 на драйвере ULN2003. Подробней об этом шаговом двигателе вы можете почитать на одной из страничек сайта.

КАК РАБОТАЕТ

После подачи питания на Arduino контроллер замерит текущую температуру объекта, далее, в зависимости от заданной температуры, рассчитает направление (открыть/закрыть) и продолжительность движения клапана, и подаст необходимые команды на шаговый двигатель. Процесс будет идти непрерывно, достигая максимального равенства текущей температуры и заданной. В случае, если текущая температура уйдет за пределы заданной минимальной или максимальной уставки, сработает сигнализация. При необходимости вы можете перейти на полностью ручной режим управления клапаном, открывая или закрывая его кнопками ВВЕРХ / ВНИЗ.

ПИД-регулятор с приводом шагового двигателя

ПИД-регулятор с приводом шагового двигателя

КНОПКИ УПРАВЛЕНИЯ

Управлять системой можно с помощью пяти кнопок : НАСТРОЙКИ, ВВЕРХ, ВНИЗ, ВЫХОД (EXIT) и РУЧНОЙ РЕЖИМ (MANUAL). Рассмотрим их функции подробно :

Кнопка НАСТРОЙКИ

При нажатии этой кнопки вы попадете в меню настроек. Продолжая нажимать эту кнопку, вы будете циклично переходить по пунктам меню. Чтобы выйти из настроек, нажмите кнопку ВЫХОД. Изменение параметров осуществляется кнопками ВВЕРХ и ВНИЗ. Все цифровые параметры имеют верхнюю и нижнюю границы, за которые вы выйти не сможете. Изменение цифровых параметров принимается системой сразу после выхода из настроек, подтверждение не нужно. Обратите внимание, верхнюю и нижнюю границы, а также значение по умолчанию вы можете сами изменять в скетче. На время нахождения в настройках работа ПИД-регулятора приостанавливается.

Пройдемся по пунктам меню Настройки.

  • 1 Setpoint (SV) заданная температура (set value) в ºC. Значение по умолчанию +24ºC. Нижняя граница 0ºC, верхняя +1000ºC.
  • 2 P-factor (proportional band) : коэффициент пропорциональности в %. Значение по умолчанию 100%. Нижняя граница 0%, верхняя 10000%.
  • 3 I-factor (integral time) : время интегрирования в сек. Значение по умолчанию 70 сек. Нижняя граница 1 сек., верхняя 10000 сек.
  • 4 D-factor (derivative time) : время дифференцирования в сек. Значение по умолчанию 15 сек. Нижняя граница 1 сек., верхняя 10000 сек. Обычно D-factor = I-factor / 4...5.
  • 5 Temp Correct. (temperature correction) : поправка температуры в ºC. Значение по умолчанию 0ºC. Нижняя граница -100ºC, верхняя +100ºC. Эта поправка добавляется к замеренной температуре (PV). Если поправка отличается от нуля, в верхней строчке LCD-дисплея появится восклицательный знак.
  • 6 Alarm Max Temp (alarm maximum temperature) : уставка сигнализации по максимальной температуре в ºC. Значение по умолчанию +30ºC. Нижняя граница +1ºC, верхняя +1000ºC.
  • 7 Alarm Min Temp (alarm minimum temperature) : уставка сигнализации по минимальной температуре в ºC. Значение по умолчанию +20ºC. Нижняя граница +1ºC, верхняя +1000ºC.
  • 8 Alarm Dif Temp (alarm temperature differential) : дифференциал сигнализации в ºC. Значение по умолчанию 1ºC. Нижняя граница 0ºC, верхняя 100ºC.
  • 9 Sensor Time интервал опроса датчика температуры в мс. Значение по умолчанию 2000 мс. Нижняя граница 100 мс., верхняя 10000 мс.
  • 10 Valve Time время открытия клапана в секундах от 0 до полного. Замеряем секундомером или берем из мануала. Значение по умолчанию 200 сек. Нижняя граница 1 сек., верхняя 6000 сек.
  • 11 Total Span диапазон регулирования в ºC, т.е. максимальное изменение температуры от закрытого клапана до полностью открытого. Замеряем или задаем на глаз Значение по умолчанию 55ºC. Нижняя граница 1ºC, верхняя 1000ºC.
  • 12 Min_Volt нижняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 39. Нижняя граница 0, верхняя 1023. Эта величина и далее необходимы для калибровки самодельного преобразователя термосопротивления Pt100.
  • 13 MinPt соответствующая нижней границе температура в ºC. Значение по умолчанию - 0ºC. Нижняя граница 0ºC, верхняя +1000ºC.
  • 14 Max_Volt верхняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 546. Нижняя граница 0, верхняя 1023.
  • 15 MaxPt соответствующая верхней границе температура в ºC. Значение по умолчанию +100ºC. Нижняя граница 0ºC, верхняя +1000ºC.
  • 16 Steps in Rev количество шагов на оборот выходного вала (не электродвигателя). Получается путем перемножение числа шагов на оборот вала мотора на понижающий коэффициент редуктора. Для данной модели двигателя 28BYJ-48 это число равно 4075. Эта величина постоянная, задается один раз и больше не меняется.
  • 17 Speed rev/min скорость вращения выходного вала в об/мин. Эти единицы скорости выбраны для удобства, но на самом деле этот параметр нужен для расчета времени одного шага двигателя TimeForStep = 60000000 / (SpeedRevMin * StepsInMotor). Подберите эту скорость исходя из допустимых пределов крутящего момента, скорости вращения и нагрева мотора (см. спецификацию). Значение по умолчанию 1,4 об/мин. Нижняя граница 0,001 об/мин, верхней границы нет - будьте осторожны.
  • 18 Brake Current оставлять ли двигатель под током после прекращения движения. Эта функция может понадобиться при необходимости дополнительного тормозного момента на валу, чтобы исключить самопроизвольное проворачивание. Значение по умолчанию - OFF (отключено).
  • 19 Alarm ON/OFF включение или выключение сигнализации по температуре. Значение по умолчанию - ON (сигнализация включена). При включенной сигнализации подается питание на реле сигнализации, а на LCD выводится буква А. При отключенной сигнализации реле отключено, но буква А выводится все равно.
  • 20 Read Settings : чтение настроек из энергонезависимой памяти Arduino. При нажатии кнопки ВВЕРХ настройки из памяти PLC перейдут в оперативную.
  • 21 Save Settings : запись настроек в энергонезависимую память Arduino. При нажатии кнопки ВВЕРХ текущие параметры запишутся в постоянную память PLC. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу.
  • 22 Load Default : загрузка значений по умолчанию. При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. Но есть и еще одна причина ее использования. Если вы на одну и ту же плату Arduino постоянно записываете скетчи разных проектов, возможна ситуация, когда параметры одного проекта запишутся в настройки другого. Конечно, это можно исправить, но представьте, что в параметре, где должно быть, например, число 10, стоит 32000. Вручную кнопками ВВЕРХ или ВНИЗ корректировать это очень долго, проще сбросить настройки к заводским, а уже затем их подправить.

Кнопки ВВЕРХ-ВНИЗ

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

Кнопка ВЫХОД

Нажимая эту кнопку в автоматическом режиме, вы можете циклично вывести во второй строчке экрана следующие параметры :

  • SV=XXºC - уставка температуры
  • Output=XXX% - выходной сигнал в %
  • P_part=XX% - пропорциональная составляющая выходного сигнала в %
  • I_part=XX% - интегральная составляющая выходного сигнала в %
  • D_part=XX% - дифференциальная составляющая выходного сигнала в %

Будучи в режиме настроек вы можете выйти из него с помощью этой кнопки.

Кнопка РУЧНОЙ РЕЖИМ (MANUAL)

Нажав эту кнопку, вы попадете в ручной режим, где сможете управлять клапаном кнопками ВВЕРХ-ВНИЗ. Выйти из ручного режима можно, нажав на кнопку MANUAL еще раз.

ИНДИКАЦИЯ LCD

В автоматическом режиме :
верхняя строчка "PV=XX.XºC" - текущая температура (present value) в ºC. "A" - сработала сигнализация (выводится даже при отключенной сигнализации), "!" - введена поправка температуры (отличается от 0). "U" - (UP) клапан дошел до верхнего конечника, "D" - (DOWN) клапан дошел до нижнего конечника. Стрелки вверх или вниз - они показывают направление движения клапана.
нижняя строчка "SV=XXºC" - уставка температуры (set value) в ºC. Нажимая кнопку ВЫХОД, вы можете увидеть следующие параметры (они отображаются циклично) : "Output=XXX%" - выходной сигнал в %, "P_part=XX%" - пропорциональная составляющая выходного сигнала в %, "I_part=XX%" - интегральная составляющая выходного сигнала в %, "D_part=XX%" - дифференциальная составляющая выходного сигнала в %. Вы можете наблюдать за изменениями этих параметров в реальном времени, чтобы затем настроить параметры ПИД-регулятора.
В режиме настроек (нажата кнопка НАСТРОЙКИ) :
верхняя строчка - название параметра.
нижняя строчка - значение параметра, изменить которое можно кнопками ВВЕРХ-ВНИЗ.
В ручном режиме (нажата кнопка MANUAL) :
верхняя строчка - "PV=XX.XºC" - текущая температура в ºC. "A" - сработала сигнализация (выводится даже при отключенной сигнализации), "!" - введена поправка температуры (отличается от 0). "U" - (UP) клапан дошел до верхнего конечника, "D" - (DOWN) клапан дошел до нижнего конечника. Стрелки вверх или вниз - они показывают направление движения клапана.
нижняя строчка - "Manual Mode".

ПОДКЛЮЧЕНИЕ

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

ПИД-регулятор с приводом шагового двигателя

ПИД-регулятор с приводом шагового двигателя

Плата Arduino и Sensor-shield

  • питание Arduino : от адаптера 7-12 В постоянного тока (2A)
  • питание шилда (перемычка убрана) : 5 В постоянного тока. Можно от того же адаптера 7-12 В через понижающий DC-DC преобразователь типа LM2596 (не менее 2А)
  • LCD-дисплей 1602 + модуль I2C : питание от шилда (подсоединяем GND и VCC к любым свободным пинам G и V цифровых входов), SDA (I2C) - A4 (шилд), SCL (I2C) - A5 (шилд)
  • драйвер ULN2003 подсоединяем к контроллеру следующим образом : IN1 - пин 3, IN2 - пин 4, IN3 - пин 5, IN4 - пин 6. Питание драйвера (+ и -) подсоединяем к любым свободным пинам питания (V и G) цифровых пинов шилда.
  • шаговый двигатель подключается к драйверу с помощью специального разъема.
  • модуль сигнализации (светодиод) : сигнал от Arduino (через резистор 220 Ом) - цифровой пин 12, земля модуля - к пину G пина 12 шилда.
  • сигнал от кнопки НАСТРОЙКИ : вход в Arduino - цифровой пин 7. Пины + и - кнопочного поста, общие для всех кнопок НАСТРОЙКИ, ВВЕРХ, ВНИЗ, ВЫХОД, MANUAL подсоединяем к любым свободным пинам V и G цифровых входов. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от кнопки ВНИЗ : вход в Arduino - цифровой пин 8. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от кнопки ВВЕРХ : вход в Arduino - цифровой пин 9. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от кнопки ВЫХОД : вход в Arduino - цифровой пин 10. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от кнопки MANUAL : вход в Arduino - цифровой пин 11. Линию сигнала и земли шунтируем резистором 10кОм
  • сигнал от контроллера Pt100 к Arduino - аналоговый пин A0. Питание к любым свободным пинам G и V цифровых входов
  • входы от термодатчика Pt100 - к клеммам на самодельном термопреобразователе
  • конечник верхнего положения клапана : сигнал - цифровой пин 13, питание и землю подсоединяем к любым свободным пинам V и G пина 13 шилда.
  • конечник нижнего положения клапана : сигнал - цифровой пин 2, питание и землю подсоединяем к любым свободным пинам V и G пина 2 шилда.
Схема подключения ПИД-регулятора

Схема подключения ПИД-регулятора

ЧТО НУЖНО ДЛЯ ПРОЕКТА

  • PLC Arduino UNO - 1 шт
  • Sensor Shield v 5.0 - 1 шт
  • Шаговый двигатель 28BYJ-48 - 1 шт
  • драйвер ULN2003 - 1 шт
  • понижающий DC-DC преобразователь типа LM2596 (не менее 2А) - 1 шт
  • LCD-дисплей 1602 + модуль I2C - 1 шт
  • самодельный температурный преобразователь термосопротивления Pt100 - 1 шт
  • кнопка тактовая с колпачком - 5 шт
  • резистор 220 Ом (0,25 Вт) - 1 шт
  • резистор 10 кОм (0,25 Вт) - 7 шт
  • светодиод 5 мм (20 мА) - 1 шт
  • макетная плата под пайку 90х30 - 1 шт (для монтажа кнопок)
  • макетная плата под пайку 25х50 - 1 шт (для монтажа клеммниц)
  • стойка мама-мама М3х15 - 8 шт (для монтажа LCD-дисплея и самодельного термопреобразователя)
  • стойка мама-мама М3х10 - 4 шт (для монтажа драйвера ULN2003)
  • стойка мама-мама М3х25 - 2 шт (для монтажа шагового двигателя)
  • гайка М3 - 50 шт и более в зависимости от способа крепления вышеуказанных элементов
  • болт М3х15, М3х10 - 20 шт и более
  • провод Dupont мама-мама или папа-мама (20 см) - 30 шт и более в зависимости от типа пинов соединяемых элементов
  • провод типа AWG - 50 см (соединение штекер - DC-DC преобразователь - Sensor Shield)
  • штыревой соединитель 40pin - 1 шт
  • штекер питания DC 2.1 мм с клеммной колодкой папа и мама - 1 пара (для подключения шилда)
  • клеммник на 3 провода под пайку в макетную плату - 2 шт
  • кусок оргстекла или т.п. - 20х30 см (для монтажа всех элементов)
  • болт М6х15 и гайка - 4 шт (ножки оргстекла)