Коробка с тремя A4988 приезжает в пупырчатом пакете вместе с тремя радиаторами на двустороннем скотче — и на этом помощь поставщика заканчивается. Шестнадцать ножек с двух сторон, мотор с четырьмя неподписанными проводами, и ни слова о том, что куда. Первый модуль я собирал по разрозненным картинкам из сети: заработал он через три дня, два из которых ушли на выяснение, что два моторных провода я поставил не в свои пары. Этот урок — карта, которой мне тогда не хватило: вся разводка от коробки до первого оборота, порядок сборки и ловушки, в которые я успел попасть лично.
Реквизит на столе: Arduino Uno, сам A4988, NEMA 17 из урока про мотор, адаптер на двенадцать вольт и два ампера, электролит на сто микрофарад и мультиметр. Мозг связки — интерфейс Step/Dir: два пина вместо четырёх, Arduino только щёлкает импульсами, а фазы по обмоткам драйвер раскладывает сам. Здесь я разбираю другую половину дела: куда что воткнуть и в каком порядке, чтобы чип дожил до первого оборота.
Маршрут такой: карта ножек слева и справа, поиск пар обмоток мультиметром, перемычки микрошага MS1-MS3, ток под винтом за пять минут, скетч на двести импульсов и модель транслятора в симуляторе. Всё с числами и условиями: что просто работает на столе и что убивает модуль мгновенно.
Карта ножек: логика слева, сила справа
На логической стороне модуля девять контактов: EN, MS1, MS2, MS3, RST, SLP, STEP, DIR и земля. Часть из них живёт без вашего участия: ENABLE притянута к земле внутри чипа, а RESET и SLEEP на приличных модулях соединены заводской перемычкой и подтянуты к плюсу — драйвер бодрствует с включением питания. Три ножки MS1-MS3 выбирают деление шага, STEP принимает импульсы, DIR держит направление. Для первого запуска из всей девятки нужны только две сигнальные линии и общий GND — это и есть честный ответ на запрос «подключить A4988 за десять минут».
Моторная сторона конкретнее по именам: VMOT от восьми до тридцати пяти вольт, второй GND, четыре клеммы 1B, 1A, 2A, 2B и VDD для логики — от трёх до пяти с половиной вольт, сажается прямо на пять вольт Arduino. Земли обеих сторон соединяются в одной точке: без общей земли STEP и DIR висят в воздухе, и мотор молчит. Электролит на сто микрофарад идёт между VMOT и землёй вплотную к клеммам, раньше моторного провода: выброс индуктивности при обрыве под током пробивает чип за один щелчок, физику этого мы разбирали в уроке про фильтр питания.
Пары обмоток ищутся мультиметром в режиме прозвонки: сопротивление между проводами одной катушки — единицы ом, между разными — мегаомы и бесконечность. Нашли две пары — одна идёт на 1A-1B, вторая на 2A-2B, и порядок внутри пары не важен: поменяете провода местами, мотор просто закрутится в другую сторону. А вот перепутать провода из разных пар — верный способ получить дёрганье на месте и горячий чип: магнитные потоки складываются в кашу, транслятор честно отщёлкивает шаги, а вал стоит.
| Куда | Откуда | Цифры | Грабля |
|---|---|---|---|
| VDD | 5 В Arduino | 3-5,5 В | Без VDD чип мёртв, даже если VMOT подан |
| VMOT | адаптер 8-35 В | 12 В / 2 А — типовой выбор | Электролит 100 мкФ раньше моторного провода |
| STEP, DIR | D4 и D3 | фронт STEP от 1 мкс | DIR устаканить за 200 нс до фронта |
| 1B 1A 2A 2B | пары обмоток | 1-10 Ом внутри пары | Перепутанные пары — рывки на месте |
Порядок сборки, который экономит модули, я выучил на похоронах второго экземпляра. Питание выключено; между VMOT и землёй встаёт электролит; полярность проверяется дважды, потому что защиты от переполюсовки внутри нет. Дальше моторные пары в клеммник, VDD на пять вольт, сигнальные линии, ток под винтом — и только в конце VMOT. И одно правило на все годы: не выдёргивайте моторный разъём под током — обмотка с накопленной энергией разряжается в ключи, и живучесть чипа зависит не от вашей реакции, а от конденсатора, который вы поставили в пункте первом.
MS1-MS3 и ток под винтом
Деление шага задаётся тремя уровнями, и таблица нелинейная: ноль-ноль-ноль — полный шаг, единица на MS1 — половина, на MS2 — четверть, MS1 вместе с MS2 — восьмая, все три — шестнадцатая. На дешёвых модулях это площадки под перемычки, на приличных — три пина наружу; я всегда веду их на цифровые ноги Arduino: смена деления на лету стоит ноль, а механику комбинаций подсказывает таблица с ценой каждого деления. Новая комбинация читается драйвером на следующем фронте STEP, поэтому переключайтесь между сериями импульсов, а не посреди хода.
Ток фазы выставляется до всякого запуска и занимает пять минут. Формула: ток равен Vref, делённому на восемь сопротивлений сенсора; на типовых клонах с маркировкой R100 это ноль-один ома, и вся арифметика сжимается до восьмидесяти сотых вольта на ампер. Мультиметр на предел два вольта, чёрный щуп на GND, красный — на металлический винт подстроечника, крутить лучше керамической отвёрткой. Цель — не паспорт мотора, а семьдесят-восемьдесят процентов от него: мотор на ампер с четвертью просит винт на вольт. Полную теорию чоппера и замеры прогрева я делал в уроке про Vref, здесь только порядок действий.
Ток под винтом держится и на месте: драйвер честно подкачивает фазы, пока мотор стоит, и связка греется так же, как в работе, — типовая пара мотор-драйвер за полчаса простоя набирает те же шестьдесят-восемьдесят градусов, что и под нагрузкой. Если механизму удержание не нужно, ведите EN на свободный пин: единица на этой ножке отпускает ключи, обмотки остывают, перестаёт греться и чип. Щёлкать ею можно без ограничений — на ход это не влияет: вернули ноль, и транслятор продолжит с того же шага, позицию он не забывает.
Горячий корпус сам по себе не диагноз: у шаговых двигателей рабочий нагрев до восьмидесяти градусов — паспортная норма, а не брак; проверка ладонью ловит лишь грубые превышения, для остального есть мультиметр и минута ожидания.
// A4988: STEP на D4, DIR на D3, MS1-MS3 без перемычек (полный шаг).// Один оборот NEMA 17: 200 импульсов, около 150 об/мин.const int STEP_PIN = 4;const int DIR_PIN = 3; void setup() { pinMode(STEP_PIN, OUTPUT); pinMode(DIR_PIN, OUTPUT); digitalWrite(DIR_PIN, HIGH); // направление фиксируем до первой серии delay(10); // запас против требуемых 200 нс} void loop() { for (int i = 0; i < 200; i++) { // 200 фронтов - ровно оборот digitalWrite(STEP_PIN, HIGH); delay(1); // ширина импульса: даташит просит от 1 мкс digitalWrite(STEP_PIN, LOW); delay(2); // пауза задаёт скорость } delay(1000);}Скетч — десять строк, и в каждой есть причина. Фронт из нуля в единицу двигает транслятор на один шаг, ширина импульса — миллисекунда против даташитной микросекунды: запас стоит ноль, а дешёвые клоны не всегда успевают за ровно одной. Пауза две миллисекунды между шагами даёт триста шагов в секунду — около ста пятидесяти оборотов в минуту на холостом валу. DIR установлен один раз в setup: на серии импульсов он не меняется, а при смене направления в цикле давайте линии устояться перед первым фронтом.
Разгон здесь не нужен по одной причине: триста шагов в секунду — внутри стартовой зоны NEMA 17, мотор трогается с места без подготовки. Повесите на вал ремень и груз — потолок мгновенного старта упадёт вдвое-втрое, скетч загудит на месте, и вот тогда понадобится профиль разгона; ему посвящён третий урок этого кластера. Пока же задача ровно одна: услышать ровный тихий ход и убедиться, что карта ножек легла правильно.
Стенд: транслятор в симуляторе
Честно, как всегда: A4988 в браузере не живёт, и я не буду делать вид. Модель ниже — транслятор в чистом виде: кнопка D2 посылает фронт на воображаемый STEP, тумблер D3 задаёт уровень DIR, светодиод D12 вспыхивает на каждый импульс, а Serial печатает позицию в микрошагах и номер полного шага из двухсот. Ручка A0 изображает подстроечник: ток считается по формуле для R100, чтобы рука запомнила масштаб — восемьдесят сотых вольта на винте за каждый ампер в обмотке.
Прогон: нажмите кнопку шестнадцать раз — счётчик насчитает первый полный шаг, двести нажатий уложатся в оборот. Щёлкните тумблер посреди серии — позиция развернётся назад, как настоящий DIR. Поднимите Vref выше тысячи милливольт — ток перевалит за ампер, а это зона, где клон без радиатора уже жарится.
Модель лукавит ровно в одном месте: деление в ней жёстко шестнадцатое, тогда как реальная плата делит так, как велели MS1-MS3. В остальном это точный портрет первого запуска: позиция, направление, ток на винте — ровно те три числа, которые вы будете смотреть в первый вечер. Когда они сойдутся с бумажкой, подключайте VMOT и запускайте скетч из блока выше: двести фронтов — и вал уедет ровно на оборот.
И последнее, что стоит сделать до включения силовой части: прогнать глазами порядок из таблицы. Восемьдесят процентов рабочих затруднений с A4988 — не код, а разводка: висящая перемычка сброса, перепутанные пары, забытый электролит. Сборка по чек-листу занимает те же десять минут, что и наугад, — разница только в том, доживёт ли модуль до второго вечера.
- 1. Какое событие на пине STEP двигает мотор ровно на один шаг?
- 2. MS1 подтянута к единице, MS2 и MS3 в нуле. Какое деление?
- 3. Vref выставлен на 0,8 В, сенсоры с маркировкой R100. Ток фазы?
- 4. Что подключается между VMOT и GND вплотную к модулю до мотора?
- 5. Мотор дёргается на месте и не проворачивается. Что проверить первым?
- Логика: VDD 3-5,5 В и две линии STEP/DIR; EN, RST, SLP подтянуты сами, перемычку RST-SLP проверьте
- Сила: VMOT 8-35 В отдельно от платы, земля общая, электролит 100 мкФ раньше моторного провода
- Пары обмоток ищутся прозвонкой: единицы ом внутри пары; перепутанная пара — рывки на месте
- MS1-MS3 дают 1/1, 1/2, 1/4, 1/8 и 1/16; комбинация читается на фронте STEP
- Vref: 0,8 В на ампер при R100, цель — 70-80% номинала мотора
Частые вопросы по теме урока
- Какое событие на пине STEP двигает мотор ровно на один шаг?
- Счётчик драйвера тикает по фронту. Ширина импульса — от микросекунды, а DIR должен устаканиться за двести наносекунд до фронта. Фронт из нуля в единицу
- MS1 подтянута к единице, MS2 и MS3 в нуле. Какое деление?
- Единица на MS1 — половина шага. Комбинации нелинейные, MS3 поднимается только на делении 1/16 — таблицу держите под рукой. Половина
- Vref выставлен на 0,8 В, сенсоры с маркировкой R100. Ток фазы?
- На R100 ампер стоит восемьдесят сотых вольта. Вольт-двадцать пять на винте — уже ампер с четвертью. 1 А
- Что подключается между VMOT и GND вплотную к модулю до мотора?
- Электролит глушит выбросы шины моторного питания; обрыв провода под током без него стоит чипа. Электролит 100 мкФ
- Мотор дёргается на месте и не проворачивается. Что проверить первым?
- Дёрганье на месте — классика перепутанных пар: провода из разных катушек на одной клеммной паре. Внутри настоящей пары — единицы ом. Пары обмоток мультиметром