Я пытаюсь построить робота с дифференциальным приводом, питаемым от двух двигателей постоянного тока. Сначала я применил ПИД-регулятор для независимого управления скоростью каждого двигателя. Оценили TF, используя System Identification Toolbox MATLAB, системы с разомкнутым контуром, получив скорость каждого энкодера колес в зависимости от сигнала PWM, подаваемого микроконтроллером Arduino. Все прошло хорошо, и я успешно определил коэффициенты усиления ПИД-регулятора для этого контроллера.
Сейчас я пытаюсь контролировать точное (угловое) положение двигателя постоянного тока. Я думал в каскадировании ПИД-регулятора на входе другого уже реализовано. Таким образом, я могу указать позицию для первого контроллера, который сможет генерировать выходное задание для второго (скорости) контроллера, чтобы он генерировал соответствующий сигнал значения ШИМ для соответствующего управления двигателем постоянного тока.
Это будет работать? Это хороший подход? Или я должен попытаться реализовать другой контроллер, который выводит сигнал ШИМ в ответ на опорный сигнал положения?
Ваш подход должен работать. Это также самый простой способ решить проблему.
Вы всегда можете разработать контроллер положения, который управляет непосредственно двигателями, но будет сложнее понять, как его настроить. И я понимаю, что у вас есть показания и положения, и скорости, так почему бы не использовать две петли?
Как отмечают люди в комментариях к вашему вопросу, очевидно, что теперь у вас будет контроллер положения, а не скорость. Но это имеет смысл, поскольку это для робота.
Вы должны быть осторожны с несколькими деталями:
Дополнительный совет: поскольку это касается робота, я бы принял во внимание упреждающую связь с ссылкой на позицию .
Если вы хотите контролировать позицию, контролируйте позицию. Не вижу смысла в промежуточном регуляторе скорости. Это сделает вещи более сложными и трудными для настройки.
Поскольку у вас, по-видимому, есть декодеры положения, ваш контур управления должен напрямую контролировать положение. Затем этот контур управления может сильнее управлять двигателем, когда он находится далеко от желаемого положения, и меньше, когда он находится близко. Если все сделано правильно, это неявно приведет к хорошему скоростному профилю для перехода из одного положения в другое.
Если система более высокого уровня хочет, чтобы двигатели работали с определенной скоростью, она должна плавно изменять требуемое положение до контроллера положения.
Энди ака
Дэйв Твид
рфлмота
пользователь120030