ПИД регулятор, ПИД регулирование, PID control, автоматическое регулирование, регулятор скорости, регуляторы, код ПИД исходники AVR PIC 8051 PID примеры.

PIDcontrol.narod.ru                 Автор:  avr123.nm.ru

В различных системах автоматического регулирования, в электроприводе, в промышленности, в робототехнике -  применяют ПИД регулирование управляющего воздействия (УВ) на объект регулирования (ОР). Например управляющим воздействием может быть величина силы воздействующий на объект положение которого (координату, расстояние до чего либо) нужно отрегулировать. УВ может быть и величина PWM  ШИM питания электродвигателя скорость или момент которого нужно регулировать. УВ ПИД регулятора состоит из суммы трех слагаемых:
 
П - это УВ пропорциональное величине ошибки 

И - это УВ пропорциональное сумме прошлых ошибок
Д - это УВ пропорциональное скорости изменения ошибки

Ошибка (Err) - это разность между измеренным реальным параметром (РП) и требуемым параметром (ТП) объекта регулирования. ТП задается системе регулирования извне - например "переместить объект регулирования (ОР) в точку 20", если сейчас реально измеренное положение (РП) объекта регулирования показывает что он находится в точке 15 то ошибка  составляет:

Err = 20 - 15 = 5

Реальное значение регулируемого параметра (РП) измеряют непосредственно (например при регулировании напряжения или тока можно с помощью АЦП измерить регулируемое напряжение или  напряжение на резисторе через который протекает интересующий нас ток) или вычисляют по другим данным - например скорость вращения вала мотора или колеса можно определить по времени между изменениями сигналов с датчика или энкодера вращения.

Важно чтобы частота поступления информации о РП была достаточной для обеспечения заданной точности регулирования.

Настраивают ПИД регулятор задавая индивидуальные для каждого из трех компонентов коэффициенты пропорциональности - обычно их обозначают так:

Kp  для  П,      Ki   для  И,      Kd   для   Д

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

/**************    Делать каждые 20 мС   ***********************/
err = РП - ТП                 // вычислить текущую ошибку

if (MIN < УВ < MAX){ // если УВ не достигло предела, то
 
integral = integral + error   // добавить ошибку в сумму ошибок
                   }

УВ_temp = Kp*err + Ki*integral*t_step + Kd*(err - pre_err)/t_step

// вычисление Управляющего Воздействия - УВ

УВ = MIN =< УВ_temp =< MAX
// задание окончательно УВ в рамках допустимых значений.

pre_err = err
//
текущая ошибка стала "прошлой ошибкой" для след. вычисления

Примечание:  параметр t_step  можно исключить из повторяющихся вычислений заранее скорректировав коэффициенты  Ki и Kd  в  t_step  раз.

    Почему же применяют ПИД регулятор, а не просто пропорциональный (П) регулятор - т.е. не просто создают УВ пропорциональное ошибке а что-то мудрят еще с И и Д ?  Дело в том, что в реальных системах Kp приходиться выбирать достаточно большим для достаточно быстрого реагирования на ошибку и для преодоления трения и аналогичных потерь мешающих точной установке ОР, при этом ОР имеет не нулевую скорость изменения РП при снижении ошибки до нуля и по инерции проскакивает нужное положение - происходит перерегулирование (ПРР) - ошибка меняет знак и начинает расти, сразу же растет и УВ стремясь снова свести ошибку к нулю - возникает колебательный процесс. Введение Д компонента, пропорционального скорости изменения ошибки, позволяет заблаговременно начать активное "торможение" ОР и уменьшить или вовсе исключить ППР.  А компонент И позволяет регулятору преодолевать силу трения или аналогичное сопротивление и достигать долговременно нулевой ошибки.

 

Литература, примеры и ссылки по ПИД регулированию:

1) Подробная статья про ПИД регулирование с графиками, формулами рекомендациями по настройке PID на русском языке лежит в архиве

2) Скачать КНИГИ по технике и электронике можно там

3) Вы можете попробовать работу ПИД регулятора и влияние коэффициентов на характер регулирования в  симуляторе PROTEUS - в его примерах, в папке Proteus\SAMPLES\VSM MPLAB Viewer\App Notes\AN696  реализован апноут AN696  - "servo привод с квадратурным энкодером и ПИД регулятором".

4) Вот проектировани и он-лайн анимация ПИД регулятора - "Пример проектирования дискретного ПИД-регулятора с применением инструментария моделирующих пакетов"  посмотрите ! это интересно и написано понятно.

5) ПИД регуляторы применяют в стабилизации перевернутых маятников - inverted pendulum - есть очень толковый  апноут AN964  в котором настройка ПИД описана и коэффициенты ПИД устанавливаются переменными резисторами и много интересного видео на YouTube - такой же принцип используется в балансирующих роботах и в Segway. 

6) Исходники ПИД регулирования на Си для AVR есть в апноутах по электроприводу с различными типами моторов AVR447 AVR449 AVR49x и на форуме RoboForum.  На форуме можно задать вопросы и сделать замечания по данному материалу после рагистрации.

2008-12-22

 

 

 

Используются технологии uCoz