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

Данная система управления состоит из пропорционально-интегрально-дифференциального (ПИД) регулятора и самодельного температурного преобразователя термосопротивления 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)
заданная температура в º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 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), не заходя в настройки. В режиме настроек ими меняются значения параметров. В ручном режиме эти кнопки открывают или закрывают клапан управления.

Кнопка ВЫХОД

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

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

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

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

ИНДИКАЦИЯ LCD

В автоматическом режиме :

В режиме настроек (нажата кнопка НАСТРОЙКИ) :

В ручном режиме (нажата кнопка MANUAL) :

ПОДКЛЮЧЕНИЕ

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

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

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

Плата Arduino и Sensor-shield

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

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

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