ELECTRONICS

Шаговый двигатель для Arduino: 28BYJ-48 с ULN2003, NEMA 17 с A4988 — как подключить

Шаговый двигатель поворачивается на точный угол и держит его — поэтому он стоит в 3D-принтерах, станках с ЧПУ и в приводах, где важно «повернуть ровно на 90 градусов», а не «крутиться быстро». Скорость у него ниже, чем у обычного мотора, зато положение известно без датчиков.

Для Arduino есть два типовых комплекта, и они не взаимозаменяемы. Маленький 28BYJ-48 с драйвером ULN2003 — учебный и для лёгких задач. NEMA 17 с драйвером A4988 — для всего, что требует усилия.

Разборы конкретных моделей

Какой комплект брать

28BYJ-48 + ULN2003

Пятивольтовый мотор с редуктором и платой драйвера в комплекте, стоит меньше чашки кофе. 2048 шагов на оборот благодаря редуктору, но момент маленький и обороты низкие: жалюзи повернуть — да, ось станка двигать — нет.

NEMA 17 + A4988

Промышленный стандарт: биполярный мотор с крутящим моментом в десять раз больше и драйвер с микрошагом до 1/16. Питание 8–35 В от отдельного источника. Этот комплект стоит в каждом 3D-принтере.

NEMA 17 + DRV8825

Тот же формат, что A4988, совместим по выводам. Держит больший ток и микрошаг 1/32, чуть тише. Если есть выбор, берут его; настройка тока другая, поэтому формулу смотрите под свой драйвер.

TMC2208 и TMC2209

Бесшумные драйверы того же форм-фактора. Мотор при работе не жужжит вообще. Дороже, и требуют внимательного отношения к охлаждению, но для принтера или устройства в жилой комнате — то, что нужно.

Библиотеки

Для 28BYJ-48 хватает встроенной библиотеки Stepper: она умеет крутить в обе стороны с заданной скоростью, и этого достаточно. Для драйверов с входами STEP и DIR Stepper не подходит — там нужна AccelStepper: она формирует импульсы шага и умеет плавно разгонять и тормозить, без чего мощный мотор на старте пропускает шаги.

Обе библиотеки блокирующие в простейшем режиме: пока мотор крутится, плата ничего другого не делает. У AccelStepper есть неблокирующий вызов run, который надо дёргать в каждом проходе loop.