Skip to main content

A4988: Классический драйвер для 3D-принтеров

A4988 — это культовый драйвер шагового двигателя, ставший индустриальным стандартом для 3D-принтеров, ЧПУ-станков и лазерных граверов. Разработан компанией Allegro MicroSystems, но получил массовую популярность благодаря модулям Pololu и их китайским клонам. В 2026 году это “базовый” драйвер, который должен уметь использовать каждый робототехник.

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

ПараметрЗначение
Напряжение питания (VMOT)8V – 35V
Максимальный ток1A (без радиатора), до 2A (с активным охлаждением)
Рекомендуемый ток1.0A – 1.5A
МикрошагFull, 1/2, 1/4, 1/8, 1/16
Интерфейс управленияSTEP / DIR (2 провода)
ЗащитаПерегрев, короткое замыкание, недонапряжение
Форм-факторStepStick (15 × 20 мм)

Распиновка модуля

         ┌─────────────┐
    VDD ─┤ 1        16 ├─ VMOT
    GND ─┤ 2        15 ├─ GND
    1B  ─┤ 3        14 ├─ 2B
    1A  ─┤ 4        13 ├─ 2A
    VDD ─┤ 5        12 ├─ VMOT
    GND ─┤ 6        11 ├─ GND
   STEP ─┤ 7        10 ├─ SLEEP
    DIR ─┤ 8         9 ├─ RESET
         └─────────────┘
         
    MS1 MS2 MS3 ENABLE (снизу платы)

Назначение выводов

ПинНазначениеОписание
VMOTПитание моторов8-35V (обязателен конденсатор 100 мкФ!)
GNDЗемляОбщая для питания и логики
VDDПитание логики3.3V или 5V (от Arduino)
1A, 1BФаза A мотораПервая обмотка
2A, 2BФаза B мотораВторая обмотка
STEPВход шагаКаждый импульс = один микрошаг
DIRНаправлениеHIGH = CW, LOW = CCW
ENABLEВключениеLOW = активен, HIGH = выключен
RESETСбросСоединить с SLEEP
SLEEPСпящий режимHIGH = работа, LOW = сон
MS1, MS2, MS3МикрошагиВыбор делителя (см. таблицу)

Настройка микрошагов

MS1MS2MS3РежимШагов/оборот (NEMA17)
LOWLOWLOWFull step200
HIGHLOWLOW1/2 step400
LOWHIGHLOW1/4 step800
HIGHHIGHLOW1/8 step1600
HIGHHIGHHIGH1/16 step3200

Совет: Для 3D-принтеров стандарт — 1/16 (MS1, MS2, MS3 = HIGH). Это компромисс между плавностью и скоростью.

Настройка тока (Vref)

Критически важный этап! A4988 имеет подстроечный резистор для ограничения тока.

Формула расчёта

$$ I_{max} = \frac{V_{ref}}{8 \times R_{sense}} $$

Для модулей Pololu $R_{sense} = 0.05$ Ом:

$$ I_{max} = \frac{V_{ref}}{0.4} $$

или обратно:

$$ V_{ref} = I_{max} \times 0.4 $$

Примеры настройки

Желаемый токVref (измерить мультиметром)
0.5A0.2V
0.8A0.32V
1.0A0.4V (рекомендуется)
1.2A0.48V
1.5A0.6V (нужен радиатор!)

Процедура настройки

  1. Отключите мотор от драйвера
  2. Подайте питание логики (5V)
  3. Установите мультиметр в режим DC Voltage
  4. Минус мультиметра — на GND
  5. Плюс — на металлическую часть подстроечника (или специальную точку Vref)
  6. Вращайте подстроечник, пока не получите нужное Vref
  7. Подключите мотор и проверьте нагрев

⚠️ Если мотор сильно греется (>60°C) — снижайте Vref!

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

Arduino Uno                A4988                    NEMA 17
                                                    
    5V ──────────────────── VDD ────┐
   GND ──────────────────── GND ────┼──────────────── (чёрный провод)
                     ┌───── RESET ──┤
                     │              │
                     └───── SLEEP ──┘ (перемычка!)
                                    
    D2 ──────────────────── DIR
    D3 ──────────────────── STEP
                                    
                            1A ─────────────────── A+ (красный)
                            1B ─────────────────── A- (зелёный)
                            2A ─────────────────── B+ (синий)
                            2B ─────────────────── B- (жёлтый)
                                    
                           VMOT ────┬─────────────── +12V
                            GND ────┼─────────────── GND (питание)
                              100µF ┴ (электролит!)

Важно: Конденсатор 100 мкФ на VMOT обязателен! Без него драйвер может сгореть от индуктивных выбросов при коммутации.

Программная реализация

Базовый пример (без библиотек)

const int stepPin = 3;
const int dirPin = 2;
const int stepsPerRevolution = 3200; // 200 × 16 (микрошаг 1/16)

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}

void loop() {
  // Поворот на 360° по часовой
  digitalWrite(dirPin, HIGH);
  
  for (int i = 0; i < stepsPerRevolution; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);  // Скорость: 1000 об/мин
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);
  }
  
  delay(1000);
  
  // Поворот на 360° против часовой
  digitalWrite(dirPin, LOW);
  
  for (int i = 0; i < stepsPerRevolution; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500);
  }
  
  delay(1000);
}

С библиотекой AccelStepper (рекомендуется)

#include <AccelStepper.h>

// motorInterfaceType = 1 означает драйвер с STEP/DIR
AccelStepper stepper(1, 3, 2); // STEP, DIR

void setup() {
  stepper.setMaxSpeed(1000);     // шагов/сек
  stepper.setAcceleration(500);  // шагов/сек²
}

void loop() {
  stepper.moveTo(3200);   // Цель: 1 оборот
  stepper.runToPosition(); // Блокирующее движение
  
  delay(500);
  
  stepper.moveTo(0);       // Обратно
  stepper.runToPosition();
  
  delay(500);
}

Типичные проблемы

Мотор не крутится

  1. Проверьте перемычку RESET-SLEEP
  2. Проверьте питание VMOT (должно быть 8-35V)
  3. Проверьте соединение обмоток (найдите пары мультиметром)

Мотор вибрирует, но не вращается

  1. Перепутаны провода обмоток (поменяйте 1A↔1B или 2A↔2B)
  2. Слишком высокая скорость для данного Vref

Мотор греется

  1. Снизьте Vref
  2. Добавьте радиатор на A4988
  3. Уменьшите удерживающий ток (ENABLE = HIGH, когда не нужно держать позицию)

Драйвер сгорел

  1. Не было конденсатора на VMOT
  2. Отключили мотор при работающем драйвере
  3. Подали >35V на VMOT

Сравнение с DRV8825

ПараметрA4988DRV8825
Макс. ток2A2.5A
Макс. напряжение35V45V
Микрошаг1/161/32
Формула VrefVref = I × 0.4Vref = I × 0.5

Вывод: DRV8825 — чуть мощнее и точнее, но A4988 дешевле и достаточен для большинства задач.

Применение

  1. 3D-принтеры — оси X, Y, Z, экструдер
  2. ЧПУ-фрезеры — управление шпинделем и осями
  3. Лазерные граверы — плоттеры, лазеры
  4. Робототехника — колёса, манипуляторы
  5. Автоматизация — поворотные столы, жалюзи, кормушки