Управление шаговым двигателем с помощью Arduino
В этом посте я постараюсь вкратце рассказать про шаговые электродвигатели, и как с ними можно работать с помощью нашего любимого ардуино.
Многие из вас знакомы с маленькими моторчиками, из которых исходят всего 2 провода, они часто встречаются в детских игрушках, например, в машинках.

Это коллекторные электродвигатели постоянного тока. Они могут напрямую подключатся к источнику питания и будут всегда вращаться с постоянной скоростью, в зависимости от подаваемого напряжения. Если необходимо изменить направление вращения, то на нашем моторе нужно просто поменять местами «+» и «-» и он сразу начнёт крутиться в другую сторону. За счёт их простой конструкции, они имеют небольшую стоимость и простоту в управлении.
Но есть ещё один из распространенных типов двигателей — это шаговые электродвигатели.
Вы могли их встречать, если разбирали CD-DVD привода, жёсткие диски, принтеры или другие электронные устройства, в механической части которых нужно чётко контролировать обороты, перемещения или другие необходимые кинематические движения.
Вот так выглядит шаговый электродвигатель с винтовым валом из оптического привода:

Как видно — здесь уже больше, чем 2 провода и напрямую подключить такой мотор к источнику питания просто так не получиться из-за совсем другой конструкции самого двигателя. Если для нашего первого моторчика достаточно было подать «+» и «-» на соответственные клемы и он начинал вращаться, то для шагового электродвигателя нужно подавать цифровые электронные сигналы управления, которые будут сообщать двигателю на сколько и в какую сторону ему необходимо вращаться. Это возможно осуществить с помощью устройства, которое будет генерировать и отправлять эти сигналы на драйвер, а он, в свою очередь, напрямую управлять обмотками двигателя.
Мы рассмотрим пример, как подключить шаговый электродвигатель к Arduino Mega 2560 — именно оно и будет тем устройством, которое генерирует нужные электронные сигналы управления.
Я взял мотор формата Nema 17 — это гибридный шаговый двигатель, который часто встречается в 3Д принтерах, ЧПУ системах, робототехнике и т.д.
Фото двигателя в разрезе:

Драйвер на микросхеме TB6600 — это довольно неплохой контроллер, который можно использовать с двигателями до 4.5 А, 50 В. Для домашних 3Д принтеров и ЧПУ систем его полностью достаточно.

Чтобы драйвер работал, необходим внешний источник питания с напряжением 8-50 В (рекомендуется 36 В). Именно с него наш двигатель будет получать энергию для своей работы. А логические сигналы Dir — направление вращения и Pulse — сигнал шага, драйвер будет получать от ардуино.
У данного двигателя 4 обмотки: A+, A-, B+, B-, их нужно соединить с соответствующими выходами на плате драйвера.

Для управления шаговым двигателем можно использовать различные библиотеки, которые упрощают жизнь, если необходимо как-то динамически управлять двигателем, например «AccelStepper» и тому подобные. Также есть различные программные комплексы для управления 3Д принтерами или ЧПУ станками.
Мы же рассмотрим простой пример вращения двигателя с постоянной скоростью, который не сложно будет повторить всем желающим. Также, так ещё удобно проверять общее состояние двигателя.
Здесь написан цикл, который беспрерывно будет отправлять логические сигналы к нашему драйверу, а он уже на двигатель.
Примерно так всё работает:
P.S. Сильно в теорию я не вдавался, потому что на это нужен не один пост, да и не всем она понравится 🙂

Arduino & Pi
1.2K поста 19.1K подписчиков
Правила сообщества
В нашем сообществе запрещается:
• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)
• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском
• Выкладывать код прямо в посте — используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)
• Рассуждать на темы политики

P.S. Сильно в теорию я не вдавался, потому что на это нужен не один пост, да и не всем она понравится 🙂
Почему хотя бы не рассказать об отличиях униполярного от биполярного двигателя? Почему не привести схему модуля(хотя бы из даташита на микросхему)?
Ладно упущен режим микрошага, но основу то можно было скопипастить написать.
Зачем было использовать ардуину? Много нагляднее было бы пару кнопок повесить.
Ребят, вижу тут есть знающие люди.
Собираю фотопиццу (мало ли кто знаком), не крутит шаговый двигатель, бывает после танцев с бубном крутит, но очень странно (не по программе).
Драйвер шагового двигателя менял — не помогло
В чем может быть проблема?

Автор показывает, как быстро и равномерно крутится шаговый двигатель. Ясно. Понятно. Тема раскрыта на 10 из 10.
а обязательно покупать эту здоровую мандулу? DRV8825 прекрасно справляется с шаговиками до NEMA17 включительно и стоит в несколько раз дешевле + под них на ардуины есть такиеже дешманские шилды — например ардуино 2560 + шилд + 5 драйверов = 1050рублей на али
а можно статью про то, как с компа управлять этим всем. желательно с кодом.
т.е., допустим, мне надо,чтобы после нажатия кнопки на компе, двигатель совершал серию поворотов. как это программируется?
такое ощущение, что автор и рад бы нам рассказать о шаговиках, но не разбирается в теме абсолютно. вешать NEMA17 на такой монструозный драйвер? перепутать количество обмоток? использовать такой дикий метод управления?
хотя бы схему шаговика в пэинте нарисовали, авось сами разобрались бы, как он работает.
Похоже, этим драйвером мотор от сидюка не запустишь — напряжение слишком высокое. У мотора +5в, а питание драйвера от 8 в начинается.
Вот расскажите мне как вы к этим двигателям приделываете достойно какую нибудь звездочку или сверлышко?
. ну т.е. у меня на одном таком движке было по маркировке до 38V и 3А максимальная подача (оптимальное 12V & 1.5A), где то около 30V&3A подавал. Как бы я не крепил это сверло, болтами, суперклеем, и тем и тем, эпоксидкой также вместе взятой и т.д. и т.п. в т.ч. и резал/сверлил это чертову маленькую ось, чтоб хоть как в неё вцепиться (по сути надо было его в таком режиме использовать весьма недолго, так что должно было быть норм), всё срывало! . если застревало хоть в мало-мальски не протачиваемом проёме, т.к. крутилось бешено, то даже небольшое торможение со временем всё равно давало срыв и приходилось монтажить заново. Да конечно я и искал напряжение оптимальное, но это либо получалось дико долгое сверление, которое добивало, либо срывало.
Вот как вы за такую ось цепляетесь нормально? . такая ж мелкая сволочь.
Rammstein — mutter на шаговых двигателях
Dolphin — Кокон
System of a down — Chop suey (Cover)

Небольшой проект выходного дня

Нужна критика электронщика
Я давеча задумался, есть драйвер uln2003 и шаговики от дисководов, можно ли их задружить? Конечно ясно, что uln2003 подходит только для униполярных движков(или биполярных только без реверса), но если сделать обвес?
Взяв за основу полный мост и безжалостно его обрезав, я получил такую вот схемку питания одной обмотки.

Попытаюсь проиллюстрировать режимы работы схемы. Сорри за мелкие буквы.

В итоге хотелось бы услышать, какие в этой схеме есть недочёты? Ну, не считая того, что высокий логический уровень на обоих пинах угробит uln-ку к чертям собачьим.
Короче, жду суровой критики 🙂
Одноступенчатый редуктор с приводом от Шагового Двигателя
В этом посте я хочу рассказать про изготовление при помощи ранее изготовленного мной станка с ЧПУ одноступенчатой прямозубой передачи.

Не так давно мной был спроектирован портальный станок с ЧПУ, про его разработку и постройку на этом ресурсе расположена моя предыдущая статья.
Сразу хочу сказать, что данный проект служит только для получения опыта проектирования простых зубчатых пар и их изготовления для возможного применения в последующих проектах.
Так как на изготовленном станке планировалось обрабатывать не только дерево и пластики, а еще и дюраль, то интересно было сделать зубчатую пару как раз из этого материала.
По наличию у меня были обрезки дюралевого листа толщиной 6мм. В качестве привода я решил использовать Шаговый Двигатель (ШД) 23HS8430, он тоже у меня был в наличие и валялся без дела.
Проектирование началось с моделирования всего механизма в среде Компас 3Д, сразу же возникло несколько ограничений, ввиду малого размера дюралевой заготовки, а это соответственно повлияло на габариты ведомой шестерни, а так же на количество и размер зубьев, так как наименьший диаметр фрезы которая у меня была, составлял всего 2мм, а это значит что наименьший радиус которым я могу описать контур в процессе изготовления 1мм.
Учтя все ограничения, я перевел двигатель в 3Д модель и дальше стал сопрягать с ним остальные детали…
Теперь что касается построения зубчатой пары: в машиностроительной конфигурации Компас 3Д (v13) есть такая утилита как «Расчеты цилиндрической зубчатой передачи внешнего зацепления», в ней производим геометрический расчет, вводя требуемые параметры: число зубьев, модуль и т.д. Углубляться в это не буду, достаточно будет прочитать главу про построение зубчатых передач из курса механики: детали машин.

Использованная мной утилита производит расчет и построение шестерни, также если при расчете возникают ошибки, то она об этом информирует. После расчета выводит отчет со всеми геометрическими размерами. Из него мне потребовалось только межосевое расстояние, так как саму шестерню он прорисовывает автоматически.

Для большего интереса я решил сделать шестерни с разным количеством зубьев и передаточным отношением 2:1.

Исходя из межосевого расстояния, было нарисовано основание. С ним сопрягли двигатель и ось, на которой будет крепиться ведомая шестерня.

После окончания 3Д проектирования, все детали перевел в 2Д вид и сохранил их в векторном формате *.dxf.
Для того чтобы вырезать все детали на станке, я преобразовал векторный формат в G-code через постпроцессор в программе ArtCam. Полученный файл загрузил в станок и после обнуления координат, вырезал все детали.
В ведомую шестерню запрессовал подшипник, он достаточно плотно вошел, так как я занизил отверстие на несколько соток.
Отдельно на токарном станке выточили ось, на которую устанавливается ведомая шестерня.
Дальше все достаточно просто, собрал узел в едино, и осталось только его закрутить.
Но пришлось подождать месяц, так как драйвера для ШД у меня не оказалось, и я заказал драйвер DM542 на Али.
Для того чтобы ШД закрутился на вход драйвера требуется подать частотный сигнал, для этого я на ардуино уно собрал генератор частоты с изменяемой частотой с помощью внешне подключенного энкодера на 24 импульса.

Сразу хочу оговориться, что код для прошивки ардуино нашел на просторах Интернета.
Генератор частоты может: — генерировать меандр на 16 битном таймере. Диапазон частот 1Гц — 8МГц. Регулировка частоты производится энкодером. До частоты 2,8 кГц разрешение 1 герц, на частотах выше таймер аппаратно уже не может поддерживать это разрешение, поэтому более высокие частоты синтезируются, задавая параметром не требуемую частоту, а просто инкременируя регистр сравнения. Получается чем выше частота — тем больше шаг между щелчками энкодера. Вращая энкодер, с не нажатой кнопкой частота меняется на 1Гц; с нажатой кнопкой один шаг — 100Гц. Выше 2,8кГц. вращение энкодера с нажатой кнопкой так — же ускоряет счёт. Программного подавления дребезга контактов энкодера нет, поэтому нужно повесить конденсаторы 0,01..0,1 мкф. относительно земли. На кнопке конденсатор не обязателен. Рассчитанная математически частота выводится в сериал.
/* Генератор 1 Hz..8 MHz. Энкодер подключен к пинам A0 и A1, кнопка
энкодера подключена к A2. Требуется использовать конденсаторы 0,01..0,1uf
относительно земли на каждый из 2х выводов энкодера.
Скетч для ардуино на мк atmega328 (UNO,Nano, MiniPro)
pinMode (9,OUTPUT); // выход генератора
pinMode(A0,INPUT); // с рассчетом, что энкодере внешняя подтяжка-
pinMode(A1,INPUT); // -к шине питания. Если нету, то подтянуть программно.
pinMode(A2,INPUT_PULLUP); //кнопка энкодера
PCICR=1<<PCIE1; //разрешить прерывание PCINT
PCMSK1=(1<<PCINT9);// По сигналу на А1 создавать прерывание
TCCR1A=1<<COM1A0; //подключить выход OC1A первого таймера
static boolean gen_mode=0; //флаг режима управления
static uint32_t enc=1; //переменная счёта энкодера
uint32_t divider=1; //переменная коэфф. деления прескалера
byte n=PINC&3; //считать значение энкодера
boolean knopka = PINC&(1<<2); // 0-кнопка нажата, 1-кнопка НЕ нажата.
if (freq<2848) gen_mode=0; //переключение режима управления по частоте
if (freq>=2848) gen_mode=1; //переключение режима управления по OCR
// Если увеличение частоты
else knopka? enc++ : enc+=100; // в нч режиме
// Если уменьшение частоты
divider=1; ocr = (F_CPU / enc /2 /divider) -1;
//запись в регистр прескалера
case 1: TCCR1B=1|(1<<WGM12); break;
case 8: TCCR1B=2|(1<<WGM12); break;
case 64: TCCR1B=3|(1<<WGM12); break;
case 256: TCCR1B=4|(1<<WGM12); break;
case 1024: TCCR1B=5|(1<<WGM12); break; >
freq= (float) F_CPU/2 / (OCR1A+1) /divider;
> //end if !gen_mode
После того как все собрал, подсоединил и залил в Arduino скетч, можно приступать к включению:
cnc-club.ru
Хочу сделать 4-ую ось на основе двух шаговых двигателей, чтобы фиксировать деталь с двух сторон.
Есть контроллер на 4 двигателя. Причем все 4 уже использованы (ось Х использует два канала, т.к. на ней синхронно работает два двигателя). Я думаю, что вместо двух каналов на ось Х буду использовать один и соответственно параллелится двигатели будут не на уровне контроллера, а на уровне проводов.
Возникает вопрос, а можно ли также запараллелить два двигателя, но так, чтобы они вращались в разные стороны?
Use the Console, Luke.

Re: Изменить направление шагового двигателя
- 0
- Цитата
Сообщение Nick » 26 авг 2010, 22:57
Покапавшись в документации на контроллер нашел, что если просто поменять местами обмотки, то направление движения шагового двигателя поменяется, как будто мы изменили сигнал Dir.
Но мне как всегда захотелось проверить это утверждение . Т.к. снимать со станка двигатели мне было лень, то я взял один из двигателей заказанных в МНТЦ.
Т.к. снимать штекер с двигателя установленного на станке мне было лень и другого штекера не было пришлось придумать «штекер» из термоусадочной трубки. Зачищаем провод, надеваем на него термоусадку так, чтобы оголенный провод был впритык к концу трубки. Фиксируем трубку на проводе зажигалкой и не много поджимаем конец трубки, чтобы он плотнее вставал на разъем.
Как обычно, возникла проблема: у двигателей от PureLogic провода раскрашены в красный, оранжевый, зеленый и синий цвета а у двигателей от МНТЦ в красный, белый, зеленый и синий. Я представил себя немного дальтоником и приравнял оранжевый к белому. Но не тут-то было, двигатель отказался работать как надо. Пришлось с помощью тестера проверять какие провода принадлежат к одной обмотке. МНТЦ-шники брали двигатель от Элион, у меня оказался SM200-0.22-1-0.2.
Вот видео теста двигателя http://www.youtube.com/watch?v=Q8vrQMaYXYQ . Тест проводил из stepconf от EMC.
В общем, все подтвердилось, если поменять местами обводки двигатель начинает вращаться в обратную сторону. Т.е. если я соединю обмотки двух шаговых двигателей крест на крест, то они будут вращаться в разные стороны.
По обмоткам получился расклад такой: [Синий, Белый] , [Зеленый, Красный].
УПРАВЛЕНИЕ ШАГОВЫМИ ДВИГАТЕЛЯМИ
Двигатели постоянного тока нашли множество применений, но непрерывное и плавное вращение ротора не всегда требуется. Естественная особенность двигателя BLDC, заключающаяся в том, что для его вращения необходимо постоянно переключать напряжения между обмотками, способствовала развитию шаговых двигателей. Их ротор может вращаться с определенными приращениями и оставаться стабильным в этих состояниях даже если управление прерывается. Возобновление подачи напряжения на катушки вызывает продолжение вращения.
Шаговые двигатели не имеют коммутаторов и щеток. Это синхронные двигатели постоянного тока с электронно-коммутируемым магнитным полем, вызывающим вращение якоря (его магнитов). Можно считать, что шаговые двигатели управляются цифровыми импульсами, и в шаговом двигателе полный угол поворота ротора разделен на дискретное количество шагов. Количество этих ступеней (фаз) равно количеству магнитов, расположенных вокруг центрального сердечника.

Конструкция шагового двигателя
Теория работы шаговых двигателей. В отличие от двигателей постоянного или переменного тока, для шаговых двигателей требуется последовательное питание, то есть они должны получать фиксированную последовательность импульсов для отдельных катушек. Также бывают биполярные и униполярные двигатели. Униполярный шаговый двигатель отличается от биполярного тем, что имеет дополнительный отвод обмотки, который разделяет обмотку на две части. Обычно биполярный шаговый двигатель имеет 4 или 8 контактов, а униполярный — 5 или 6 контактов.

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

Двух переключателей достаточно, чтобы построить простейший драйвер шагового двигателя, как показано на рисунке. Здесь используем 6-проводный униполярный двигатель. Также можно сказать, что двигатель в этом случае управляется однополярно, за счет использования средней обмотки катушки и постоянного напряжения питания на нее.
Переключая данные переключатели в последовательности S1, S2, S1, S2, S1, S2… заметим, что двигатель вращается. Рисунок выше иллюстрирует важный принцип управления: обе обмотки не могут питаться от одной пары одновременно. Каждое изменение переключателя поворачивает ротор на один шаг. Чем быстрее начнем переключать переключатели в последовательности S1, S2, S1, S2…, тем быстрее начнет вращаться ротор.

Подключение переключателей к катушкам шагового двигателя
Скорость шагового двигателя зависит не от величины напряжения, а от скорости подключения питания к отдельным обмоткам. Чтобы добиться полного вращения ротора с 200-шаговым двигателем, надо изменить положение каждого переключателя 100 раз, то есть выполнить до 200 последовательностей для двух переключателей. Это уже говорит о том, что шаговые двигатели не могут работать на высокой скорости. Из этого следует, что шаговые двигатели можно назвать «цифровыми двигателями», поскольку для вращения ротора необходимо переключать переключатели в соответствующей последовательности.

В нашем случае последовательность переключений также определяет направление вращения шагового двигателя. Когда меняем последовательность включения переключателей, то меняем и направление вращения, например S2, S1, S2, S1, S2, S1… влево, S1, S2, S1, S2, S1, S2… вправо. В этом примере есть двухпозиционные переключатели, которые всегда обеспечивают питание двух из четырех обмоток шагового двигателя в данный момент. Но использование трехпозиционных переключателей дает гораздо больше возможностей.
Опять же, обе обмотки никогда не питаются от одной пары, что является обязательным принципом управления шаговым двигателем. Благодаря трехпозиционным переключателям можно реализовать, например, полушаговое управление, благодаря разнообразию переключений. Одновременно могут быть под напряжением две, одна или ни одной из обмоток.
На практике вместо переключателей используются биполярные транзисторы, чаще можно встретить драйверы на основе полевых МОП-транзисторов, благодаря возможности пропускания большего тока, а также возможности их перегрузки. Транзистор здесь действует как переключатель, он либо закрыт, либо полностью открыт.

Упрощенная схема управления униполярным шаговым двигателем
Чтобы управлять таким мотором, надо обеспечить соответствующую последовательность импульсов. Например, только одна из четырех обмоток шагового двигателя находится под напряжением одновременно (это своего рода волновое управление). На каждый цикл двигателя подается питание на одну из четырех катушек униполярного шагового двигателя. Вращение его будет выглядеть так:

Вращение униполярного шагового двигателя в последовательных тактах цикла управления волной
Управляющая последовательность A +, B +, A-, B- повторяется каждые четыре импульса тактового генератора. Этот тип управления называется однофазным или волновым. Это полный шаг управления, потому что двигатель выполняет один полный ход (шаг) с одним импульсом генератора.
Последовательность импульсов A +, B +, A -, B — вращает двигатель в одном направлении. Смена полюсов статора (N, S) заключается в питании соответствующей катушки (A + или A -).
Самый простой способ изменить направление — поменять местами одну пару проводов катушки (поменять местами, например, B + с B — и B — с B +), затем дадим последовательность A +, B -, A -, B + импульсы, он вращает двигатель в противоположном направлении. Так управление направлением реализовано в некоторых контроллерах шаговых двигателей. Самый простой способ изменить последовательность импульсов — использовать, например, реле.

Форма волны (однофазная) импульсная последовательность драйвера

Упрощенная схема однофазного (волнового) регулятора с изменением направления вращения
Несомненное преимущество униполярных шаговых двигателей — простота управления. Но это связано с волновым управлением, с использованием только половины обмотки за раз, одна из них всегда не используется. Используется только 1/4 всех обмоток шагового двигателя, что значительно снижает максимальную производительность.
Двухфазное управление шаговым мотором
Гораздо лучшей альтернативой однофазному управлению будет двухфазное, при котором работают две из четырех обмоток шагового двигателя. В таком управлении используем 1/2 всех обмоток. Тогда мотор станет более эффективен.

Вращение двигателя при двухфазном полноступенчатом управлении
Две катушки шагового двигателя всегда находятся под напряжением. Опять же, мы никогда не питаем две катушки из одной пары одновременно. С каждым импульсом от генератора переключается только одна катушка из отдельных пар (последовательно). В первом цикле катушки A и B находятся под напряжением, во втором катушка A все еще находится под напряжением, в то время как катушка B переключается на B +, в третьем цикле катушка B + находится под напряжением из второго цикла, и катушка A переключается на A + и так далее.

Двухфазная последовательность управляющих импульсов
Формы сигналов A + и B + сдвинуты друг к другу (две из четырех обмоток всегда работают в заданном цикле), а сигналы A + и B- инвертируются с сигналами A + и B +. Такие формы сигналов (смещенные относительно друг друга) легко генерируются, например, благодаря интегральной микросхеме 4013, которая имеет два D-триггера. Также можно использовать микроконтроллер. Изменение направления вращения в таком контроллере, как и при однофазном (волновом) управлении, может быть реализовано путем изменения направления проводов одной пары концов катушки (изменение с A + на A — и A — на A +). Чаще всего изменение скорости основано на изменении логики последовательности управляющих импульсов. Мы можем сделать это, например, используя логические элементы XOR, которые будут отрицать сигналы (инвертировать их).

Упрощенная схема двухфазного контроллера с изменением направления вращения, D-триггерами для создания смещенных сигналов и логическими вентилями XOR
Оба типа управления представленные выше: однофазный (волновой) и двухфазный (инвертированные сигналы, управляющие транзисторами), в просторечии, являются униполярными типами управления, потому что используем униполярные шаговые двигатели с дополнительными ответвлениями обмотки. Также в биполярных шаговых двигателях, где работает вся обмотка, мы встречаемся с однофазным и двухфазным управлением, там идея работы аналогична.
Также стоит упомянуть моторы VR (реактивного сопротивления). Двигатели VR обычно имеют три обмотки. Чтобы управлять таким двигателем, нам нужно подавать отдельные обмотки одну за другой в последовательности A, B, C, A, B, C. это заставит двигатель вращаться в одном направлении, в то время как последовательность питания обмотки A, C, B, A, C, B. заставит его вращаться в противоположном направлении. Самый простой способ изменить направление — поменять местами концы двух обмоток шагового двигателя VR, и проще всего это сделать с помощью реле.

Упрощенная схема драйвера резистивного шагового двигателя

Последовательность импульсов управления шаговым двигателем
Последовательность импульсов драйвера реактивного шагового двигателя очень похожа на волновое управление.
Биполярное управление обеспечивает более эффективное использование шагового двигателя, при котором всегда работает вся обмотка шагового двигателя, что дает гораздо лучшую производительность на низких и средних скоростях. А крутящий момент примерно на 30 — 40% больше. Но для этого требуется изменить полярность питания катушки, изменив направление тока в обмотках (например поменяв местами концы катушек). Для этого используются два транзисторных моста H (название происходит от сходства с буквой H на схеме), которые состоят из двух ветвей, а каждая ветвь состоит из двух транзисторов. Чаще всего для построения такого моста используются биполярные транзисторы NPN или MOSFET N.
Биполярный драйвер требует более сложного управления из-за того, что нужно управлять каждым из восьми транзисторов индивидуально. Взамен получаем все возможности шагового двигателя, хотя реализация такого типа управления не самая простая.
Принцип работы такого моста основан на том, что если верхний транзистор проводит в одной ветви, а нижний транзистор в другой, и наоборот, то через катушку шагового двигателя будет протекать ток. Если два верхних или два нижних транзистора проводят одновременно в двух ветвях одного моста, то ток через катушку не будет протекать. Путем соответствующего управления транзисторами получаем изменение направления тока, протекающего через катушку, и, таким образом, изменение полярности катушки.
Также в биполярных контроллерах имеем дело с однофазным (волновым) и двухфазным управлением. Оба элемента управления являются полношаговыми. При однофазном управлении, как и в униполярных шаговых двигателях, в следующем цикле запитывается только одна катушка,

Вращение биполярного шагового двигателя в последовательных тактах однофазного (волнового) цикла управления

Вращение биполярного шагового двигателя в последовательных тактах двухфазного цикла управления

Упрощенная схема драйвера для биполярных двигателей с транзисторными Н-мостами
Последовательность импульсов для питания катушек идентична униполярному двигателю, но в этом случае нет четырех сигналов на транзисторы, только восемь сигналов на восемь транзисторов. Каждым из них нужно управлять индивидуально, переключая соответствующие транзисторы в нужный момент. Ток протекает через катушку, когда один верхний транзистор и один нижний транзистор включены «крест-накрест», то есть 1 и 3 на схеме, другие 2 и 4 в катушке A шагового двигателя закрыты. Но когда выключаем 1 и 3 и включаем 2 и 4, то меняем направление тока в катушке.

Включаем транзисторы «крестом» в катушке A и B. Напряжение питания катушки задается как в униполярном управлении, в то время как «массовый» транзистор подключается крест-накрест к присоединенному верхнему силовому транзистору. Можем если надо изменить скорость, изменив управление двумя концами одной катушки, что приведет к другой последовательности импульсов. Самый простой способ — использовать реле, как при униполярном управлении, также можно реверсировать сигналы, управляющие транзисторами.

Ход управления катушками в биполярном шаговом двигателе волнового управления
Чтобы понять идею, можно сказать что на схеме показано питание проводов биполярного шагового двигателя, т.е. высокое состояние означает напряжение на конкретном проводе (A +, B +, A -, B -), а низкое состояние — появление заземления на отдельных проводах в заданном цикле. Здесь меняем направление тока в катушках, в первом импульсе (в первом цикле) генератор A + земля A — питается от генератора, а в третьем A — земля A + подается, меняя "полярность" источника питания так, чтобы меняли полярность катушек, например N на S.
Фактически, форма сигналов управления транзисторами в H-мосте будет выглядеть как на схеме ниже. Это биполярное однофазное (волновое) управление.

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

Ход управления катушками в биполярном двигателе двухфазного управления
Эта схема, что касается управления биполярной волной, показывает соответствующий источник питания проводов биполярного шагового двигателя. Низкое состояние означает основное высокое напряжение питания катушки. В первом цикле проводники A — и B — земли A + и B + находятся под напряжением, во втором цикле проводники A — и B + земли A + и B- находятся под напряжением и так далее.
Последовательность импульсов управления транзистором будет выглядеть примерно так:

Последовательность управления транзистором в двухфазном биполярном контроллере
Как правило, биполярные шаговые двигатели требуют сложной схемы управления. Эта проблема была решена с появлением специализированных интегральных схем (A3977, A4988, L297), которые используются для генерации соответствующей последовательности импульсов для управления транзисторами в H-мосте.
Также можем использовать логические элементы или D-триггеры для генерации этой последовательности, но чаще существуют драйверы, построенные на микроконтроллерах или специализированных интегральных схемах.
Самым большим преимуществом управления биполярным шаговым двигателем является хорошо используемый крутящий момент, благодаря тому что вся обмотка находится в текущем состоянии после получения импульса (в течение одного цикла).
Двигатели PM (с постоянным магнитом) и HB (гибридные), несмотря на их различную конструкцию, управляются одинаково. Каждый двигатель с 4 контактами может управляться только биполярно, в то время как униполярный шаговый двигатель с 6 контактами может работать как биполярный, так и униполярный.
Двигатели с 8 выводами дают гораздо больше возможностей, они могут работать как однополярные, так и биполярные. Кроме того, шаговый двигатель можно подключить последовательно, где нужно подавать на него более высокое напряжение, но в то же время он будет потреблять меньше тока, что приведет к снижению мощности на более высоких скоростях.
Также можем подключить его параллельно и запитать от более низкого напряжения, но с более высоким током. Это даст меньше потерь мощности на более высоких скоростях. На низких скоростях, как при последовательном, так и при параллельном подключении, двигатель будет иметь одинаковый крутящий момент (мощность).

Схема последовательного и параллельного подключения 8-проводного шагового двигателя
Идея последовательного и параллельного подключения также может быть использована с 6-проводным униполярным двигателем.

Схема последовательного и параллельного подключения 6-проводного шагового двигателя
Следует отметить, что при управлении шаговым двигателем мы переключаем обмотки, имеющие некоторую индуктивность. Когда ток прерывается в индуктивности, генерируется напряжение самоиндукции, которое может быть большим и повредить транзистор. Чтобы исключить это явление, необходимо правильно обеспечить протекание тока в катушке даже после выключения транзистора. Наиболее распространены быстродействующие диоды, которые срезают всплески, возникающие при открытии транзистора. Также можете найти драйверы с конденсаторами вместо диодов.

Схема подключения диодов к униполярному драйверу на биполярных транзисторах
Верхние диоды на схеме отсекают положительные импульсы, образовавшиеся в результате отключения тока от катушек шагового двигателя. С другой стороны, нижние диоды тоже нужны, потому что две обмотки одной пары образуют автотрансформатор. Когда в одной катушке есть положительное перенапряжение, отсекаемое верхним диодом, в другой катушке той же пары происходит отсечение отрицательного перенапряжения нижним диодом.
Иная ситуация с использованием MOSFET-транзисторов, потому что транзистор уже имеет в своей структуре переход сток-исток, который в данном случае действует как диод. При использовании небольших двигателей верхние диоды можно не устанавливать. Положительная энергия вывода не очень велика и может быть поглощена транзистором, который кратковременно работает в разрешенном режиме лавинного пробоя и действует как стабилитрон.

Схема униполярного шагового двигателя с MOSFET транзисторами
Также используем тот же принцип для биполярного управления. При использовании MOSFET-транзисторов можем использовать встроенные «диоды» в транзисторе.

Схема использования диодов в биполярных драйверах

Схема биполярного шагового двигателя с MOSFET транзисторами
Ещё стоит упомянуть инерцию обмоток, ограничивающую скорость нарастания тока. Каждая из катушек шагового двигателя имеет определенную индуктивность L и сопротивление R. После подачи напряжения на катушку ток I определяется напряжением питания катушки (VCC) и ее сопротивлением, то есть I = VCC / R. Он не сразу достигает значения, определяемого L iR. Ток постепенно увеличивается, а постоянная времени нарастания составляет T = L / R. Обычно это 10 мс, поэтому период прямоугольной волны должен составлять 20 мс или 50 Гц, чтобы обеспечить 10 мс высокого состояния длительности импульса для катушки для достижения полного тока.
На низких частотах (скоростях) это значения не имеет, а на более высоких частотах ток не успеет увеличиться до нужного значения. Следовательно, двигатель будет значительно терять крутящий момент при увеличении оборотов, из-за того что ток не успевает увеличиться до номинального тока мотора.
Лучшее решение этой проблемы — подать на двигатель напряжение, намного превышающее номинальное напряжение его работы. Из-за более высокого напряжения ток нарастает быстрее. Правда для этого требуется специальная схема, ограничивающая ток протекающий по обмоткам.
Среди других решений — использование резистора, который выбирается так, чтобы ток в установившемся режиме был равен номинальному току двигателя. Недостатком такой системы являются большие потери мощности на резисторе.

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

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

Упрощенная схема использования двух источников питания для регулирования тока в обмотках шагового двигателя
Самый эффективный метод — чопперский. Он заключается в подаче на катушку двигателя не одиночных импульсов, а серии импульсов по форме напоминающих сигнал ШИМ. В первый момент импульса от генератора прикладывается более высокое напряжение, которое ускоряет нарастание тока, позже оно ограничивается циклической работой транзистора.

Фрагмент схемы биполярного контроллера с технологией чоппера

Форма сигнала прерывателя для управления транзистором
Напоминаем, что в первые моменты управляющего импульса продлеваем включение транзистора, что позволяет быстрее увеличить ток, благодаря гораздо более высокому напряжению VCC, чем номинальное напряжение мотора. В следующие моменты импульса значительно сокращаем время транзистора, он работает циклически и тем самым ограничивает напряжение до номинального рабочего напряжения шагового двигателя. Компаратор, который будет сравнивать напряжения решает, когда сигнал управления транзистора должен быть переключен с постоянного на прерывистый. Благодаря этому есть возможность регулировать ток, подаваемый на катушку шагового двигателя.

Схема использования компаратора в биполярном контроллере
Эта схема очень эффективна и позволяет регулировать ток катушки независимо от напряжения питания, изменяя напряжение Vs.
Напряжение питания катушки VCC намного выше, чем рабочее напряжение обмотки, а это означает что после включения транзистора ток достигает своего рабочего значения намного быстрее, за гораздо более короткое время чем постоянная времени L / R. После достижения порогового значения (установленного Vs) компаратор сравнивает падение напряжения на управляющем резисторе Rs с напряжением Vs. Если ток двигателя и, следовательно, падение напряжения на Rs увеличиваются выше напряжения Vs, компаратор запускает моностабильный триггер, который излучает один импульс и на короткое время отключает напряжение питания катушки, что снижает ток, а затем цикл повторяется с начала.
В результате компаратор и триггер циклически открывают и закрывают транзистор, что предотвращает повышение напряжения катушки до напряжения питания VCC. За счет циклической работы транзистора ограничивается напряжение питания катушки шагового двигателя. Тогда течение имеет пилообразную волну. Ниже представлена диаграмма тока в обмотке прерывателя.

График импульсов тока в обмотке
Этот управляющий сигнал с прерывистой катушкой позволяет увеличить крутящий момент шагового двигателя, особенно при более высоких скоростях вращения. Конечно потребуется еще более интеллектуальная система управления (эта проблема была решена с появлением встроенных драйверов шаговых двигателей и микроконтроллеров), но она позволяет ускорить процесс увеличения тока благодаря подаче гораздо более высокого напряжения на более высокие частоты от генератора, без значительных потерь энергии или использования двух разных источников питания. Тут понадобится только один блок питания с относительно высоким напряжением.
Очень хорошая альтернатива, особенно в тех случаях когда драйвер не нуждается в специальных функциях, — использовать готовые интегральные микросхемы драйверов шаговых двигателей. Многие производители предлагают широкий спектр специализированных чипов, разработанных специально для управления шаговыми двигателями.
Обмотки шаговых двигателей чаще всего управляются формой сигнала ШИМ через H-мосты, по одному на обмотку. Угол поворота пропорционален количеству импульсов, а скорость вращения — их частоте. При работе с полными ступенями довольно много шума и вибрации. К сожалению, также могут быть случаи пропуска ступеней («выход») и, как следствие, потеря контроля над положением ротора. Эта проблема решается за счет использования микрошагов, таким образом питая обмотки так, что ротор проходит через промежуточные положения за один полный шаг.
Если для быстрой остановки двигателя требуется еще несколько шагов, важно правильно определить состояние перехода и остановки. В этом случае желательно управление с обратной связью в отличие от абсолютного позиционирования с обратной связью, основанного на подсчете шагов. Существует адаптивное управление скоростью шагового двигателя, позволяющее остановить его как можно скорее, несмотря на возможное увеличение нагрузки на этом этапе.
Это возможно на основании наблюдения увеличения BENF и соответствующего увеличения частоты импульсов, питающих двигатель. Вышеописанный алгоритм реализован в интегрированном однокристальном контроллере AMIS-30624. Он настроен для работы с различными типами шаговых двигателей, диапазонами позиционирования и такими параметрами, как скорость, ускорение и замедление.

Схема контроллера AMIS-30624
Он имеет встроенный бессенсорный детектор потери шага, который предотвращает потерю шагов позиционером и быстро останавливает двигатель при его остановке. Это обеспечивает тихую, но точную калибровку во время эталонного прогона и позволяет работать с полузамкнутым контуром. AMIS-30624 включает в себя как аналоговые цепи высокого напряжения, так и цифровые блоки управления. Чип разработан для применений в автомобильной, промышленной и строительной отраслях.
Форум по обсуждению материала УПРАВЛЕНИЕ ШАГОВЫМИ ДВИГАТЕЛЯМИ
Про использование технологии беспроводного питания различных устройств.
Обзор электромагнитного пистолета из китайского набора для самостоятельной сборки.
Обзор ещё нескольких схем и готовых конструкций Gauss Gun с Алиэкспресс.
Что такое OLED, MiniLED и MicroLED телевизоры — краткий обзор и сравнение технологий.