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





