Возможно, кто-нибудь из вас сталкивался с подобной проблемой.
Проблема вот в чем. Делаю блок управления электронным дросселем автомобиля. По сути это сервопривод с коллекторным мотором, понижающим редуктором и датчиком (переменный резистор) на выходном валу. Конструкция, аналогичная авиамодельной сервомашинке - только в 10 раз мощнее.
Соответственно, мотор заслонки управляется с микроконтроллера при помощи ШИМ сигнала.
Реализован "классический" алгоритм ПИД-регулятора, вот кусок си-кода:
Код
en0=angle - servo_pos;
integral_term = SumE / 73.5; // Divide by the sampling frequency
derivative_term = en0 - en1;
integral_term = integral_term * ki; // Ki
derivative_term = derivative_term * kd; // Kd
Cn = en0 + integral_term + derivative_term; // Sum the terms
Cn = (Cn * kp); //Kp
en1 = en0;
integral_term = SumE / 73.5; // Divide by the sampling frequency
derivative_term = en0 - en1;
integral_term = integral_term * ki; // Ki
derivative_term = derivative_term * kd; // Kd
Cn = en0 + integral_term + derivative_term; // Sum the terms
Cn = (Cn * kp); //Kp
en1 = en0;
Где, angle - требуемое положение, servo_pos - фактическое положение сервы
сооветственно Cn - выход на ШИМ, ki kd kp - коэффициента ПИДа.
Алгоритм работоспособен, заслонка поворачивается и с хорошей точностью попадает на заданное положение.
НО. У нее есть как-бы люфт. То есть, если нажать на заслонку пальцем - она сначала поворачивается, потом из-за накопления ошибки I-звена плавно возвращается на заданное положение. Такое ощущение что недостаточно большой коэффициент P.
Но проблема в том, что любое дальнейшее увеличение любого коэффициента приводит к "раскачке" системы - возникает довольно длительный переходный процесс, или вообще незатухающие колебания.
Так же был опробован "частотный" метод подбора коэффициентов ПИДа - безрезультатно. Заслонка работает, но есть "люфт".
Проблема не в "механике". Точно на той же плате и заслонке абсолютно нормально работает "заводской" софт, у заслонки "люфта" нет вообще. То есть, проблема явно в реализации алгоритма.
Подскажите, пожалуйста - в какую сторону копать... Вообще, применим ли пид в подобных системах?