ПИД регулятор с учётом люфта для серво-двигателя - как настроить или что использовать?
- Войдите на сайт для отправки комментариев
Приветствую!
Есть старый промышленные серво-привод, состоящий из мотора, червячного рудуктора и датчика положения на ведомой шестерне. На зубьях шестерни имеется выработка, короче люфт в 3 градуса.
У привода был родной блок управления (грубо говоря коробка без каких-либо настроек и регулировок), внутри мотором управлял H мост. Сигнал с датчика - PWM, 1 кГц. Датчик достаточно точный (0.2 градуса отличит уж точно)
Я пытаюсь реализовать блок управления на ESP32 и L298N.
Пытаюсь прикрутить PID регулятор. На данный момент использую библиотеку AutoPID.
Проблема в том, что я не могу подобрать коэффициенты (пробовал и по методикам из книжек про ТАУ и вручную эмпирическим путём). С PID я раньше дело имел, не скажу что много, но удавалось настроить.
Конкретнее - не могу избавиться от постоянных качель в обе стороны.
НО если на вал повесить нагрузку в несколько килограмм, то PID прекрасно отрабатывает и можно легко настроить.
Я считаю, что добавлением нагрузки мы просто выбираем люфт.
У меня научный интерес добиться работы именно без нагрузки с таким большим люфтом, потом что родной блок управления с ним справлялся прекрасно (если вручную пытаться повернуть вал, то привод не стоял, а сопротивлялся, то есть тут не тупо введение погрешности в 6 градусов, а что-то умное)!
Я так понимаю, одним лишь PID нормальной работы не добиться и нужно что-то ещё вводить? Подскажите, пожалуйста, что именно?
Может быть нужно кроме вращаем по/против часовой управлять ещё и длительностью импульса? Вот только что для этого использовать...
Серво - это круто, а кто такой "поруТчик"? Откуда в наименовании младшего офицерского чина царской армии буква "Т"? ;))
Ну а груз - конечно просто люфт выбирает. ;)))
Орфографический вариант написания в каких-то там веках =)
Всё же хотелось бы по сути проблемы прийти к каким-либо выводам, как управлять более правильно.
Орфографический вариант написания в каких-то там веках =)
Всё же хотелось бы по сути проблемы прийти к каким-либо выводам, как управлять более правильно.
ПИД тут с какого бока? Выбирать люфт при смене направлений. По обратной связи или по расчету.
Орфографический вариант написания в каких-то там веках =)
ну и да, - такого варианта нет, это слово польского происхождения, никаких "Т" там отродясь не было. ;)))
Чем, если не PID достичь положения? Движком управляю H мостом, то есть либо крутим на всех порах по часовой, либо против, либо стоим. Можно конечно двигать по чуть-чуть за раз, но тогда скорость реакции будет слишком медленной, да и момент на валу так же будет страдать.
Мертвую зону добавь.
Вы подразумеваете, что в пределах этой "зоны" ПИД не должен будет реагировать на изменения?
Тогда, получается, что погрешность установки вала будет 3 градуса, что не допустимо.
У родного контроллера явно меньше было (мерил транспортиром), значит можно этого как-то избежать.
Ну так повесьте на тросике минимальный груз выбирающий люфт и не парьте мозги.
кто такой "поруТчик"?
Как кто? Офицер для порутчений.
И что серво так устроена, что энкодер висит на промежуточном валу ? Серьезно ?
Да. По-моему весьма грамотная конструкция, что бы можно было компенсировать люфт .
Грамотная конструкция !? Когда энкодер на промежуточном валу ? Это просто бред, тогда люфты убивают точность.
Энкодер на выходной шестерне червячного редуктора. От шестерни дальше уже только вал, на котором исполнительный механизм. Тогда хотя бы благодаря энкодеру можно как раз компенсировать люфт в редукторе.
Так в сервоприводе энкодер и должен стоять на выходном валу. Если у вас так, то о какой компенсации идет речь ? Вы и так имеете точные показания положения вала.