Запуск и размышления

Итак, загружаем программу и готовимся к пуску. Включать систему следует в таком порядке:

  • сначала подаём питание на драйвер мотора;
  • затем подаём питание на контроллер, или сбрасываем его с помощью кнопки RST.

Если сделать в обратном порядке, то пока мы запускаем мотор, система накопит большую интегральную ошибку и поведется себя неадекватно.

Если после включения, мотора начинает непрерывно вращаться, скорее всего следует сменить полярность включения мотора, либо поменять местами контакты A1 и A2 на драйвере TB6612.

К размышлению

Конечно, мы сделали только прототип сервомотора. В таком виде, наш мотор пока нельзя применить на практике по нескольким причинам.

  1. Из-за того, что вместо потенциометра для обратной связи мы использовали инкрементный энкодер, система не знает где начальное положение. При запуске контроллера, начальным положением считается текущее. Чтобы устранить этот недостаток, придётся ловить крайнее положение механического узла, к которому будет присоединен мотор.
  2. ПИД регулятор настроен не оптимально. В действительности, настройка коэффициентов ПИД — достаточно щепетильная процедура, о которой следует прочесть специальную литературу. Рекомендуем также вывести текущее и целевое положение мотора на графики в реальном времени и настраивать систему, смотря на график, а не на мотор.
  3. Такие вещи на беспаечных макетных платах работают плохо, поэтому собирать драйвер сервомотора (так это назовем) следует на печатной плате. Соединения энкодера с платой должны быть надежным. Любой сбой сервомотора в реальной ситуации грозит поломкой всей механики, которая с ним связана.

Успехов в сервостроении!

Полезные ссылки:

Исходный код сервомотора для STM32CubeIDE


Изменено:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.