/

Пид терморегулятор на ардуино

PID РЕГУЛЯТОР НА ARDUINO

БИБЛИОТЕКА GYVERPID

GyverPID v1.3

Библиотека классического PID регулятора для Arduino

  • Время одного расчёта около 50 мкс
  • Режим работы по величине или по её изменению (для интегрирующих процессов)
  • На выбор целочисленная или float модель вычисления
  • Возвращает результат по встроенному таймеру или в ручном режиме

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Схема устройства, для индикации состояния используется дисплей ЖКИ 16х2, 4 кнопки для управления и настройки параметров, два датчика температуры DS18B20 один для измерения температуры объекта управления, второй для измерения температуры окружающей среды.

Регулировка нагрева/охлаждения осуществляется с помощью ШИМ сигнала, в данном случае применяется 8-ми битный таймер по этому кол-во шагов регулирования ограничено в пределах 0-255, это накладывает некоторые ограничения на точность работы регулятора, а также настройки коэффициентов звеньев управления.

Включение регулятора происходит сразу после подачи питания.

Изменение уставки можно производить на основном экране, во время работы кнопками «UP» и «DOWN» уставка будет изменятся медленно (из-за опроса двух датчиков DS18B20). Предел изменения уставки от -55 до +125 градусов с шагом 0,1 градус.

— Вверху слева отображается температура объекта (об=)

— Внизу слева отображается температура на улице (ул=)

— Вверху справа отображается уставка (в данном случае 0.0 С°)

— Внизу справа отображается выход ШИМ в процентах от 0 до 100% (выходная мощность)

Для перехода в режим настройки параметров зажать кнопку «RIGHT». Настройки листаются по кругу с выходом на основной экран при помощи кнопок «RIGHT» и «LEFT».

1.Первый пункт настроек «Настройка режима»

— ПИД регулятор может работать как в режиме охлаждения, так и в режиме нагрева.

Переключения между режимами по нажатию кнопок «UP» и «DOWN».

2. Второй пункт настройка уставки температуры

3. Третий пункт настроек «Настройка коэф P»

4. Четвертый пункт настроек «Настройка коэф I»

5. Пятый пункт настроек «Настройка коэф D»

6. Шестой пункт «Плавный разгон»

— При выборе в этом пункте «НЕТ», ПИД регулятор работает в нормальном для себя режиме, то есть быстрый выход на уставку и ее удержание.

Читайте также:  Чем клеить вспененный полиэтилен между собой

— При выборе в этом пункте «ДА», уставка наращивается пошагово (20 шагов, по 1 мин).

При выходе на уставку ПИД регулятор работает в штатном режиме

ПИД регулятор необходимо настраивать с учетом пунка «Плавный разгон»

— если плавного разгона нет, то регулятор настраивается в обычном режиме.

— если плавный разгон есть, то регулятор необходимо настраивать на малый шаг. То есть при уставке в -3,0 С° и текущей температуре +23,3 С° шаг будет составлять (23,3 С° + 3,0 С°)/20=1,315 С°. При таком шаге рекомендуется настраивать регулятор задав ему уставку 21 С° при текущей температуре 23,3 С° (при настройке на мелком шаге, в режиме плавного разгона регулятор будет более мягко работать, колебания будут меньше).

Коротко по реализации самого ПИД в программе микроконтроллера:

Режим быстрого охлаждения (модуль Пельтье) Tуст=-2 С o , P=25, I=3.5, D=0.5

Режим быстрого охлаждения (модуль Пельтье) Tуст=-2 С o , P=30, I=4.5, D=3

Режим быстрого охлаждения (модуль Пельтье) Tуст=-2 С o , P=20, I=5, D=4

Режим быстрого нагрева (модуль Пельтье) Tуст=50 С o , P=20, I=2, D=20

Режим быстрого нагрева (нихромовая спираль) Tуст=50 С o , P=40, I=0.5, D=0

нихромовый нагреватель, накрывается сверку коробкой и меряется температура воздуха, выглядит нагреватель так:

Режим плавного охлаждения (модуль Пельтье) Tуст=-2 С o , P=25, I=3.5, D=0.5

Для начала перед настройкой надо разобраться в способе реализации регулирования. Поскольку у нас используется для расчета управляющего воздействия разностная схема, то рассмотрим ее подробней.

E(n) = T(n) — T0(n) – невязка, рассогласование системы.

Кp,Кi,Кd—коэффициенты усиления пропорциональной, интегрирующей и дифференцирующей составляющих регулятора соответственно.

n — номер выборки.

U(n-1) — предыдущее воздействие.

Рассмотрим воздействие каждой из 3-х составляющих отдельно.

Исходя из формулы, можно понять, что P составляющая будет иметь большое влияние в системе с быстрым изменением невязки. Чем больше текущая невязка отличается от прошлой, тем больше влияние P на формирование воздействия. В первый момент времени когда предыдущей невязки еще нет, то есть E(n-1)=0, P составляющая будет вырождаться к виду P=Kp*E(n) и соответственно будет формировать первый толчок в системе.

I составляющая зависит от текущей невязки, и предназначена для убирания остаточного рассогласования в системе.

D составляющая должна сгладить выбросы регулятора, особенно с учетом его запаздывания при реакции на управляющее воздействие. (поскольку в данном случае регулировки времени выборки нет, и время выборки жесткое, то запаздывание в системе будет всегда, к тому же это в многом зависит от конкретной системы).

Читайте также:  Стиральная машина zanussi easyiron

Сначала настраивается Kp при этом Ki=0 и Kd=0

Пропорциональный регулятор всегда будет удерживать температуру ниже заданной (чем меньше Кp тем больше будет рассогласование в системе ).

Очень важно понимать физические ограничения регулятора, поскольку у нас используется ШИМ управление, с скважностью от 0 до 255, то колебания будут наблюдаться всегда, поскольку у нас ограничен размер шага регулировки, но в установившемся режиме колебания будут не значительны.

Тзад — заданная температура (уставка)

Здесь нужно понимать допускается ли в системе, перерегулирования и какая скорость выхода на уставку необходима.

1 – коэффициент Кp слишком велико в системе наблюдаются колебания.

3 – коэффициент Кp близок к оптимальному, если допускается перерегулирование.

4 – коэффициент Кp близок к оптимальному, если не допускается перерегулирование.

5 – коэффициент Кp слишком мал, выход на уставку затянут.

После настройки Kp при использовании Kd, будем настраивать его при этом Ki =0, если Kd использоваться не будет, переходим к настройке Ki.

Kd постепенно увеличивается, для того чтобы получить переходную характеристику вида 2.

После настройки Kd переходим к настройке Ki.

После настройки Kp и Kd получается характеристика 1, при этом видно что удерживаемая температура ниже заданной. Для минимизации конечной невязки применяется И составляющая.

2 – коэффициент Ki слишком мал, выход на уставку затянут.

3 – коэффициент Ki близок к оптимальному.

4 – коэффициент Ki слишком велик, в системе наблюдается перерегулирование.

И в конце несколько картинок с разными вариантами настройки ПИД:

ВАЖНО: В данном случае графики приведены для режима нагрев, все рассуждения применимы к режиму охлаждения, при этом графики следует отобразить зеркально по вертикали относительно линии Т зад .

В новой версии предполагается добавить:

1. Передачу данных по USART (возможность удаленно мониторить ПИД + настраивать уставку)

2. Сделать настраиваемое кол-во шагов.

3. Сделать настраиваемый шаг по времени (от 1 мин до 60 мин)

4. Использовать таймер/счетчик 0x03FF (повысит точность регулирования в 4 раза)

5. Сделать страрт/стоп по нажатию кнопок "UP"/"DOWN" на главном экране

Применение термостата с ПИД управлением не ограничено птицеводством, КО , проект может использоваться пивоварами для поддержания температуры сусла, винокурами в перегонных аппаратах, может просто греть воду в бойлере до приятной температуры, после небольших изменений, в самодельных паяльных станциях, муфельных печах, кароче везде где требуется контроль температуры с высокой точность. Принцип работы и отличие от банального термостата с гистерезисом показан в видео:

Читайте также:  Коромысло для фидера своими руками

Ниже схемы подключения и исходные коды проекта.

О датчиках температуры:

Исходные коды проекта написаны нескольких типов датчиков:

  • TMP102 — датчик температуры с интерфейсом I2C, подробнее про работу с датчиком написано тут. Возможно датчик потребует корректировку температуры.
  • LM35 — не дорогой и распространенный, достаточно точный аналоговый датчик температуры, подробнее про него тут.
  • MCP9808 — высокоточный датчик температуры с интерфейсом I2C. Оптимальный выбор.

Имея навыки программирования ардуино, изменить код под другие датчики температуры труда не составит.

О ЖКИ индикаторе:

Решил не усложнять и взял стандартный текстовый экран WH1602A, про подключение подобных экранов к ардуино уже написано тут. Подключается напрямую, без переходников на I2C. Указанные в проекте номера выходов для подключения ЖКИ совпадают с китайским LCD Keypad Shield, я его использовал на стадии отладки.

Органы управления:

Настройка температуры терморегулятора осуществляется с помощью энкодера, удобно использовать модуль KY-040 по китайской номенклатуре 🙂

О реле:

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

Правильным решением будет использование твердотельного реле, либо модуль с симистором (что по сути является одним и тем же) на необходимый ток. Например SSR-25DA на 25А, если мощность нагревателя в районе нескольких киловатт, OMRON G3MB 202P держит до 2А или 440Вт.

У меня они в наличии не оказались, пришлось закупить в местном магазине радиодеталей оптосимистор MOC3063 для гальванической развязки и «детекции нуля» с симистором BT137x-800 на 8А и собирать твердотельное реле на макетке. Схема взята из даташита на MOC3063.

Схема подключения:

Возможно на этой будет понятней.

Схема подключения актуальная для датчиков с интерфейсом I2C (MCP9808, TMP102), в случаи использования аналогового LM35, его выход подключается к аналоговому входу А5.

Оцените статью
Добавить комментарий