Что Еще Могут Шаговые Двигатели? — Забивайте Голы В Настольном Хоккее

Создавая своего первого робота (Робот для настольного хоккея), а именно механическую часть, я узнал для себя много интересного, чем хочу поделиться.



Что еще могут шаговые двигатели? — Забивайте голы в настольном хоккее

Примерно половину знаний я нагуглил или посмотрел на Youtube, а вторую половину получил на практике, методом проб и ошибок в многочисленных экспериментах.

Расскажу о 4 пунктах, которые, на мой взгляд, заслуживают особого внимания:

  1. Разогнать шаговый двигатель до максимальной скорости.

  2. Одновременная работа массива шаговых двигателей через один контроллер.

  3. Охлаждение шаговых двигателей и драйверов.

  4. Как избавиться от скрипа шаговых двигателей.

В настольном хоккее Stiga Play-Off с каждой стороны участвуют по 6 игроков (вратарь и 5 на поле).

Мой робот для настольного хоккея имеет 6 роботизированных рук в зависимости от количества игроков, по одной руке на каждого игрока, и каждая рука приводится в движение двумя двигателями.

Первый мотор перемещает игрока вперед и назад, а второй мотор вращает клюшку.

Всего используется 12 шаговых двигателей.

Почему шаговые двигатели? Мне нужна была точность и аккуратность, а шаговый двигатель имеет возможность вращать вал строго на заданное количество градусов/шагов.

Но, кроме точности, нужна была скорость, и тут начались проблемы и поиск решения.



1. Разогнать шаговый двигатель до максимальной скорости.

При поиске в Интернете можно найти много информации о 3D-принтерах, ЧПУ, роботизированных манипуляторах с 6 степенями свободы и подобных устройствах.

Но мне нужно за долю секунды переместить игрока на ~40 см или ударить клюшкой по шайбе, чтобы она влетела в ворота через все игровое поле.

И что же мне делать? — проводите эксперименты и выжимайте все соки из двигателей! Вал шагового двигателя вращается импульсно, а двигатели, которые я использовал для робота (размер Nema 17), делают 1 полный оборот за 200 шагов по 1,8 градуса на шаг.

Я как новичок приобрел самые распространенные драйвера для шаговых двигателей А4988, купил контроллер Arduino Mega с наибольшим количеством входов/выходов, CNC Shield v3 для удобного размещения сразу 4-х драйверов, блок питания 12 В, все подключил.

проводами по инструкциям с многочисленных сайтов.

Я придумал, как написать программу-скетч для Arduino, и запустил ее.

Моторы начали вращаться, но мне нужна была скорость.

Если подать 1000 импульсов в секунду от контроллера к драйверу двигателя, двигатель будет вращаться со скоростью 5 оборотов в секунду.

Отлично, но этого было недостаточно.

Увеличил количество импульсов и двигатель перестал двигаться - скрипит и не крутится, сил не хватает сразу начать движение на таких скоростях.

Это все равно, что на машине с механической коробкой передач сразу включить 5-ю передачу.

Пришлось доработать скетч контроллера для плавного, но, по возможности, быстрого старта.

Есть конечно готовые классы AccelStepper, но как-то я воспринял его с недоверием, ограничения как всегда будут, я подумал и сделал свой класс для плавного старта, в котором использовал формулу кубической параболы с некоторыми вспомогательными коэффициенты.

Сначала интервалы между импульсами нужно сделать больше, чтобы мотор начал двигаться, а затем постепенно уменьшать интервалы между импульсами.

Двигатель будет плавно ускоряться благодаря этому программному вариатору.

У разных моторов могут быть свои условия максимального ускорения; нужно экспериментировать, чтобы понять, где находится потолок возможностей двигателя по напряжению и току.

При таком разгоне обязательно будут пропуски шагов, но для тех целей, которые я преследовал, потеря нескольких шагов не важна; это не 3D печать.

Подводя итог, для достижения максимальных оборотов необходимо обеспечить плавный разгон.



2. Одновременная работа массива шаговых двигателей через один контроллер.

Как уже говорилось выше, в роботе используются 12 шаговых двигателей.

Управление данным массивом двигателей осуществляется через 1 контроллер Arduino Mega, который был выбран из-за наличия большого количества пинов (входов/выходов).



Что еще могут шаговые двигатели? — Забивайте голы в настольном хоккее

Для управления 12 моторами мне понадобилось:

  • 12 контактов контроллера для передачи шагов драйверам двигателей.

  • 12 контактов для настройки направления вращения
  • 12 пинов для управления включением/отключением драйверов моторов (необязательно, но желательно, так как для охлаждения оказалось важно)
Дополнительно я использовал еще 24 контакта:
  • 12 контактов для получения данных от оптических концевиков (нужны для безопасности механики, ограничивающей зону движения приводов игроков, можно ли полностью доверять программе? Датчики установлены по одному в начале и конце на каждом приводе а еще есть пружины плавной остановки, можно ли полностью доверять датчикам?)
  • 12 контактов для RGB светодиодов, указывающих режимы работы (зеленый горит при подаче питания, синий добавляется при движении вперед/назад и красный добавляется при вращении клюшки, в общем зеленый для пользы, а синий и красный для красоты )
Мозг робота теперь «проживает» в настольном компьютере в качестве временного решения, пока микрокомпьютер Rasperry Pi 4 не переедет на борт робота.

Компьютер передает команды управления через USB-порт на контроллер Arduino, и здесь нам нужна возможность управлять всеми 12 моторами одновременно.

На практике во время игры я не видел одновременной работы всех 12 моторов, может быть 4, но технически это предусмотрено.

В скетче для Arduino я создал класс Player для управления 2 моторами (перемещением и вращением клюшки) и при запуске создается 6 экземпляров этого класса.

При инициализации классов передаются номера пинов, к которым будет привязан каждый из «игроков», т.е.

каждый из 6 игроков привязан к своим драйверам/моторам, датчикам и светодиодам.

В циклическом цикле скетча USB-порт проверяется на наличие команды от компьютера и методы Move и Rotate по очереди вызываются на 6 объектах игрока для выполнения движений или остановок.

Подводя итог, контроллер Arduino Mega оснащен очень большим количеством входов/выходов > 70. Если вам нужно решить определенную задачу, вы можете подключить десятки шаговых двигателей.



3. Охлаждение шаговых двигателей и драйверов.

Если на драйвер ШД подать питание на вывод VMOT и драйвер включен (по умолчанию ENABLE=0 - включен), двигатель может начать немного пищать (зависит от драйвера), а обмотки двигателя и водитель начнет нагреваться.

Можно потрогать радиатор драйвера и убедиться в этом.

Я начал использовать мощность двигателя 12В и быстро почувствовал нагрев, но при 36В этот эффект мне очень не понравился.

Я не стал ждать, пока сгорят обмотки двигателя или драйвер, и начал разбираться, в чем дело.

Вывод ENABLE помог все решить.

Если вращение двигателя не требуется, следует отключить драйвер ENABLE=1, а когда вращение необходимо, достаточно просто включить драйвер ENABLE=0. Поскольку в роботе используется 12 двигателей, и они не так часто вращаются одновременно, это означает, что им можно дать остыть, когда в этом нет необходимости.

Я взял под свой контроль контакт включения каждого драйвера двигателя через Arduino. Пришлось дополнительно использовать 12 пинов контроллера, но драйверы стали холодными и моторы перестали шуметь, хотя использовалось напряжение 36В.



4. Как избавиться от скрипа шаговых двигателей

Сначала я приобрел драйвера для шаговых двигателей А4988; Мне нужно было 12 штук.

Они популярны, надежны, просты и понятны, а также очень дешевы и идеально подходят для новичков.

Все работало почти хорошо, шаги четкие, 1 импульс – 1 шаг, 200 импульсов по 1,8 градуса на 1 шаг – 1 оборот мотора.

Но было 2 неприятных момента.

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

И еще, этот писк! Когда работало 12 моторов, я чувствовал, что R2D2 разговаривает со мной.

Я начал искать решение проблемы и узнал о тихих драйверах с немецкими чипами Trinamic TMC 2100, 2130, 2208 и других серий.

Они стоят в несколько раз дороже, но если вам нужна тишина и плавность хода, они того стоят. TMC имеет режим StelthChop с интерполяцией 4 или 16 входных импульсов за 256 микрошагов.

После тестирования я выбрал режим 4-> 256 микрошагов.



Что еще могут шаговые двигатели? — Забивайте голы в настольном хоккее

Скетч для Arduino нуждался в небольшой доработке, потому что.

Теперь для полного оборота мотора требовалось не 200 шагов, а в 4 раза больше (800 на 1 полный оборот) за счет использования режима StelthChop 4-> 256. .

Больше шагов означает более плавный и тихий ход. Теперь вращение плавное, тихое и без скрипов.

Видео того, что произошло в итоге: Надеюсь, мой опыт поможет кому-то в других проектах.

Теги: #роботы #Разработка робототехники #Робототехника #arduino #шаговый двигатель #водитель двигателя #настольный хоккей #бесшумный водитель #a4988 #nema17

Вместе с данным постом часто просматривают: