Цитата(Kass @ May 15 2008, 11:57)

Вчера сделал только П-регулирование. Результат превзошел ожидания: при коэф. усил (Кпр) 0,5 наблюдалась статическая ошибка 0,6 градуса. (как и в теории) При Кпр = 5, - небольшое перерегулирование (0,1градуса), и общая раскачка 0,3градуса. Выходит на режим долго. Испытывал в банке с водой (0,5литра), нагреватель - миникипятильник 350Вт. Чтитал в теории, что для правильного подбора коэффициентов нужно знать кривую разгона(если есть соображения - поделитесь). И еще, датчик DS1820 имеет погрешность около 0,5градуса, т. е. надо калибровать. Если кто занималься этим, напишите, интересно узнать как это делали вы.
У атмела есть путевая апнота
http://www.atmel.com/dyn/resources/prod_do...nts/doc2558.pdf хоть на английском, но понятная.
Погрешность датчика даст статическую ошибку, которую действительно можно убрать калибровкой. Она не влияет на точность(стабильность) поддержания температуры. А вот дрейф(шум) датчика влияют, их можно минимизировать фильтрацией и усреднением поступаемых данных.
По поводу подбора коэффициентов, обычно применяют метод Циглера-Hиколса, вот еще вырезки из фидо на эту тему :
==================================================
Для рассчета необходимо знать Ku (ultimate gain). Для этого при настройке
система включается в релейный (триггерный)
режим с небольшим гистерезисом. Hужно зафиксировать амплитуду A и период Tk
установившихся колебаний температуры
нагревателя (объекта).
Ku = (4*d)/(Pi*A), где d - амплитуда колебаний выходной мощности (в нашем
случае 50, т.к. полная мощность 100), А -
амплитуда колебаний температуры (не перепутай с двойной амплитудой). Эта
формула упрощенная, но дает неплохие
результаты.
Тогда по Циглеру-Hиколсу:
Kp = 0.6 * Ku;
Ti = Tk / 2;
Td = Tk / 8;
==================================================
Рассчет коэффициентов регулятора (K, Ti, Td, Tt) исходя из значений Ku
(ultimate gain) и Tu (ultimate period). Как будут получены Tu и Ku, дело десятое.
Можно и step response применить, и relay feedback (optional with hysteresis) и
даже метод свободных колебаний.
По Ц-H для ПИД-регулятора:
K = 0.6 * Ku;
Ti = 0.5 * Tu;
Td = 0.125 * Tu;
Tt = SQRT(Ti * Td); // или приближенно Tt = 0.25 * Tu;
==================================================
Обычно можно начать с того, что yстановить максимально возможный
Ti и минимально возможный Td и затем подбиpая Kp добится пеpвого
пpиемлемого pезyльтата. После этого yменьшают Ti с той же целью,
и в последнюю очеpедь yвеличивают Td.
Окончательнyю доводкy ведyт на pеальном yстpойстве в pеальном
pежиме pаботы.
==================================================
Для любителей настраивать PID на глаз есть такой метод:
1) D = 0, I = 0. Увеличиваем P, пока не начнутся колебания.
Откатываем P назад вдвое относительно порога автоколебаний.
2) Теперь оставляем P там же и настраиваем I до порога колебаний
и откатываем вдвое назад.
3) Теперь оставляем P и I, точно так же настраиваем D.
EK> Хочется побороться за меньшее значение, может быть посредством
EK> автоматической настройки - хостовой PC пишет в контроллер коэфиициенты,
EK> задает тестовую траекторию, меряет отклик и т.п.
EK> Хотелось бы почитать умные мысли на этот счет, а то что-то "ручками и
EK> глазками" получается таки лучше чем посредством дурной программы.
Классика. Меряется step response, дальше методом Циглера-Hикельса.
EK> А чем оно лучше/ хуже
EK> 1) выставляем P в минимум, I - в ноль
EK> 2) поднимаем D до состояния "critically dumped"
EK> 3) поднимаем P до максимума, при котором остается "critically dumped" или
EK> чуть больше с небольшим переколебанием
EK> 4) поднимаем I для уменьшения статической ошибки и тоже чтобы не выйти на
EK> колебательный режим.
==================================================