Шаговый двигатель для Arduino: 28BYJ-48 с ULN2003, NEMA 17 с A4988 — как подключить
Шаговый двигатель поворачивается на точный угол и держит его — поэтому он стоит в 3D-принтерах, станках с ЧПУ и в приводах, где важно «повернуть ровно на 90 градусов», а не «крутиться быстро». Скорость у него ниже, чем у обычного мотора, зато положение известно без датчиков.
Для Arduino есть два типовых комплекта, и они не взаимозаменяемы. Маленький 28BYJ-48 с драйвером ULN2003 — учебный и для лёгких задач. NEMA 17 с драйвером A4988 — для всего, что требует усилия.
Разборы конкретных моделей
Как подключить драйвер шагового двигателя A4988 к Arduino и мотору NEMA 17: распиновка STEP, DIR, EN, MS1–MS3, VMOT и VDD, настройка тока подстроечником, микрошаг, схема и скетч. Почему мотор дёргается и пропускает шаги.
Шаговый двигатель 28BYJ-48 с драйвером ULN2003Как подключить шаговый двигатель 28BYJ-48 к Arduino через плату драйвера ULN2003: выводы IN1–IN4, питание 5 В, схема, библиотека Stepper, 2048 шагов на оборот, скетч вращения в обе стороны. Почему мотор греется и не тянет.
Какой комплект брать
Пятивольтовый мотор с редуктором и платой драйвера в комплекте, стоит меньше чашки кофе. 2048 шагов на оборот благодаря редуктору, но момент маленький и обороты низкие: жалюзи повернуть — да, ось станка двигать — нет.
Промышленный стандарт: биполярный мотор с крутящим моментом в десять раз больше и драйвер с микрошагом до 1/16. Питание 8–35 В от отдельного источника. Этот комплект стоит в каждом 3D-принтере.
Тот же формат, что A4988, совместим по выводам. Держит больший ток и микрошаг 1/32, чуть тише. Если есть выбор, берут его; настройка тока другая, поэтому формулу смотрите под свой драйвер.
Бесшумные драйверы того же форм-фактора. Мотор при работе не жужжит вообще. Дороже, и требуют внимательного отношения к охлаждению, но для принтера или устройства в жилой комнате — то, что нужно.
Библиотеки
Для 28BYJ-48 хватает встроенной библиотеки Stepper: она умеет крутить в обе стороны с заданной скоростью, и этого достаточно. Для драйверов с входами STEP и DIR Stepper не подходит — там нужна AccelStepper: она формирует импульсы шага и умеет плавно разгонять и тормозить, без чего мощный мотор на старте пропускает шаги.
Обе библиотеки блокирующие в простейшем режиме: пока мотор крутится, плата ничего другого не делает. У AccelStepper есть неблокирующий вызов run, который надо дёргать в каждом проходе loop.