ПИД регулятор – один из самых распространенных автоматических регуляторов. Он настолько универсален, что применяется практически везде, где нужно автоматическое управление.
Применение ПИД регулятора
- Температурные системы: специальные печи, холодильники, инкубаторы, паяльники.
- Системы поддержания частоты оборотов мотора для станков.
- Балансирующие устройства: гироскутеры, сигвеи, левитирующие магнитные платформы.
- 3D принтеры, ИК паяльные станции.
- Квадрокоптеры и самолеты с автопилотом.
Почему выбирают ПИД регулятор?
Хотя существуют и другие регуляторы, превосходящие ПИД по адаптивности к управляемой системе и стабильности (например, линейно квадратичный), настройка ПИД регулятора относительно проста и понятна. ПИД регулятор универсален для почти любого процесса.
Преимущества использования ПИД регулятора
- Простая настройка
- Универсальность
- Применяется в широком спектре устройств
- Устойчивость к изменениям в управляемой системе
Как работает ПИД регулятор
ПИД регулятор состоит из трех основных компонентов:
- P (пропорциональный) – реагирует на текущую ошибку между желаемым и фактическим значением, пропорционально этой ошибке.
- I (интегральный) – учитывает накопленные ошибки во времени, чтобы компенсировать постоянное отклонение от желаемого значения.
- D (дифференциальный) – предсказывает изменение ошибки в будущем на основе ее текущей скорости изменения.
Пример применения ПИД регулятора в автопилоте квадрокоптера
- P компонент реагирует на текущее отклонение от заданной траектории.
- I компонент корректирует ошибки, накопленные со временем, что помогает коптеру следовать по заданной траектории без постоянных отклонений.
- D компонент предсказывает будущее изменение ошибки и помогает предотвращать перереагирование.
Таким образом, ПИД регулятор обеспечивает стабильное и точное управление, что делает его популярным выбором для самых различных устройств, требующих автоматического регулирования.
Перед переходом к регулятору PID очень важно понять и запомнить несколько основных понятий, составляющих автоматическую систему. Прежде всего, это регулятор, который контролирует все и находится в центре системы. Регулятор в данном понимании является математическим алгоритмом или частью программы, работающей на микроконтроллере. Регулятор, как алгоритм, работает с обычными числами. Регулируемый объект — это устройство, которое мы контролируем, например, плита или двигатель. Для этого у нас есть устройство управления, например, диммируемый свет или обмоточный двигатель. Устройство управления получает управляющий сигнал от регулятора, то есть определенное число. Это может быть цикл работы сигнала ШИМ от 0 до 255, или это может быть угол поворота сервопривода от 0 до 180, потому что регулятору не важно, что он управляет. В контролируемом объекте у нас есть датчик, от которого регулятор получает управляемую переменную, то есть текущий сигнал от датчика. Это обратная связь, которая позволяет системе точно поддерживать заданное значение. В случае с плитой это температура, а с двигателем — скорость вращения. И, наконец, регулятор получает уставку, то есть число, до которого он должен привести текущее значение от датчика. Уставку можно установить любым образом: с помощью ручки, слайдера, энкодера, кнопок, даже через SMS или голосовой ввод. Регулятору все равно, это просто число. Задача регулятора — сравнить текущее значение с уставкой и вывести управляющий сигнал на устройство управления. В программе это будет выглядеть примерно так: регулятор получил уставку, регулятор получил значение от датчика, регулятор выполнил вычисления и выдал нам управляющий сигнал, снова число. Если это ШИМ, мы отправляем его через функцию генерации ШИМ. Еще один важный момент — регулятор должен делать вычисления и применять управляющий сигнал через одинаковые промежутки времени, с постоянным периодом или частотой. Эта частота называется частотой дискретизации системы, а период обозначается как dt, как и период интегрирования.
Пропорциональная составляющая
Пропорциональная составляющая представляет собой разность текущего значения с датчика и установки.
P = setpoint - input
Данная разность называется ошибкой регулирования, то есть насколько далеко находится система от заданного значения. Чем больше ошибка, тем больше будет управляющий сигнал и тем быстрее система будет приближаться к заданному значению. Коэффициент kP
здесь играет роль усиления ошибки и настраивается вручную. Когда система достигает заданного значения, ошибка становится равной нулю, и управляющий сигнал также равен нулю. П регулятор никогда не сможет привести к систему без ошибок. Пропорциональная составляющая является основной в ПИД-регуляторе и справляется достаточно хорошо даже самостоятельно. Она исправляет текущую ошибку.
Интегральная составляющая
Интегральная составляющая просто суммирует ошибку (разность текущего и заданного значения), умноженную на период дискретизации системы, то есть на время, прошедшее с предыдущего расчёта dt
. Буквально, это интеграл от ошибки по времени.
I = I + (setpoint - input) * dt
В регуляторе это умножается на коэффициент kI
, который настраивает резкость интегральной составляющей. В интегральной составляющей ошибка накапливается, что позволяет регулятору со временем полностью её устранить и привести систему к заданному значению с максимальной точностью. Интегральная составляющая исправляет прошлые накопившиеся ошибки.
Дифференциальная составляющая
Дифференциальная составляющая представляет собой разность текущей и предыдущей ошибки, деленную на время между измерениями (dt
). Это практически производная от ошибки по времени.
err = setpoint - input
D = (err - prevErr) / dt
prevErr = err
Дифференциальная составляющая реагирует на изменение сигнала с датчика, и чем сильнее изменение, тем большее значение добавляется к общей сумме. D позволяет скорректировать резкие изменения в системе и, при правильной настройке, предотвратить перерегулирование и уменьшить колебания. Коэффициент kD
позволяет настроить резкость данной компенсации. Дифференциальная составляющая особенно важна для быстрых систем с резкими изменениями, таких как квадрокоптер или шпиндель станка под переменной нагрузкой. Она исправляет возможные будущие ошибки, анализируя скорость изменения.
Настройка регулятора
Для настройки регулятора необходимо изменять коэффициенты:
- Коэффициент пропорциональной составляющей (kP)
- Коэффициент интегральной составляющей (kI)
- Коэффициент дифференциальной составляющей (kD)
### I составляющая
Интегральная составляющая просто суммирует в саму себя ту же самую ошибку, разность текущего и заданного значения, умноженную на период дискретизации системы, то есть на время, прошедшее с предыдущего расчёта dt – фактически берёт интеграл от ошибки по времени.
I = I + (setpoint - input) * dt
В самом регуляторе это ещё умножается на коэффициент kI, которым настраивается резкость данной составляющей. В интегральной составляющей буквально копится ошибка, что позволяет регулятору с течением времени полностью её устранить, то есть привести систему ровно к заданному значению с максимальной точностью. I составляющая исправляет прошлые, накопившиеся ошибки.
D составляющая
Дифференциальная составляющая представляет собой разность текущей и предыдущей ошибки, поделенную на время между измерениями, то есть на ту же dt, которая общий период регулятора. Иными словами – это производная от ошибки по времени.
err = setpoint - input D = (err - prevErr) / dt prevErr = err
Фактически D составляющая реагирует на изменение сигнала с датчика, и чем сильнее происходит это изменение, тем большее значение прибавляется к общей сумме. Иными словами, D позволяет компенсировать резкие изменения в системе и при правильной настройке предотвратить сильное перерегулирование и уменьшить раскачку. Коэффициент д позволяет настроить вес, или резкость данной компенсации, как и остальные коэффициенты регулируют свои составляющие. D составляющая в первую очередь нужна для быстрых систем, то есть для систем с резкими изменениями, такие как квадрокоптер или шпиндель станка под переменной нагрузкой. D составляющая исправляет возможные будущие ошибки, анализируя скорость.
## Процесс стабилизации при изменении коэффициентов
Вот так выглядит процесс стабилизации при изменении коэффициентов:
Настройка регулятора – дело не очень простое.
Начальные коэффициенты для подбора можно получить по следующему алгоритму:
сначала выставляем все коэффициенты в 0\.
Плавно увеличиваем kP до появления незатухающих колебаний.
Значение kP, при котором они появились, запишем и обозначим как kP1\.
Далее замеряем период колебаний системы в секундах, обозначим как T.
Итоговые коэффициенты получим так:
Например, незатухающие колебания появились при kP 20, период колебаний составил 3 секунды.
Период dt в системе будет 50 мс (0.05 с). Считаем:
На полученных коэффициентах должны более-менее работать большинство систем, но не все.
Также можно воспользоваться автоматическим тюнером коэффициентов, например два разных алгоритма встроены в библиотеку GyverPID.
## Реализация на C++
Соединяя все рассмотренные выше уравнения, получим:
Это готовая функция, которая принимает значение с датчика, установку, три коэффициента и время, а также ограничение выхода с регулятора. Как пользоваться этой функцией: функция должна вызываться с некоторым периодом, причем длительность этого периода нужно будет передать в функцию в секундах. Если попроще, можно использовать задержку. Но делать так не рекомендуется, лучше сделать таймер на миллис и работать с ним. Функция возвращает управляющий сигнал, то есть можно подать его например как ШИМ. Период dt имеет такой смысл: чем инерционнее у нас система, тем реже можно вычислять пид. Например для обогрева комнаты период можно поставить 1 секунду или больше, а для контроля за оборотами двигателя надо будет поставить пару десятков миллисекунд, то есть около сотни раз в секунду.
## Библиотеки
https://youtube.com/watch?v=rIbWnB26dp0%3Fenablejsapi%3D1%26autoplay%3D0%26cc_load_policy%3D0%26cc_lang_pref%3D%26iv_load_policy%3D1%26loop%3D0%26modestbranding%3D0%26rel%3D1%26fs%3D1%26playsinline%3D0%26autohide%3D2%26theme%3Ddark%26color%3Dred%26controls%3D1%26
## Полезные страницы
9 950 ₽
от 10шт. - 8 955 ₽
от 50шт. - 8 458 ₽
Ремонтный центр (3 в 1)
Паяльная станция ELEMENT 985D (3 в 1) двухканальная (паяльник + термофен + сепаратор для ремонта дисплеев).
Станция для разделения ЖК-экранов и особенно подходит для разделения экранов мобильных телефонов.
Индикация температуры паяльника и фена цифровая.
Диапазон рабочих температур паяльника 200-480С.
Диапазон рабочих температур фена 100-480С.
Регулировка рабочий температуры паяльника и фена - кнопочное. В комплекте 4 насадки для фена.
Антистатическое исполнение станции.
### Паяльная станция ELEMENT 985D
Применяется для демонтажа и пайки различных видов компонентов в корпусах, таких, как SOIC, PLCC, QFP, BGA и т.д.
Сочетает в себе современный дизайн и небольшой размер, что позволяет экономить рабочее пространство.
PID замкнутая система датчиков, микроконтроллер для цифрового отображения данных и контроля температуры, большая стартовая мощность, быстрый разогрев, стабильность температуры с точностью до 1°C, на которую не влияет объем выдуваемого воздуха. Все эти преимущества делают пайку и демонтаж базопасными для таких чувствительных компонентов, как SOIC, PLCC, QFP, BFA и т.д.
Температура достигает установленного уровня всего за 5 — 7 секунд.
Уникальная функция неактивного состояния позволяет экономить энергию. Когда паяльник кладется на держатель, система приводится в резервное состояние готовности. Как только фен снимается с держателя, система возвращается к установленным настройкам.
Уникальная система охлаждения. Продолжительный продув воздухом после выключения прибора продлевает срок его эксплуатации. Когда температура воздушного потока опускается до 50°C, питание отключается.
Круговая крыльчатка обеспечивает поступление большого воздушного потока при меньшем шуме.