ELECTRONICS

Драйвер A4988 и Arduino: подключение NEMA 17, настройка тока, микрошаг и скетч

Шаговые двигатели и драйверыСкетч проверен компиляцией

A4988 — драйвер биполярного шагового двигателя размером с почтовую марку, тот самый, что стоит в 3D-принтерах. Arduino отдаёт ему всего два сигнала: STEP — сделай шаг, DIR — в какую сторону. Всё остальное — токи в обмотках, микрошаг, защита — драйвер делает сам.

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

Схема подключения

103103103103R100R100ENMS1MS2MS3RSTSLPSTEPDIRVMOTGND2B2A1A1BVDDGND
Наведите на провод или нажмите на него — расскажу, зачем он нужен.

Распиновка

ПроводКуда и зачем
STEPИмпульс — шаг. Минимальная длительность 1 мкс, на практике 2–5.
DIRНаправление вращения.
ENРазрешение, активный ноль. Не подключён — драйвер работает. Единица выключает обмотки, мотор перестаёт держать.
MS1, MS2, MS3Микрошаг: все не подключены — полный шаг; все на 5 В — 1/16 шага. Есть встроенная подтяжка к земле.
RST, SLPСброс и сон, оба активный ноль. Соединяют между собой перемычкой — иначе драйвер спит.
VDD, GNDПитание логики 3–5,5 В от Arduino.
VMOT, GNDПитание моторов 8–35 В. Конденсатор 100 мкФ вплотную к этим выводам обязателен.
1A, 1B, 2A, 2BДве обмотки мотора. Пара 1A-1B — одна обмотка, 2A-2B — другая.

Характеристики

Напряжение моторов
8–35 В
Ток на обмотку
до 1 А без радиатора, до 2 А с обдувом
Микрошаг
1, 1/2, 1/4, 1/8, 1/16
Логика
3–5,5 В
Защита
от перегрева, КЗ, перегрузки по току
Размер
20 × 15 мм

Настройка тока

Подстроечник на плате задаёт предельный ток обмотки. Мультиметром меряют напряжение между корпусом подстроечника и землёй: Vref. Для типичной платы с резисторами 0,1 Ом ток равен Vref, делённому на 0,8. Мотору на 1,2 А нужен Vref около 0,96 В; ставят чуть меньше, 0,8–0,9 В.

Меряют без мотора, но с питанием на VMOT и VDD. Ток выше номинала — мотор и драйвер греются; ниже — мотор пропускает шаги под нагрузкой. Обмотки подключают и отключают только при снятом питании: дёрнуть разъём под напряжением — верный способ убить драйвер.

Библиотека

не нужна для простого вращенияИмпульсы можно давать digitalWrite. Для разгона, торможения и точного позиционирования — AccelStepper из менеджера библиотек.

Готовый скетч

// A4988: 200 шагов вперёд, пауза, 200 назад
const int STEP_PIN = 3;
const int DIR_PIN = 4;
const int STEPS_PER_REV = 200;     // NEMA 17 с шагом 1,8°

void step(int count, bool forward, int microsDelay) {
  digitalWrite(DIR_PIN, forward ? HIGH : LOW);
  for (int i = 0; i < count; i++) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(microsDelay);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(microsDelay);
  }
}

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
}

void loop() {
  step(STEPS_PER_REV, true, 1500);    // оборот по часовой
  delay(1000);
  step(STEPS_PER_REV, false, 1500);   // оборот обратно
  delay(1000);
}

Скетч собирается arduino-cli под Arduino UNO

Пауза 1500 мкс — около 330 шагов в секунду. Стартовать сразу с малой паузы мотор не сможет: для быстрых движений нужен разгон, его делает AccelStepper.

Частые ошибки

Мотор гудит и дёргается, но не крутится

Одна из обмоток подключена не парой. Прозвоните: между двумя выводами одной обмотки сопротивление в единицы ом, между обмотками — обрыв. Пара на 1A-1B, другая на 2A-2B.

Не крутится вовсе, драйвер молчит

RST и SLP не соединены. Без перемычки между ними драйвер спит. Это самая частая причина на новой плате.

Пропускает шаги под нагрузкой

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

Драйвер сгорел при подключении

Разъём мотора дёрнули под питанием или на VMOT нет конденсатора. Всплеск от обмотки убивает микросхему мгновенно. 100 мкФ на VMOT и никаких горячих переподключений.

Сильно греется мотор в покое

Так и должно быть: держащий ток идёт постоянно. Если греется до боли — ток завышен. Если мотор не должен держать положение, отключайте драйвер через EN.

Что понадобится