Драйверы шаговых двигателей

Шаговый двигатель удобно поворачивать на заданное число шагов, но его обмотки нельзя подключить прямо к выводам микроконтроллера. Контроллер сообщает, когда сделать очередной шаг и в какую сторону, а силовой драйвер сам выбирает направление и величину токов в двух фазах.
Это разделение особенно важно в приводе каретки, дозатора или поворотного стола. Ошибка в логической линии обычно означает неверную команду. Ошибка в силовой части может перегреть обмотку, разрушить драйвер или вызвать пропуск шагов, после которого программа продолжит считать положение правильным.
Типичный биполярный шаговый привод строится так: STEP/DIR → драйвер → две пары выводов фаз. Мотор получает энергию от отдельного силового источника, а контроллер и неразвязанный драйвер используют общую опору GND. Драйвер регулирует ток обмоток и может дробить полный шаг на микрошаги. Микрошаги повышают командное разрешение и плавность, но сами по себе не гарантируют такую же механическую точность.
Зачем это нужно
У шагового двигателя ток нужен даже на малой скорости и при удержании положения. Кроме того, направление тока в каждой обмотке приходится многократно менять. GPIO микроконтроллера не рассчитан ни на такой ток, ни на энергию, которую индуктивная обмотка возвращает при переключении.
Специализированный драйвер решает несколько задач:
- содержит два силовых моста для двух фаз;
- принимает понятные контроллеру логические команды;
- ограничивает или регулирует ток обмоток;
- формирует последовательность полного шага, полушага или микрошагов;
- обеспечивает режимы сна и отключения;
- у некоторых моделей сообщает об аварии через
FAULT.
Без настройки драйвера ось может гудеть, резко нагреваться, двигаться только в одну сторону или останавливаться при разгоне. Поэтому задача не заканчивается на том, чтобы «мотор закрутился»: нужно проверить ток, фазировку, временные параметры, механику и возврат к известной точке.
Примеры устройств

Шаговые драйверы сильно различаются по форм-фактору. Маленький модуль A4988 ставят на макетный станок, ULN2003 часто идёт вместе с учебным 28BYJ-48, а TB6600 выглядит как отдельный силовой блок с винтовыми клеммами.
| Устройство | Для какого случая подходит | Главное отличие |
|---|---|---|
| A4988 carrier board | малые биполярные шаговые моторы в учебных осях | входы STEP/DIR, микрошаги и настройка ограничения тока |
| DRV8825 carrier board | похожие задачи с другим драйвером и режимами | формула current limit зависит от sense-резисторов на плате |
| ULN2003 + 28BYJ-48 | простые поворотные учебные механизмы | это ключи для униполярного мотора, а не STEP/DIR-драйвер для NEMA-мотора |
| TB6600-модуль | более мощные шаговые моторы с отдельным питанием | ток и микрошаги часто выбираются DIP-переключателями |
| CNC Shield | несколько осей на базе Arduino | сама плата разводит сигналы, а силовые драйверы устанавливаются отдельно |
Дальше речь идёт прежде всего о биполярном шаговом приводе с двумя фазами. Поэтому важно не смешивать учебный 28BYJ-48 с ULN2003 и полноценные STEP/DIR-драйверы: внешне это всё «модули для шаговика», но принцип работы разный.
Главная идея
Драйвер отделяет командный путь от силового пути:
контроллер -- STEP, DIR --> драйвер
источник ---- VM, GND ---> драйвер -- фаза A, фаза B --> мотор
контроллер -------- GND ---------------------|
На входе STEP драйвер видит события. Например, у DRV8825 переход индексатора выполняется по переднему фронту STEP. Вход DIR выбирает направление обхода таблицы состояний. Точные минимальные длительности импульса, а также времена установки и удержания DIR берут из раздела timing requirements конкретной микросхемы.
Силовые выходы драйвера не повторяют STEP как четыре цифровых сигнала. Они коммутируют токи двух обмоток по встроенной таблице. Поэтому линия STEP никогда не должна идти прямо на мотор.
Из чего состоит привод
| Узел | Что делает | Что проверить |
|---|---|---|
| микроконтроллер | формирует STEP, DIR, иногда ENABLE | логические уровни, частоту, длительность и порядок сигналов |
| шаговый драйвер | управляет двумя мостами и токами фаз | диапазон питания, режим шага, current limit, охлаждение |
| силовой источник | отдаёт энергию мотору | напряжение, переходный ток, полярность, запас по мощности |
| двухфазный мотор | превращает последовательность токов в движение | номинальный ток фазы, сопротивление, индуктивность, шаг |
| механическая передача | превращает вращение в полезное движение | трение, люфт, перекос, требуемый момент и ускорение |
| датчик нуля или энкодер | создаёт опорную точку или обратную связь | повторяемость, направление срабатывания, алгоритм ошибки |
У carrier board добавляются разъёмы, sense-резисторы, конденсаторы и орган настройки. Их номиналы определяют формулу тока, поэтому инструкция к похожей плате не обязательно подходит к вашей.
Как найти две пары фаз
У биполярного мотора обычно четыре провода: два относятся к фазе A, ещё два — к фазе B. На полностью обесточенном и отсоединённом моторе пару можно найти омметром: между концами одной обмотки будет конечное сопротивление, между разными обмотками — обрыв. Измерение проводят только без напряжения.
Каждую найденную пару подключают к паре выходов одного моста. Если смешать по одному концу от разных фаз, магнитное поле не сформирует правильную последовательность: мотор будет дрожать, гудеть или стоять. Перестановка двух проводов внутри одной пары меняет условную полярность этой фазы и может изменить направление относительно команды. Любую перекоммутацию выполняют только после снятия питания: производители carrier board отдельно предупреждают, что подключение или отключение мотора при работающем драйвере способно его повредить.
STEP, DIR и ENABLE
| Сигнал | Смысл | Типичная ошибка |
|---|---|---|
STEP | один допустимый активный фронт переводит индексатор на следующее состояние | слишком короткий импульс или слишком высокая стартовая частота |
DIR | выбирает направление следующего перехода | изменение слишком близко к фронту STEP |
ENABLE | разрешает или отключает силовые выходы | считать активный уровень одинаковым у всех драйверов |
SLEEP / RESET | переводит устройство в специальное состояние | забыть подтяжку или время пробуждения |
MODE | выбирает дробление шага | изменить режим без учёта состояния индексатора и частоты |
FAULT | сообщает об аварии, если предусмотрен | подключить открытый сток без подтяжки или игнорировать причину |
Частота STEP задаёт командную скорость. Если у мотора N полных шагов на оборот, а выбран режим с m микрошагами на полный шаг, то приблизительная командная скорость равна:
обороты/с = частота_STEP / (N × m)
Это только пересчёт команд. Формула не доказывает, что ротор выполнил каждое событие. При слишком резком старте доступного момента может не хватить: драйвер продолжит принимать импульсы, а мотор потеряет синхронизацию. Поэтому используют профиль разгона и торможения, настроенный под реальную механику.
Зачем регулировать ток
Обмотка обладает сопротивлением и индуктивностью. Если просто подать постоянное напряжение, ток будет зависеть от сопротивления и может превысить допустимый. Current-regulating driver быстро переключает силовые ключи: ток нарастает, достигает заданного порога, после чего мост переводит фазу в выбранный режим спада. Так драйвер приближает фактический ток к требуемому состоянию таблицы.

Порог задают строго по документации. Например, у DRV8825 полный ток связан с VREF и RSENSE формулой из datasheet. На carrier board Pololu установлен конкретный sense-резистор и доступна своя процедура регулировки. На другом клоне номинал может отличаться. Поэтому правило «поставьте отвёрткой такое напряжение» без проверки платы опасно.
Ток фазы не равен показанию амперметра на входе источника. Драйвер работает как импульсный преобразователь: при более высоком напряжении питания входной средний ток может быть ниже тока обмотки. Для настройки применяют рекомендованный производителем метод, а не выводят ток фазы из одного показания блока питания.
Не касайся случайных точек металлической отвёрткой и не переставляйте провода мотора при включённом источнике. Найдите контрольную точку, формулу и допустимый способ настройки в документации именно своего модуля.
Полный шаг, полушаг и микрошаг
| Режим | Что меняется в драйвере | Практический эффект |
|---|---|---|
| полный шаг | используются крупные состояния токов фаз | простая последовательность, заметные толчки и резонансы |
| полушаг | добавляются промежуточные состояния | меньше командный шаг, обычно плавнее движение |
| микрошаг | токи двух фаз приближаются к синусной и косинусной последовательностям | выше командное разрешение, меньше шум и вибрация на малой скорости |
Микрошаг — это не маленький механический зубец. Драйвер задаёт отношение токов, а ротор занимает равновесное положение под действием магнитного поля, нагрузки и трения. Analog Devices подчёркивает: микрошаговое дробление увеличивает число командных положений, но не улучшает само по себе абсолютную точность. На результат влияют конструктивные допуски мотора, точность токового регулятора, момент нагрузки, люфт и упругость передачи.
Чем мельче микрошаг, тем выше требуемая частота STEP при той же скорости. Кроме того, момент, доступный для смещения между соседними микроположениями, меньше полного удерживающего момента. Поэтому выбор максимального знаменателя не всегда полезен. Его подтверждают измерением движения, шума, нагрева и повторяемости на реальной оси.
Питание, земля и конденсаторы
Логические сигналы и моторное питание выполняют разные задачи. Контроллер может работать от своего стабилизатора, а вход VM — от отдельного источника в рабочем диапазоне драйвера. Для обычного неразвязанного интерфейса их земли соединяют в предусмотренной точке, иначе уровни STEP и DIR не имеют общей опоры.
Возле силового входа ставят локальную ёмкость по reference design. Длинные провода вместе с низко-ESR ceramic capacitor способны образовать контур, в котором возникают выбросы. Pololu для своего carrier board описывает эту опасность и рекомендует дополнительный электролитический конденсатор рядом с платой. Его число нельзя превращать в универсальное: ёмкость, напряжение и расположение выбирают для конкретной проводки и драйвера.
Первый запуск выполняют так:
- Снять питание и определить пары фаз.
- Проверить
VM–GNDна отсутствие случайного короткого замыкания. - Установить конденсаторы и current limit по документации.
- Соединить общий
GND, затем логические линии. - Подать питание от источника с консервативным ограничением тока.
- Отправлять редкие импульсы
STEPпри разгруженной и закреплённой механике. - Проверить направление, нагрев и возврат к метке.
Пример: каретка робота по ходовому винту
Пусть шаговый двигатель вращает винт, а гайка перемещает датчик по направляющей. Программа считает импульсы STEP и знает командное перемещение. Однако реальное положение также зависит от шага винта, люфта гайки, соосности, трения и того, потерял ли мотор шаг.
Для повторяемого старта каретка сначала медленно находит концевик, отходит и повторно подходит к нему с одной стороны. Рабочую скорость повышают только после двунаправленного теста: каретка уходит на заданное расстояние и должна вернуться к метке. Если возврат смещается, не следует сразу увеличивать ток. Сначала проверяют перекос, ускорение, питание, фазные пары и температуру; затем выбирают исправление в пределах datasheet.
Диагностика по признакам
| Признак | Возможные причины | Безопасная следующая проверка |
|---|---|---|
| мотор только дрожит | перепутаны пары фаз, слишком быстрый старт | обесточить, повторно определить пары, снизить частоту |
| вращается не туда | логика DIR или полярность одной фазы | проверить timing и изменить конфигурацию только без питания |
| теряет положение при разгоне | момент нагрузки выше доступного, резкий профиль | выполнить возврат к метке с меньшими скоростью и ускорением |
| сильно греется в покое | завышен current limit, высокий holding current | сверить формулу настройки и допустимую температуру |
| контроллер перезапускается | просадка питания, плохой возвратный провод | измерить VM и логическое питание относительно общей земли |
| на большем microstep нет точности | трение, люфт, ошибки токов, малая добавочная сила | измерить фактическое положение, а не считать его по командам |
Практика
Задание 1. Карта подключения
Нарисуйте для выбранной платы отдельные пути STEP, DIR, VM, общего GND и четырёх выводов мотора. Отметьте две пары фаз, местоположение bulk-конденсатора и контрольную точку настройки тока. Не подключайте питание, пока схема не сверена с datasheet и руководством платы.
Задание 2. Расчёт командного движения
По шагу двигателя, дроблению драйвера и передаче рассчитайте число импульсов на один оборот и на один миллиметр каретки. Отдельно перечислите причины, по которым фактическое перемещение может отличаться от расчёта.
Задание 3. Профиль разгона
Спроектируйте последовательность тестов от редких импульсов до рабочей скорости. Для каждого этапа задайте наблюдения: возврат к метке, ток источника, шум, температура и пропуск шага. Готовые универсальные частоты не используйте.
Задание 4. Сравнение режимов
При одинаковой механической скорости сравните полный шаг и два режима микрошагов. Зафиксируй требуемую частоту STEP, звук, нагрев и разброс фактических положений по внешнему датчику. Ответ заранее не подставляй.
Проверьте себя
- Почему шаговый мотор нельзя питать непосредственно от GPIO?
- Какие две разные задачи выполняют линии
STEPиDIR? - Почему у биполярного двухфазного мотора к драйверу идут четыре силовых провода?
- Зачем драйвер регулирует ток обмотки, а не только переключает напряжение?
- Почему ток источника нельзя автоматически считать током одной фазы?
- Чем командное разрешение микрошагов отличается от механической точности?
- Почему слишком высокая стартовая частота может привести к пропуску шагов?
- Какие проверки нужно выполнить до изменения фазных проводов или current limit?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
- Шаговый драйвер — силовой узел, который по логическим командам формирует токи обмоток.
- Фаза — отдельная обмотка двигателя; у двухфазного биполярного мотора две пары выводов.
- Индексатор — внутренняя логика, выбирающая очередное состояние токов фаз.
- STEP — логический вход события следующего шага или микрошагового состояния.
- DIR — вход выбора направления последовательности состояний.
- Полный мост — четыре силовых ключа, меняющие направление тока в одной обмотке.
- Current limit — настроенный предел регулируемого тока фазы.
- Sense-резистор — резистор, по падению на котором драйвер оценивает ток.
- Decay mode — способ изменения тока после достижения порога регулирования.
- Микрошаг — промежуточное командное состояние, полученное отношением токов двух фаз.
- Пропуск шага — потеря синхронизации между счётчиком команд и реальным положением ротора.
- Профиль разгона — постепенное изменение частоты шагов с учётом доступного момента.
Связанные темы
- Зачем нужен драйвер — почему логика и силовой ток разделены.
- H-мост — как мост меняет направление тока в обмотке.
- PWM-управление — как импульсное переключение влияет на средний ток.
- Драйверы коллекторных моторов — чем выбор DC-драйвера отличается от STEP/DIR-системы.
- ESC для бесколлекторных моторов — электронная коммутация трёхфазного мотора.
- Защита и отладка силовой части — безопасная проверка питания, земли и нагрева.
Источники
- Texas Instruments. DRV8825 Stepper Motor Controller IC datasheet
- Allegro MicroSystems. A4988 DMOS Microstepping Driver with Translator datasheet
- Microchip. AN3353: 3-Axis Stepper Motor Control
- Microchip. AN907: Stepping Motors Fundamentals
- Analog Devices. Mastering Precision: Understanding Microstepping in Motion Control
- Pololu. DRV8825 Stepper Motor Driver Carrier