- Вход или регистрация
- Применение ПИД регулятора
- Преимущества ПИД регулятора
- Ключевые особенности
- Заключение
- Понятия автоматической системы
- Регулятор
- Объект управления
- Управляющий сигнал
- Обратная связь
- Установка
- Регулятор в действии
- Программный алгоритм
- Частота дискретизации
- Видео
- Реализация на C++
- ПИД регулятор
- Использование функции
- Библиотеки
- Настройка коэффициентов
- Под капотом у ПИД регулятора
- P составляющая
- Регулятор PID: принцип работы и компоненты
- P составляющая
- I составляющая
- D составляющая
Вход или регистрация
Имена участников (разделяйте запятой).
ПИД регулятор – один из самых распространенных автоматических регуляторов. Он настолько универсален, что применяется практически везде, где нужно автоматическое управление.
Применение ПИД регулятора
- Температурный контроль: специальные печи, холодильники, инкубаторы, паяльники.
- Управление частотой оборотов мотора, например для станков.
- Балансировочные устройства: гироскутеры, сигвеи, левитирующие магнитные платформы.
- Дроны, квадрокоптеры и самолеты с автопилотом.
Преимущества ПИД регулятора
Помимо универсальности, ПИД регулятор отличается простотой настройки и адаптивностью к различным управляемым системам. В отличие от других регуляторов, требующих сложного синтеза, настройка ПИД регулятора доступна и понятна для многих пользователей.
Ключевые особенности
- Простота настройки
- Универсальность
- Адаптивность
Заключение
ПИД регулятор – незаменимый инструмент для автоматического управления в различных областях. Его преимущества в простоте настройки и широком спектре применения делают его популярным выбором для множества устройств и систем управления.
Понятия автоматической системы
Прежде чем переходить непосредственно к пиду, очень важно понять и запомнить несколько базовых понятий, из которых состоит автоматическая система. В первую очередь это регулятор, который всем заправляет и находится в центре системы.
Регулятор
Регулятор в данном понимании – математический алгоритм или часть программы, которая крутится на микроконтроллере. Регулятор, как алгоритм, работает с обычными числами.
Объект управления
Объект управления – это девайс, которым мы управляем, например печка или мотор. У нас есть управляющее устройство, например диммируемый тен или драйвер мотора.
Управляющий сигнал
Управляющее устройство получает от регулятора управляющий сигнал, то есть конкретное число. Управляющий сигнал может быть заполнением шим сигнала, от 0 до 255, или углом поворота сервомашинки от 0 до 180.
Обратная связь
В объекте управления у нас стоит датчик, с которого регулятор получает управляемую величину, то есть текущий сигнал с датчика. Это – обратная связь, которая и даёт возможность системе точно поддержать заданное значение.
Установка
Регулятор получает установку (уставку), то есть число, к которому он должен привести текущее значение с датчика. Установка может задаваться различными способами: крутилкой, ползунком, кнопками и т.д.
Регулятор в действии
Задача регулятора состоит в том, чтобы сравнивать текущее значение с установкой и выдавать управляющий сигнал на управляющее устройство.
Программный алгоритм
В программе это будет выглядеть условно так: регулятор получил установку, регулятор получил значение с датчика, регулятор выполнил вычисления и выдал управляющий сигнал.
Частота дискретизации
Регулятор должен делать расчёты и применять управляющий сигнал через равные промежутки времени, с равным периодом или частотой. Эта частота называется частотой дискретизации системы, период обозначается как dt.
Видео
Ссылка на видео
Реализация на C++
Соединяя все рассмотренные выше уравнения, получим:
ПИД регулятор
Это готовая функция, которая принимает значение с датчика, установку, три коэффициента и время, а также ограничение выхода с регулятора.
Использование функции
Функция должна вызываться с некоторым периодом, причем длительность этого периода нужно будет передать в функцию в секундах. Если попроще, можно использовать задержку. Но делать так не рекомендуется, лучше сделать таймер на миллис и работать с ним.
Функция возвращает управляющий сигнал, то есть можно подать его например как ШИМ. Период dt имеет такой смысл: чем инерционнее у нас система, тем реже можно вычислять ПИД. Например для обогрева комнаты период можно поставить 1 секунду или больше, а для контроля за оборотами двигателя надо будет поставить пару десятков миллисекунд, то есть около сотни раз в секунду.
Библиотеки
Для настройки регулятора нужно варьировать коэффициенты. Вот так выглядит процесс стабилизации при изменении коэффициентов.
Настройка коэффициентов
Настройка регулятора – дело не очень простое. Начальные коэффициенты для подбора можно получить по следующему алгоритму:
Выставляем все коэффициенты в 0.
Плавно увеличиваем kP до появления незатухающих колебаний. Значение kP, при котором они появились, запишем и обозначим как kP1.
Замеряем период колебаний системы в секундах, обозначим как T.
Итоговые коэффициенты получим так:
kI = kP / T,
kD = kP1 * T / 100
На полученных коэффициентах должны более-менее работать большинство систем, но не все. Также можно воспользоваться автоматическим тюнером коэффициентов, например два разных алгоритма встроены в библиотеку GyverPID.
Под капотом у ПИД регулятора
ПИД регулятор состоит из трёх составляющих: пропорциональной P, интегрирующей I и дифференциирующей D, формируется просто как сумма трёх значений, умноженных каждая на свой коэффициент. Эта сумма после вычислений становится управляющим сигналом, который подаётся на управляющее устройство, обозначим его как out.
out = P * kP + I * kI + D * kD
kP, kI и kD это и есть те самые коэффициенты, которые нужно настроить для работы ПИДа. Значения тут могут быть самые разные, от 0.001 то десятков и тысяч, это зависит от конкретной системы. Тут есть ещё один момент: любой коэффициент может быть равен нулю, и в таком случае обнуляется вся его компонента. То есть регулятор можно превратить в П, ПИ, ПД, и прочие сочетания. Разные системы требуют разного подхода, именно поэтому ПИД регулятор такой универсальный.
P составляющая
Пропорциональная составляющая предоставляет собой разность текущего значения с датчика и установки.
P = setpoint — input
Регулятор PID: принцип работы и компоненты
Данная разность называется ошибкой регулирования, то есть насколько далеко находится система от заданного значения. Получается чем больше ошибка, тем больше будет управляющий сигнал и тем быстрее система будет приводить управляемую величину к заданному значению.
Коэффициент kP тут влияет роль усиления ошибки и настраивается вручную. Но в то же время, если система пришла к заданной величине, ошибка станет равной нулю, и управляющий сигнал тоже! Другими словами, регулятор никогда не сможет привести к заданному значению, всегда будет некая ошибка.
P составляющая
P составляющая является основной в ПИД регуляторе и так сказать тянет самую большую лямку, регулятор может неплохо работать только лишь на ней одной. P составляющая исправляет ошибку в текущий момент времени.
I составляющая
Интегральная составляющая просто суммирует в саму себя ту же самую ошибку, разность текущего и заданного значения, умноженную на период дискретизации системы, то есть на время, прошедшее с предыдущего расчёта dt – фактически берёт интеграл от ошибки по времени.
I = I + (setpoint - input) * dt
В самом регуляторе это ещё умножается на коэффициент kI, которым настраивается резкость данной составляющей. В интегральной составляющей буквально копится ошибка, что позволяет регулятору с течением времени полностью её устранить, то есть привести систему ровно к заданному значению с максимальной точностью. I составляющая исправляет прошлые, накопившиеся ошибки.
D составляющая
Дифференциальная составляющая представляет собой разность текущей и предыдущей ошибки, поделенную на время между измерениями, то есть на ту же dt, которая общий период регулятора. Иными словами – это производная от ошибки по времени.
err = setpoint - input
D = (err - prevErr) / dt
prevErr = err
Фактически D составляющая реагирует на изменение сигнала с датчика, и чем сильнее происходит это изменение, тем большее значение прибавляется к общей сумме. Иными словами, D позволяет компенсировать резкие изменения в системе и при правильной настройке предотвратить сильное перерегулирование и уменьшить раскачку.
Коэффициент д позволяет настроить вес, или резкость данной компенсации, как и остальные коэффициенты регулируют свои составляющие. D составляющая в первую очередь нужна для быстрых систем, то есть для систем с резкими изменениями, такие как квадрокоптер или шпиндель станка под переменной нагрузкой. D составляющая исправляет возможные будущие ошибки, анализируя скорость.