Температурный ПИД-регулятор с терморезистором Pt100

Состав системы
Как работает
Кнопки управления
Индикация LCD
Подключение
Что нужно для проекта
Возможные проблемы
Скетч

Фото регулятора
Версия для печати

Вариант на микросхеме MAX6675

Вернуться на главную

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

Температурный ПИД-регулятор

Температурный ПИД-регулятор

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

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

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

КАК РАБОТАЕТ

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

Температурный ПИД-регулятор

Температурный ПИД-регулятор

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

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

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

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

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

  • 1 Setpoint (SV) заданная температура в ºC. Значение по умолчанию +45º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. Значение по умолчанию +60º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 Alarm ON/OFF включение или выключение сигнализации по температуре. Значение по умолчанию - ON (сигнализация включена). При включенной сигнализации подается питание на реле сигнализации, а на LCD выводится буква А. При отключенной сигнализации реле отключено, но буква А выводится все равно.
  • 10 Sensor Time интервал опроса датчика температуры в мс. Значение по умолчанию 2000 мс. Нижняя граница 100 мс., верхняя 10000 мс.
  • 11 Valve Time время открытия клапана в секундах от 0 до полного. Замеряем секундомером или берем из мануала. Значение по умолчанию 43 сек. Нижняя граница 1 сек., верхняя 6000 сек.
  • 12 Total Span диапазон регулирования в ºC, т.е. максимальное изменение температуры от закрытого клапана до полностью открытого. Замеряем или задаем на глаз Значение по умолчанию 55ºC. Нижняя граница 1ºC, верхняя 1000ºC.
  • 13 Min_Volt нижняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 39. Нижняя граница 0, верхняя 1023. Эта величина и далее необходимы для калибровки самодельного преобразователя термосопротивления Pt100.
  • 14 MinPt соответствующая нижней границе температура в ºC. Значение по умолчанию - 0ºC. Нижняя граница 0ºC, верхняя +1000ºC.
  • 15 Max_Volt верхняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 546. Нижняя граница 0, верхняя 1023.
  • 16 MaxPt соответствующая верхней границе температура в ºC. Значение по умолчанию +100ºC. Нижняя граница 0ºC, верхняя +1000ºC.
  • 17 Read Settings : чтение настроек из энергонезависимой памяти Arduino. При нажатии кнопки ВВЕРХ настройки из памяти PLC перейдут в оперативную.
  • 18 Save Settings : запись настроек в энергонезависимую память Arduino. При нажатии кнопки ВВЕРХ текущие параметры запишутся в постоянную память PLC. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу.
  • 19 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=XXXºC" - текущая температура в ºC. "A" - сработала сигнализация (выводится даже при отключенной сигнализации), "!" - введена поправка температуры (отличается от 0).
нижняя строчка "SV=XXºC" - уставка температуры в ºC. Нажимая кнопку ВЫХОД, вы можете увидеть следующие параметры (они отображаются циклично) : "Output=XXX%" - выходной сигнал в %, "P_part=XX%" - пропорциональная составляющая выходного сигнала в %, "I_part=XX%" - интегральная составляющая выходного сигнала в %, "D_part=XX%" - дифференциальная составляющая выходного сигнала в %. Вы можете наблюдать за изменениями этих параметров в реальном времени, чтобы затем настроить параметры ПИД-регулятора.
В режиме настроек (нажата кнопка НАСТРОЙКИ) :
верхняя строчка - название параметра.
нижняя строчка - значение параметра, изменить которое можно кнопками ВВЕРХ-ВНИЗ.
В ручном режиме (нажата кнопка MANUAL) :
верхняя строчка - "PV=XXXºC" - текущая температура в ºC. "A" - сработала сигнализация (выводится даже при отключенной сигнализации), "!" - введена поправка температуры (отличается от 0). При нажатии на кнопки ВВЕРХ-ВНИЗ появятся стрелки (вверх, вниз соответственно).
нижняя строчка - "Manual Mode".

ПОДКЛЮЧЕНИЕ

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

Подключение системы

Подключение системы

Плата Arduino и Sensor-shield

  • питание Arduino : от адаптера 7-12VDC (2A)
  • питание шилда (перемычка убрана) : от адаптера 7-12VDC (2A) через понижающий DC-DC преобразователь типа LM2596 (не менее 2А)
  • LCD-дисплей 1602 + модуль I2C : питание от шилда (подсоединяем GND и VCC к любым свободным пинам G и V цифровых входов), SDA (I2C) - A4 (шилд), SCL (I2C) - A5 (шилд)
  • реле открытия клапана : сигнал от Arduino - цифровой пин 5, питание от шилда (подсоединяем GND и VCC реле к пинам G и V пина 5)
  • реле закрытия клапана : сигнал от Arduino - цифровой пин 6, питание от шилда (подсоединяем GND и VCC реле к пинам G и V пина 6)
  • реле сигнализации : сигнал от Arduino - цифровой пин 12, питание от шилда (подсоединяем GND и VCC реле к пинам G и V пина 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 - к клеммам на самодельном термопреобразователе

Клапан

  • реле открытия клапана : COM - источник питания с напряжением аналогичным приводу клапана, NO - клемма привода открытия клапана
  • реле закрытия клапана : COM - источник питания с напряжением аналогичным приводу клапана, NO - клемма привода закрытия клапана

Минусовой или нулевой провод привода можно оставить штатный. Лучшим вариантом будет использовать провода от штатного неисправного терморегулятора, чем подключать Arduino непосредственно к приводу клапана, тогда все защиты (предохранители и автоматы) останутся в работе. Внимание! Если катушки клапанов питаются током других параметров, переделайте схему под них

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

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

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

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

ВОЗМОЖНЫЕ ПРОБЛЕМЫ

Главная проблема, возникшая при полевых испытаниях, большая чувствительность Arduino к электромагнитным полям (плата зависает). Это явление возникает при коммутации через реле токов переменного напряжения 220 В и более. В этом случае вынесите реле К1, К2 на расстояние не менее полуметра от платы.

СКЕТЧ

Ниже представлен скетч системы управления. В этом окне он неудобочитаем, поэтому скачать его в формате ino вы можете по этой ссылке.

Для работы этого скетча вам понадобятся дополнительные библиотеки :

  • EEPROM.h - библиотека работы с памятью (она нужна для чтения и записи наших настроек в энергонезависимую память Arduino). Это стандартная библиотека, она входит в комплект среды программирования Arduino IDE.
  • Wire.h - библиотека для работы с протоколом I2C. Это тоже стандартная библиотека, ее устанавливать не нужно.
  • LiquidCrystal_I2C.h - библиотека для работы с LCD по протоколу I2C. Скачать.

Если есть возможность, проверьте эти библиотеки на наличие обновлений.