Первый A4988 я купил вместе с NEMA 17 и CNC-шилдом, воткнул модуль в колодку, крутанул подстроечник на глазок и запустил ось. Мотор сделал два шага, загудел и замер, а через минуту на чипе нельзя было держать палец. Я списал всё на брак и заказал ещё три модуля — четвёртый повёл себя точно так же, и только тогда до меня дошло, что брак тут не в партии: подстроечник с завода может стоять где угодно между нулём и потолком, а я его ещё и подкрутил вверх, чтобы «вернее».
Зеркальная история случилась через полгода на другом станке. Драйвер холодный как лёд, а ось X срывала шаги на каждом быстром ходе: гравировка уезжала вбок на два-три миллиметра за строку. Ток фазы стоял заниженный — мотору банально не хватало тяги на разгон. Обе истории лечатся одной отвёрткой и мультиметром за пять минут; на глаз — не лечатся никогда.
В этом уроке разберём, что именно регулирует подстроечник, откуда в формуле берётся восьмёрка и сопротивление, как измерить опорное напряжение мультиметром и почему целиться надо не в паспортный ток мотора, а в 70-80% от него. А в конце — модель расчёта в симуляторе: ручка Vref, ток в Serial и индикатор перегрева.
Что крутит подстроечник
A4988 не держит на обмотке постоянное напряжение — он работает чоппером. Мост быстро включается и выключается, а компаратор смотрит на падение напряжения на токочувствительном резисторе: ток дошёл до порога — мост прикрылся, ток просел — открылся снова. По обмотке идёт пила вокруг заданной величины, а не ровная полка. Порог сравнения задаёт опорное напряжение — то самое Vref с подстроечника, и вся настройка тока сводится к выставлению вольт, а не ампер.
Формула из даташита: I = Vref / (8 × Rs), где Rs — сопротивление двух токочувствительных резисторов на плате. На большинстве модулей стоят чёрные прямоугольнички с маркировкой R100, то есть 0,1 Ом: тогда I = Vref / 0,8, а в обратную сторону — Vref = ток × 0,8. Хотите ампер на фазу — выставьте 0,8 вольта. Но прежде чем считать, посмотрите маркировку: встречаются платы с R050 — 0,05 Ом, и там формула другая, Vref = ток × 0,4. Чужая формула на чужой плате даёт вдвое больше тока, чем вы думали. А механика рывка, за который чип платит током, — это те самые такты фаз, партитуру которых мы читали по светодиодам: чоппер просто заменяет грубые переключения быстрым пилением.
Целевая точка — не паспортный ток, а 70-80% от него. Мой NEMA 17 с номиналом 1,7 А на фазе живёт при Vref около 1,1 В: 1,1 / 0,8 = 1,375 А, это 81% от шильдика. Запас нужен не из трусости: при полном токе чип и мотор выходят на температурный предел, а момент от последних двадцати процентов растёт медленнее, чем нагрев. Моё правило — четверть в запасе; если механизм еле тянет на 80%, я сначала смотрю механику и редуктор и только потом добавляю ток, и никогда не иду выше 90%.
| Что | Как считаем | Числа | Примечание |
|---|---|---|---|
| Ток по Vref, Rs = 0,1 Ом (R100) | I = Vref / 0,8 | 0,8 В дают 1000 мА | Самый частый вариант модулей |
| Та же схема, но R050 | I = Vref / 0,4 | 0,4 В дают 1000 мА | Маркировку смотреть до расчёта |
| Целевая настройка | 70-80% от номинала мотора | 1,7 А → Vref 1,1 В | Паспортный ток — предел, не рабочая точка |
| Замер мультиметром | Чёрный на GND, красный на винт | Предел шкалы 2 В | Отвёртка керамическая, не металлическая |
Порядок замера я записал на карточку и повесил у станка. Логику драйвера запитываем — хватает USB от платы; моторный винт можно вообще не подключать: Vref живёт в слаботочной части и мотору для настройки не нужен. Мультиметр — на постоянные вольты, предел 2 В: чёрный щуп на GND модуля, красный — на металлический винт подстроечника. На экране то самое опорное напряжение. Крутим винт и смотрим на цифры: пол-оборота винта перемещают Vref на заметную долю вольта, спешить некуда.
Дальше арифметика на конкретных моторах. Мелкий мотор на 0,4 А: Vref = 0,4 × 0,8 = 0,32 В. Рабочая лошадка на 1,2 А: 0,96 В. Мой 1,7-амперный: 1,36 В на полный ток — но я ставлю 1,1 В с запасом. Первая поездка после настройки бывает с сюрпризом: механизм, который дёргался на перегретом токе, едет ровнее, а вот мотор, которому тока реально не хватает, загудит под нагрузкой. Гудение после снижения — повод пересмотреть редуктор и механику, а не вернуться к кипящему чипу.
Отдельно про прогрев. Настройте ток, дайте станку поработать полчаса и перемерьте винт: у прогретого чипа опорное напряжение уползает на 20-30 мВ — у меня именно так и было. Немного, но на границе между 80% и 90% от номинала эти милливольты и живут. И ещё одно наблюдение с ладонью: тёплый чип — норма, невозможно держать палец две секунды — снижайте ток или ставьте радиатор.
// A4988: DIR=2, STEP=3, MS1=4, MS2=5, MS3=6, EN=8// перед подачей моторного питания выставьте Vref по формуле из урокаconst int DIR_PIN = 2;const int STEP_PIN = 3;const int EN_PIN = 8;const int STEPS_REV = 200; // NEMA 17: шагов ротора на оборотconst int MICROSTEP = 8; // 1/8: MS1 и MS2 в HIGH, MS3 в LOW void setup() { pinMode(DIR_PIN, OUTPUT); pinMode(STEP_PIN, OUTPUT); pinMode(EN_PIN, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); digitalWrite(4, HIGH); // микрошаг 1/8 digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(EN_PIN, LOW); // LOW = драйвер включён Serial.begin(9600); Serial.println("Test A4988: mikcoshag 1/8");} void runSteps(int n) { for (int i = 0; i < n; i++) { digitalWrite(STEP_PIN, HIGH); delayMicroseconds(350); digitalWrite(STEP_PIN, LOW); delayMicroseconds(350); }} void loop() { digitalWrite(DIR_PIN, HIGH); unsigned long t0 = millis(); runSteps(STEPS_REV * MICROSTEP); // полный оборот: 200 x 8 импульсов Serial.print("Oborot za ms="); Serial.println(millis() - t0); delay(1500); digitalWrite(DIR_PIN, LOW); runSteps(STEPS_REV * MICROSTEP); delay(1500);}В скетче три места, где новички спотыкаются. Первое: EN на пине 8 должен быть в LOW, иначе драйвер спит, и мотор не отзовётся ни на что — я полчаса искал обрыв в обмотке, которая была жива. Второе: шаги считаются на входе драйвера, то есть 200 шагов ротора умножаются на микрошаг — при 1/8 полный оборот NEMA 17 требует 1600 импульсов STEP, что и записано в runSteps. Третье: между импульсами пауза 700 микросекунд — это около 85 оборотов в минуту; для первого теста скорость спокойная, на ней срыв шагов почти исключён. Замер времени через millis() — приём из урока про неблокирующий цикл, там же разобрано, почему длинные паузы внутри loop() портят опрос кнопок.
Симптомы неправильного тока я теперь различаю на слух и на ощупь. Перегретый чип узнаётся пальцем: обжигает через минуту работы, а мотор останавливается минуты через две и продолжает дёргаться на месте — тепловая защита отработала, чип остыл и включился снова. Заниженный ток выглядит иначе: на столе всё красиво, под нагрузкой мотор гудит и стоит, счёт шагов уезжает — ротор сорвало, и мы этот механизм разбирали в уроке про скорость и срыв шагов. Отличать одно от другого проще всего ладонью: горячо — снижайте, холодно и гудит — поднимайте.
К слову, с 28BYJ-48 всей этой кухни нет: ток фазы там около 90 мА и предопределён сопротивлением обмоток, плате ULN2003 настраивать нечего — она просто открывает каналы. Vref возникает там, где драйвер режет ток чоппером: A4988, DRV8825, TMC2209, у каждого своя формула. Про двух последних говорит следующий урок, а пока приучите палец к одному жесту: тронул драйвер — оценил температуру.
Модель расчёта в симуляторе
Честно сразу: драйвер в симуляторе не эмулируется — чипы с чоппером в браузере не живут, и я не буду делать вид, что живут. Ниже модель расчёта: ручка потенциометра A0 изображает подстроечник, Serial печатает Vref в милливольтах и ток фазы по формуле для Rs = 0,1 Ом, светодиод D12 загорается там, где реальный чип без радиатора готовился бы к тепловой защите — выше ампера. Стрелка-циферблат крутится вхолостую: чтобы рука помнила, что за расчётом стоит живой вал.
Задачи на прогон. Выставьте ползунком 800 мВ и сверьте с бумажкой: ток должен лечь ровно на ампер. Поднимите выше 1000 мВ — индикатор загорится и Serial напечатает совет снизить. Опустите ниже 300 мВ — совет сменится на разговор о срыве шагов. Когда ползунок встал в рабочую зону, посчитайте для своего мотора: номинал с шильдика умножить на 0,8 и ещё раз на 0,8 — вот и Vref в вольтах, с запасом в двадцать процентов. Строки в Serial идут парами имя=значение — читать их удобно в Serial-мониторе, как мы делали в самом начале пути.
- 1. По какой формуле считают ток фазы для A4988 с резисторами R100?
- 2. Какое Vref соответствует току 1 А при Rs = 0,1 Ом?
- 3. Сколько от номинального тока мотора стоит выставлять на подстроечнике?
- 4. Мотор гудит и стоит под нагрузкой, драйвер холодный. Что это чаще всего?
- 5. На плате стоят резисторы с маркировкой R050. Как считать Vref?
- I = Vref / (8 × Rs); при Rs = 0,1 Ом (маркировка R100) — 0,8 В на каждый ампер фазы
- R050 меняет формулу на Vref = ток × 0,4 — маркировку резисторов смотрите до расчёта
- Замер: чёрный щуп на GND, красный на винт подстроечника; отвёртка керамическая
- Рабочая точка — 70-80% от номинала мотора: 1,7 А → Vref около 1,1 В
- Обжигает палец и останавливается через две минуты — перегрев; холодный драйвер с гудением под нагрузкой — срыв шагов от заниженного тока
Частые вопросы по теме урока
- По какой формуле считают ток фазы для A4988 с резисторами R100?
- Восьмёрка — внутренний коэффициент усилителя чтения тока, 0,1 Ом — сопротивление маркировки R100. В обратную сторону: Vref = ток × 0,8. I = Vref / (8 × 0,1)
- Какое Vref соответствует току 1 А при Rs = 0,1 Ом?
- Vref = ток × 0,8. Восьми вольт там быть не может: подстроечник питается от пяти, а рабочий диапазон опоры — примерно до 1,6 В. 0,8 В
- Сколько от номинального тока мотора стоит выставлять на подстроечнике?
- При полном токе чип и мотор сидят на температурном пределе, а момент растёт медленнее нагрева. Четверть в запасе — моя рабочая точка. 70-80%
- Мотор гудит и стоит под нагрузкой, драйвер холодный. Что это чаще всего?
- Холодный драйвер с гудящим стоячим мотором — классика нехватки тока: ротор не успевает за полем. Горячий чип с дёргающимся мотором — наоборот, перегрев и защита. Заниженный ток и срыв шагов
- На плате стоят резисторы с маркировкой R050. Как считать Vref?
- R050 — это 0,05 Ом, и формула ужмается вдвое: 0,4 вольта на ампер. Маркировку двух чёрных резисторов у чипа смотрите до всяких расчётов. Vref = ток × 0,4