PID регулятор сделал - можно использовать в системах регулирования.
по АпНоуту Motorola AN1215.
конвертировал для CodeVisionAVR и симуляция в PROTEUS и в VMLAB
вычисление ПИД занимает ВСЕГО 640 мкС при кварце 8 МГц на ATmega16
======
Инерцию регулируемого объекта изображает конденсатор 0.1 мкФ (аналог массы или момента инерции)
Управляюще воздействие - это ток через резистор 1 МОм (аналог силе и моменту силы)
======
в VMLAB нашел баг - хотя симуляция идет правильно, но напряжение на конденсаторе не меняется если резистор превышает 250 КОм. Похоже это ошибка модели конденсатора.
======
Сделал симуляцию для PROTEUS - там все работает.
======
Результат в графиках Эксель
Верхний график показывает как проискодит установка из крайнего верхнего отклонения.
Нижний график показывает как меняется управляющий ШИМ сигнал.
Горизонтальная ось в 10-ках милиСек - т.е. 80 это 800 мСек.
======
точка куда надо привести регулируемую величину (напряжение на конденсаторе) - это результат АЦП = 500 при этом управляющий ШИМ сигнал имеет величину 503/1024
Форму кривой и колебательность процесса можно подстраивать меняя коэффициенты:
KP = 0.18; /* kp = .12, ki = 6.0, kd = .006, for 1 M ohm drive */
KI = 6.0;
KD = 0.009;
======
хорошая теория автоматических систем регулирования тут:
http://atm.h1.ru/root/theory/theory.html
настройка ПИД регулятора - тут:
Разработка, производство и продажа оборудования КИПиА для автоматизации производства: терморегуляторы, пид-регуляторы и т.д.
//
www.contravt.ru