Full-Chip.net

Все об электронике, секреты ремонта
сборки компьютеров и периферии !!!

» » ПИД регулятор для нагрева(охлаждения) UPD
Статистика
94617 (+1)
Всего пользователей
1
Сейчас на сайте
85 (+0)
Всего статей
1632 (+0)
Всего комментариев
Реклама


ПИД регулятор для нагрева(охлаждения) UPD 

Появилась необходимость создать ПИД регулятор для охладителя на базе модуля Пельтье. Для удобства был разработан достаточно универсальный ПИД регулятор который способен работать как в режиме охлаждения так и в режиме нагрева. Для реализации был выбран микроконтроллер AVR Atmega328P (просто он есть в Arduino UNO). Все собрано на макетной плате, программа написана в AVRStudio4.

 

ПИД регулятор для нагрева(охлаждения) UPD

 

ПИД регулятор для нагрева(охлаждения) UPD

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

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

ПИД регулятор для нагрева(охлаждения) UPD 

Так выглядит плата управления с обвесом.

Описание работы:

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

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


Главный экран.

ПИД регулятор для нагрева(охлаждения) UPD 

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

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

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

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

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


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

ПИД регулятор для нагрева(охлаждения) UPD

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

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

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

ПИД регулятор для нагрева(охлаждения) UPD 

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

ПИД регулятор для нагрева(охлаждения) UPD

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

ПИД регулятор для нагрева(охлаждения) UPD

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

ПИД регулятор для нагрева(охлаждения) UPD

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

ПИД регулятор для нагрева(охлаждения) UPD

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

- При выборе в этом пункте «ДА», уставка наращивается пошагово (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


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


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

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

 

ПИД регулятор для нагрева(охлаждения) UPD

ПИД регулятор для нагрева(охлаждения) UPD

 

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

 

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

 

ПИД регулятор для нагрева(охлаждения) UPD


Ограничения:

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

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

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

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

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

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

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

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


 

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

 

 

ПИД регулятор для нагрева(охлаждения) UPD

 

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

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

 

 

ПИД регулятор для нагрева(охлаждения) UPD

 

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

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

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

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

 

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

 

ПИД регулятор для нагрева(охлаждения) UPD

 

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

 

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

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

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

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

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

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

6. Ввести функцию "автостарт" при подаче питания (отдельным пунктом меню)
ПИД регулятор для нагрева(охлаждения) UPD
Прошивка + еепром для дисплеев с русскими символамиpid_v_1_1_ru.rar [6,7 Kb] (cкачиваний: 1137)
Прошивка + еепром для дисплеев с английскими символами pid_v_1_1_en.rar [6,54 Kb] (cкачиваний: 1047)
K:15
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Вопрос:
b+b+b=bbb , x+x+x=xxx, c+c+c+a=?
Ответ:*
Введите код: *
Кликните на изображение чтобы обновить код, если он неразборчив
Ответить Цитата
  • max

  • 13 декабря 2020 11:44
  • Группа: Администраторы
  • Регистрация: 5.03.2012
  • Статус: Пользователь offline
  • комментария
  • публикаций
    • Нравится
    • 1
Гость Юрий,
критиковать с дивана может каждый, он не чудом, а работает и при чем стабильно, раз это лажа? покажи как нужно, я тебе дам доступ написать статью, и мы все посмотрим кто чего напутал и у кого работает.
Ответить Цитата
  • Гость Юрий

  • 13 декабря 2020 11:37
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 0
В данной статье ПИД регулятор сделан через одно место, это не классика. Если он чудом работает, то теорию настройки нельзя к нему применять.
Косяки - интегральная составляющая- должен быть коэфф И * на разность текущей и прошлой ошибки, а у автора это почему-то П коэффициент . Тоесть они перепутаны местами. Сомневаюсь что ШИМ тоже адекватный
Ответить Цитата
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 0
Цитата: Yaan
Пожалуйста, поделитесь скетчем. Было бы очень полезно
Ответить Цитата
  • Группа: Посетители
  • Регистрация: 22.10.2019
  • Статус: Пользователь offline
  • комментарий
  • публикаций
    • Нравится
    • 0
Поделитесь пожалуйста скечем. Взамен могу поделиться отрассированной платой.
Ответить Цитата
  • Yaan

  • 25 июля 2019 11:27
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 0
Пожалуйста, поделитесь скетчем. Было бы очень полезно
Ответить Цитата
  • Группа: Посетители
  • Регистрация: 4.04.2019
  • Статус: Пользователь offline
  • комментарий
  • публикаций
    • Нравится
    • 2
а где скетч и всё такое?
Ответить Цитата
  • Sergo

  • 29 января 2019 06:34
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 1
Сам скеч омень бы помог людчм. Модет поделитесь?
Ответить Цитата
  • irakli

  • 13 января 2019 10:26
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 3
Здравствуйте! Поделитесь, пожалуйста скечем, чтоб можно было под себя поправить.
Ответить Цитата
  • Группа: Администраторы
  • Регистрация: 2.07.2012
  • Статус: Пользователь offline
  • комментариев
  • публикации
    • Нравится
    • 0
Цитата: vladomir
Также проблема, показывает температуру одинаковую на верхней и нижней строке,реагирует на температуру только верхний датчик .

Цитата: vladomir
Также проблема, показывает температуру одинаковую на верхней и нижней строке,реагирует на температуру только верхний датчик .

В прошивке с английской версией работает нормально


Поправил и для прошивки под дисплеи с русскими символами
Ответить Цитата
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 0
Также проблема, показывает температуру одинаковую на верхней и нижней строке,реагирует на температуру только верхний датчик .

Цитата: vladomir
Также проблема, показывает температуру одинаковую на верхней и нижней строке,реагирует на температуру только верхний датчик .

В прошивке с английской версией работает нормально
Ответить Цитата
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 0
callous, Спасибо большое! Попробую.
Ответить Цитата
  • callous

  • 17 января 2017 20:00
  • Группа: Администраторы
  • Регистрация: 2.07.2012
  • Статус: Пользователь offline
  • комментариев
  • публикации
    • Нравится
    • 0
Денис,
В статье добавил прошивку для дисплеев не поддерживающих русские символы. Отображение температур тоже поправил.
Ответить Цитата
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 1
Собрал данный регулятор, показывает только одну температуру :( в верхнем и нижнем поле одинаково.. И все надписи на русском, а доступные дисплеи без русского языка, можно под них поправить?
Ответить Цитата
  • callous

  • 11 января 2017 18:42
  • Группа: Администраторы
  • Регистрация: 2.07.2012
  • Статус: Пользователь offline
  • комментариев
  • публикации
    • Нравится
    • 0
Михаил,
Возможно, если добавить диодный мост и тиристор, но управлять такой нагрузкой по ПИД нет никакого смысла из-за большой инерционности системы. Здесь правильно использовать гистерезисное управление.
Ответить Цитата
  • Группа: Гости
  • Регистрация: --
  • Статус:
  • комментариев
  • публикаций
    • Нравится
    • 0
День добрый.
Спасибо за статью, очень познавательно.

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

Как в моем случае сделать эффективный контроль с помощью PID?