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 | Микрошаги | Выбор делителя (см. таблицу) |
Настройка микрошагов
| MS1 | MS2 | MS3 | Режим | Шагов/оборот (NEMA17) |
|---|---|---|---|---|
| LOW | LOW | LOW | Full step | 200 |
| HIGH | LOW | LOW | 1/2 step | 400 |
| LOW | HIGH | LOW | 1/4 step | 800 |
| HIGH | HIGH | LOW | 1/8 step | 1600 |
| HIGH | HIGH | HIGH | 1/16 step | 3200 |
Совет: Для 3D-принтеров стандарт — 1/16 (MS1, MS2, MS3 = HIGH). Это компромисс между плавностью и скоростью.
Настройка тока (Vref)
Критически важный этап! A4988 имеет подстроечный резистор для ограничения тока.
Формула расчёта
Для модулей Pololu $R_{sense} = 0.05$ Ом:
$$ I_{max} = \frac{V_{ref}}{0.4} $$или обратно:
$$ V_{ref} = I_{max} \times 0.4 $$Примеры настройки
| Желаемый ток | Vref (измерить мультиметром) |
|---|---|
| 0.5A | 0.2V |
| 0.8A | 0.32V |
| 1.0A | 0.4V (рекомендуется) |
| 1.2A | 0.48V |
| 1.5A | 0.6V (нужен радиатор!) |
Процедура настройки
- Отключите мотор от драйвера
- Подайте питание логики (5V)
- Установите мультиметр в режим DC Voltage
- Минус мультиметра — на GND
- Плюс — на металлическую часть подстроечника (или специальную точку Vref)
- Вращайте подстроечник, пока не получите нужное Vref
- Подключите мотор и проверьте нагрев
⚠️ Если мотор сильно греется (>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);
}
Типичные проблемы
Мотор не крутится
- Проверьте перемычку RESET-SLEEP
- Проверьте питание VMOT (должно быть 8-35V)
- Проверьте соединение обмоток (найдите пары мультиметром)
Мотор вибрирует, но не вращается
- Перепутаны провода обмоток (поменяйте 1A↔1B или 2A↔2B)
- Слишком высокая скорость для данного Vref
Мотор греется
- Снизьте Vref
- Добавьте радиатор на A4988
- Уменьшите удерживающий ток (ENABLE = HIGH, когда не нужно держать позицию)
Драйвер сгорел
- Не было конденсатора на VMOT
- Отключили мотор при работающем драйвере
- Подали >35V на VMOT
Сравнение с DRV8825
| Параметр | A4988 | DRV8825 |
|---|---|---|
| Макс. ток | 2A | 2.5A |
| Макс. напряжение | 35V | 45V |
| Микрошаг | 1/16 | 1/32 |
| Формула Vref | Vref = I × 0.4 | Vref = I × 0.5 |
Вывод: DRV8825 — чуть мощнее и точнее, но A4988 дешевле и достаточен для большинства задач.
Применение
- 3D-принтеры — оси X, Y, Z, экструдер
- ЧПУ-фрезеры — управление шпинделем и осями
- Лазерные граверы — плоттеры, лазеры
- Робототехника — колёса, манипуляторы
- Автоматизация — поворотные столы, жалюзи, кормушки
