Компонент · Драйвер

Драйвер шагового двигателя A4988

Недорогая плата регулирует ток обмотки шагового двигателя. Как задать предел мультиметром, избежать ловушки с резистором измерения тока и выбрать TMC.

Что это такое

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

Вторая задача важнее первой, и именно её пропускают. Обмотка шагового двигателя — катушка с малым сопротивлением, обычно от 2 до 4 ом. При подключении 24 V к 2.8 Ω по закону Ома получится 8.6 A, что уничтожит двигатель 1.7 A за секунды. A4988 предотвращает это, десятки тысяч раз в секунду включая и выключая питание и удерживая средний ток на заданном значении.

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

Плата A4988 сверху, с восемью золочёными контактными площадками на каждой стороне. Левый столбец обозначений содержит ENABLE, MS1, MS2, MS3, RESET, SLEEP, STEP и DIR, причём STEP и DIR выделены. Правый столбец содержит VMOT, GND, 2B, 2A, 1A, 1B, VDD и GND, причём VMOT выделен красным. Подстроечный резистор сверху обозначен как VREF для измерения мультиметром, а микросхему драйвера закрывает рёберный радиатор. Два малых резистора измерения тока внизу обозначены R100 = 0.1 ом или R050 = 0.05 ом с предупреждением проверить их перед расчётом.
Шестнадцать площадок, один подстроечный резистор и два маленьких резистора, меняющих арифметику. STEP и DIR — единственные выводы, к которым скетч обращается во время работы. Скачать SVG

Расположение выводов

Вывод Направление Назначение
VMOT Вход питания Питание двигателей 8–35 V. Рядом нужен конденсатор 100 µF.
GND (сторона двигателей) Питание Обратный путь большого тока
VDD Вход питания Логическое питание 3–5.5 V, несколько mA
GND (логическая сторона) Питание Должен иметь общую землю с питанием двигателей
1A, 1B Выход Одна обмотка двигателя
2A, 2B Выход Другая обмотка двигателя
STEP Вход Один нарастающий фронт = один микрошаг
DIR Вход Высокий или низкий уровень задаёт направление
ENABLE Вход Активный низкий уровень. Соедините с землёй для подачи напряжения на обмотки.
RESET Вход Должен иметь высокий уровень. Соедините перемычкой с SLEEP.
SLEEP Вход Для работы драйвера должен иметь высокий уровень
MS1, MS2, MS3 Вход Разрешение микрошагов; внутренняя подтяжка вниз

Большинство сообщений «ничего не работает» вызваны двумя выводами: оставленным в плавающем состоянии или высоким уровнем на ENABLE (поскольку активный низкий уровень требует подтяжки вниз) и оставленным в плавающем состоянии RESET (ему нужен высокий уровень, поэтому каждое руководство по подключению предлагает соединить RESET с SLEEP).

Подключение к Arduino

Arduino 5V  ──── VDD
Arduino GND ──── GND (logic)  ──┬── GND (motor)
                                └── PSU −
PSU + (12–24 V) ──── VMOT ──┬── 100 µF electrolytic ──┘
                            
Pin 3  ──── STEP            RESET ──┬── SLEEP
Pin 4  ──── DIR                     
Pin 5  ──── ENABLE          MS1, MS2, MS3 ──── 5 V  (1/16 stepping)

Motor coil A ──── 1A, 1B
Motor coil B ──── 2A, 2B

Обязательные условия:

  • Электролитический конденсатор 100 µF между VMOT и GND, физически рядом с платой. Это самая частая причина гибели платы при включении.
  • Общая земля между Arduino и источником двигателей. Без неё сигнал STEP не имеет опорного напряжения, и драйвер видит шум.
  • Никогда не отключайте двигатель при включённом питании. Прерывание тока в под напряжением обмотке создаёт выброс, которому некуда деваться.
  • Сопоставление обмоток важно; полярность внутри пары не важна. Если двигатель гудит без вращения, пары определены неверно. Если он вращается не туда, поменяйте два провода одной пары.

Задание предела тока — расчёт

Vref = I_phase × R_sense × 8

Измеряйте Vref между металлическим винтом подстроечного резистора и выводом земли при включённом VMOT и отключённом двигателе. Нацеливайтесь на 70–85% номинального тока двигателя: последняя пятая часть даёт очень мало момента, но много нагрева.

Целевой ток R_sense = 0.1 Ω (R100) R_sense = 0.05 Ω (R050)
0.6 A 0.48 V 0.24 V
1.0 A 0.80 V 0.40 V
1.2 A 0.96 V 0.48 V
1.5 A 1.20 V 0.60 V
1.7 A 1.36 V 0.68 V

Перед расчётом прочитайте обозначение двух чёрных SMD-резисторов у нижнего края. Установка 1.2 V на плате R050 потребует 3 A через двигатель с номиналом 1.7 A.

Используйте керамическую отвёртку. Металлическая, замыкающая подстроечный резистор на другую точку под напряжением, — обычный способ уничтожить драйвер.

Физически вы задаёте пиковый момент, который может создать двигатель, — T_peak в синусоидальном законе, определяющем всё поведение шагового двигателя. Слишком низкое значение увеличивает отставание ротора при той же нагрузке и ускоряет срыв; слишком высокое создаёт ненужный нагрев.

Микрошаги

MS1 MS2 MS3 Разрешение Шагов/об
low low low Полный шаг 200
high low low Половина 400
low high low Четверть 800
high high low Восьмая 1600
high high high Шестнадцатая 3200

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

Цена — частота импульсов. При делении 1/16 на оси 80 steps/mm для скорости 100 mm/s требуется 8 000 импульсов в секунду. Arduino Uno при программной генерации шагов теряет производительность примерно после 10 000–15 000 в секунду, что создаёт реальный предел для оси с шаговым винтом при 400 steps/mm.

Ток, нагрев и энергетический баланс

Собственное рассеивание A4988 невелико; проблема заключается в плотности тепловыделения, а не в общей мощности. Примерно 0.5 W на фазу при токе 1 A в корпусе почти без меди для отвода тепла. Практические пределы:

Охлаждение Безопасный непрерывный ток
Голый кристалл, неподвижный воздух ~1.0 A
Наклеенный радиатор ~1.2 A
Радиатор и движущийся воздух ~1.5 A
Выше этого Используйте DRV8825 или TMC2209

Тепловая защита не сообщает о себе. Драйвер останавливается, двигатель замирает посреди перемещения, драйвер остывает и запускается снова, и наблюдается ось, «случайно» теряющая часть положения. Если отказ чаще возникает в конце долгой работы или в тёплой комнате, считайте причину термической, пока не доказано иное.

Со стороны питания помните, что преобразователь работает как понижающий преобразователь: ток от источника 24 V значительно ниже тока фазы, поэтому рассчитывайте по мощности, а не складывайте токи фаз. Каждый двигатель с пределом 1.2 A и обмотками 2.8 Ω рассеивает около 8 W всякий раз, когда находится под напряжением, в том числе стоя на месте. См. энергетический баланс робота.

Минимальный рабочий код

const int STEP_PIN = 3, DIR_PIN = 4, EN_PIN = 5;

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(EN_PIN, OUTPUT);
  digitalWrite(EN_PIN, LOW);        // active low — energise the coils
  digitalWrite(DIR_PIN, HIGH);
}

void loop() {
  for (int i = 0; i < 3200; i++) {  // one revolution at 1/16
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(2);           // datasheet minimum is 1 us
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(300);         // this delay is the speed
  }
  delay(1000);
}

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

Какой ток действительно задавать

Номинальный ток на табличке двигателя предполагает условия охлаждения испытательного стенда: крепление к большой алюминиевой плите, неподвижный воздух и 25 °C. Ваша машина — печатный кронштейн в тёплой комнате.

Рабочее правило с обоснованием, а не только числом:

Ситуация Задайте предел Почему
Большой запас момента, важна тишина 60–70% от номинала Момент падает линейно, нагрев — в квадрате
Обычная машина 70–85% от номинала Обычный ответ
Действительно ограничен момент 90–100% от номинала Только с радиатором и воздушным потоком
Выше номинала Никогда Вы покупаете не момент, а нагрев

Причина экономии на нижнем конце содержится во втором столбце. Момент пропорционален току, а нагрев — току в квадрате. Снижение с 1.7 A до 1.2 A сокращает момент на 29% и устраняет половину нагрева:

1.7 A: P = 2 × 1.7² × 2.8 = 16.2 W per motor
1.2 A: P = 2 × 1.2² × 2.8 =  8.1 W per motor

Если расчёт выбора показывает использование 12% доступного момента, отказ от 29% ничего не менял.

Снятие напряжения и вывод, который игнорируют большинство конструкций

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

// Two energised NEMA 17s at 1.2 A dissipate ~16 W doing nothing at all.
digitalWrite(EN_PIN, HIGH);   // active low, so HIGH = coils off

Когда применять:

  • Между заданиями на осях X и Y. Графопостроителю или лазерному порталу незачем удерживать позицию в простое, а 16 W нагрева печатной рамы за час уже существенны.
  • Никогда на оси Z, удерживающей массу, если механизм не самоблокирующийся. Шаговый винт T8 не допускает обратного вращения, поэтому снятие напряжения безопасно. Ременная ось Z опустится, как только ток будет отключён.
  • Никогда посреди перемещения. Ротор продолжит вращаться, а поле остановится, и вы потеряете положение без возможности узнать, насколько. Сначала остановитесь, затем отключайте.

Неожиданная особенность: после снятия напряжения ротор останавливается в ближайшем устойчивом положении — магнитном положении покоя при нулевом токе, — возможно на целый шаг от места удержания. На ременной оси с 80 steps/mm это перемещение 0.2 mm без уведомления, поэтому либо повторяйте поиск исходного положения после каждого отключения, либо примите, что отключение в простое и точность менее десятой доли миллиметра несовместимы.

SLEEP действует глубже: он отключает также внутренний регулятор и снижает потребление с миллиампер до микроампер, но требует около 1 ms для пробуждения и сбрасывает внутреннее положение шага драйвера в исходный микрошаг. Именно последняя деталь — ловушка: выход из SLEEP может сдвинуть двигатель на целый шаг. Для почти любой хобби-машины нужен ENABLE, а SLEEP следует перемычкой поднять вверх и забыть.

Диагностика

Симптом Причина Исправление
Вообще ничего не происходит Высокий уровень ENABLE или плавающий RESET Соединить ENABLE с землёй; соединить RESET с SLEEP перемычкой
Двигатель вибрирует, но не вращается Пары обмоток перепутаны Определить пары мультиметром в режиме сопротивления
Плата погибла при включении Нет объёмного конденсатора на VMOT Электролитический 100 µF рядом с выводами
Останавливается посреди движения, позже возобновляет Тепловая защита Снизить Vref; добавить радиатор и воздушный поток
Слабый, пропускает шаги при небольшой нагрузке Слишком низкий Vref Переизмерить; проверить обозначение сопротивления
Двигатель сильно перегревается Слишком высокий Vref Пересчитать — использовано правильное R_sense?
Пропускает шаги только на высокой скорости Слишком низкое напряжение питания Повысить VMOT; ток не поможет
Пропускает шаги только при ускорении Слишком крутой разгон Снизить ускорение или повысить Vref
Громко на каждом шаге Полный шаг — выводы MS плавающие Соединить MS1–MS3 с высоким уровнем
Работает на стенде, но не в раме Концевой выключатель или провод STEP собирает шум Прокладывать сигнальные провода в стороне от кабелей двигателей

A4988 или альтернативы?

Драйвер Ток Микрошаг Шум Когда выбирать
A4988 1 A / 1.5 A с охлаждением 1/16 Слышимый Дешёвый, повсеместный, с хорошей документацией
DRV8825 1.5 A / 2.2 A с охлаждением 1/32 Слышимый Нужен больший ток или более мелкий шаг
TMC2208 ~1.2 A 1/256 Почти бесшумный Важен шум
TMC2209 ~1.7 A 1/256 Почти бесшумный Важен шум и поиск исходного положения без датчиков
L298N 2 A — — Двигатели постоянного тока. Без регулирования тока.
TB6612FNG 1.2 A — — Двигатели постоянного тока, эффективно

Строки L298N и TB6612FNG приведены потому, что оба технических описания упоминают шаговые двигатели и оба формально могут повернуть такой двигатель. Ни один не регулирует ток, поэтому получится лишь часть момента и много паразитного нагрева. Это драйверы двигателей постоянного тока; используйте их для приводных колёс.

Драйверы TMC стоят дополнительных денег, как только машина находится в помещении, где её слышно. Та же работа, более гладкая форма тока, а принтер с ними создаёт шум вентилятора вместо шума двигателя.

Где применяется

Этот драйвер питает обе оси конструкции графопостроителя, а его правильная настройка — контрольная точка дорожной карты точного движения. Полное руководство по подключению и настройке Vref подробно описывает процедуру.

Исследуйте граф

Используется в этих сборках

Проекты, учебные пути и симуляторы, в которых используется Драйвер шагового двигателя A4988.

Сравнение

Альтернативы

Вопросы

Драйвер шагового двигателя A4988: частые вопросы

Как рассчитать Vref для A4988?

Vref равен желаемому току фазы, умноженному на сопротивление резистора измерения тока и на восемь. Для целевого тока 1.2 A на плате с резисторами 0.1 ом получается 1.2 × 0.1 × 8 = 0.96 V; его измеряют между подвижным контактом подстроечного резистора и землёй при питании VMOT и отключённом двигателе. Важнее всего сопротивление резистора измерения тока: платы выпускаются с обозначением 0.1 ом как R100 или 0.05 ом как R050, и неверный выбор даёт ровно вдвое больший ток двигателя.

Почему мой A4988 сильно нагревается и отключается?

Почти всегда предел тока задан слишком высоко. Голый A4988 выдерживает примерно 1 A непрерывно; с радиатором и обдувом около 1.5 A. При превышении срабатывает тепловая защита: двигатель останавливается посреди движения, затем драйвер запускается после охлаждения, что выглядит как случайная потеря шагов. Переизмерьте Vref с учётом реально установленного сопротивления, установите радиатор и направьте на него вентилятор. Если действительно нужно больше 1.5 A, A4988 — неверная деталь.

Чем A4988 отличается от DRV8825?

DRV8825 выдерживает больший ток (около 1.5 A без охлаждения и 2.2 A с ним), обеспечивает деление 1/32 вместо 1/16 и допускает более высокое напряжение двигателя 45 V. Он совместим по выводам и вставляется в то же гнездо, но формула Vref другая: Vref равен току, умноженному на 0.5, а подстроечный резистор вращается в противоположную сторону. Замена без повторного чтения формулы — распространённый способ сжечь двигатель.

Действительно ли конденсатор на VMOT обязателен?

Да. Электролитический конденсатор 100 µF между VMOT и землёй, физически расположенный рядом с платой, обязателен, а не рекомендуется. Преобразователь потребляет ток резкими всплесками, и без рядом расположённой объёмной ёмкости индуктивность проводов источника превращает их в выбросы напряжения, превышающие предел микросхемы 35 V. Платы, умирающие сразу после включения, обычно погибают именно по этой причине.

Что будет, если оставить MS1, MS2 и MS3 неподключёнными?

У них есть внутренние подтяжки вниз, поэтому плавающее состояние выбирает полный шаг: 200 шагов на оборот и слышимый звон двигателя на каждом шаге. Соедините все три с высоким уровнем для шага 1/16, который используют большинство конструкций. Это не повышает точность под нагрузкой, но устраняет звон, делая машину тише и улучшая качество поверхности. Цена — в шестнадцать раз больше импульсов на миллиметр, которые должен формировать микроконтроллер.

Может ли A4988 управлять двигателем постоянного тока или сервоприводом?

Нет. Это биполярный драйвер шагового двигателя: он ожидает две обмотки и управляет ими определённой последовательностью тока. Двигателю постоянного тока (DC) нужен H-мост вроде L298N или TB6612FNG; хобби-сервоприводу достаточно сигнала PWM 50 Hz и драйвер вообще не нужен. Интерфейс STEP и DIR микросхемы A4988 не имеет смысла ни для одного из них.

Дополнительные материалы

Источники