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

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

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

Вариант с термосопротивлением Pt100

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

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

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

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

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

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

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

Обратите внимание, на сайте есть страничка, как сделать преобразователь для термопары типа К самостоятельно. Хотя я рекомендую использовать MAX6675.

КАК РАБОТАЕТ

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

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

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

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

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

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

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

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

  • 1 P-factor (proportional band) : коэффициент пропорциональности в %. Значение по умолчанию 100%. Нижняя граница 0%, верхняя 10000%.
  • 2 I-factor (integral time) : время интегрирования в сек. Значение по умолчанию 70 сек. Нижняя граница 1 сек., верхняя 10000 сек.
  • 3 D-factor (derivative time) : время дифференцирования в сек. Значение по умолчанию 15 сек. Нижняя граница 1 сек., верхняя 10000 сек. Обычно D_FACTOR=I_FACTOR/4...5.
  • 4 Temp Correct. (temperature correction) : поправка температуры в ºC. Значение по умолчанию 0ºC. Нижняя граница -100ºC, верхняя +100ºC. Эта поправка добавляется к замеренной температуре (PV). Если поправка отличается от нуля, в верхней строчке LCD-дисплея появится восклицательный знак.
  • 5 Alarm Max Temp (alarm maximum temperature) : уставка сигнализации по максимальной температуре в ºC. Значение по умолчанию +60ºC. Нижняя граница +1ºC, верхняя +1000ºC.
  • 6 Alarm Min Temp (alarm minimum temperature) : уставка сигнализации по минимальной температуре в ºC. Значение по умолчанию +20ºC. Нижняя граница +1ºC, верхняя +1000ºC.
  • 7 Alarm Dif Temp (alarm temperature differential) : дифференциал сигнализации в ºC. Значение по умолчанию 1ºC. Нижняя граница 0ºC, верхняя 100ºC.
  • 8 Alarm ON/OFF включение или выключение сигнализации по температуре. Значение по умолчанию - ON (сигнализация включена). При включенной сигнализации подается питание на реле сигнализации, а на LCD выводится буква А. При отключенной сигнализации реле отключено, но буква А выводится все равно.
  • 9 Sensor Time интервал опроса датчика температуры в мс. Значение по умолчанию 2000 мс. Нижняя граница 100 мс., верхняя 10000 мс.
  • 10 Valve Time время открытия клапана в секундах от 0 до полного. Замеряем секундомером или берем из мануала. Значение по умолчанию 43 сек. Нижняя граница 1 сек., верхняя 6000 сек.
  • 11 Total Span диапазон регулирования в ºC, т.е. максимальное изменение температуры от закрытого клапана до полностью открытого. Замеряем или задаем на глаз Значение по умолчанию 55ºC. Нижняя граница 1ºC, верхняя 1000ºC.
  • 12 ReadSet. (UP) : чтение настроек из энергонезависимой памяти Arduino. При нажатии кнопки ВВЕРХ настройки из памяти PLC перейдут в оперативную.
  • 13 SaveSet. (UP) : запись настроек в энергонезависимую память Arduino. При нажатии кнопки ВВЕРХ текущие параметры запишутся в постоянную память PLC. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу.
  • 14 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кОм
  • сигнал от термопреобразователя MAX6675 к Arduino : SCK - цифровой пин 2, CS - цифровой пин 3, SO - цифровой пин 4. Питание к любым свободным пинам G и V цифровых входов
  • входы от термопары типа К - к клеммам + и - на термопреобразователе MAX6675

Клапан

  • реле открытия клапана : 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 шт
  • термопреобразователь MAX6675 (datasheets) - 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. Скачать.
  • max6675.h - библиотека работы с преобразователем MAX6675 для термопар типа К. Скачать.

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