Как управлять шаговым двигателем через Arduino

Схема униполярных и биполярных шаговых двигателей

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

Двух переключателей достаточно, чтобы построить простейший драйвер шагового двигателя, как показано на рисунке. Здесь используем 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- повторяется каждые четыре импульса тактового генератора. Этот тип управления называется однофазным или волновым. Это полный шаг управления, потому что двигатель выполняет один полный ход (шаг) с одним импульсом генератора.

Самый простой способ изменить направление — поменять местами одну пару проводов катушки (поменять местами, например, B + с B — и B — с B +), затем дадим последовательность A +, B -, A -, B + импульсы, он вращает двигатель в противоположном направлении. Так управление направлением реализовано в некоторых контроллерах шаговых двигателей. Самый простой способ изменить последовательность импульсов — использовать, например, реле.

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

Упрощенная схема однофазного (волнового) регулятора с изменением направления вращения

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

Где купить шаговый двигатель

Самые простые двигатели Варианты на сайте AliExpress:

Шаговый двигатель Nema17 42BYGH 1.7A (17HS4401-S) для 3D принтераНабор из 5 шаговых двигателей ULN2003 28BYJ-48 с платам драйверов для АрдуиноШаговый двигатель с модулем драйвера 5V Stepper Motor 28BYJ-48 + ULN2003
Еще один вариант шагового двигателя для Arduino 28BYJ-48 5V 4 Phase DC Motor + ULN2003 Drive Test BoardНабор из трех шаговых двигателей Nema17 Stepper Motor 42BYGH 1.7A (17HS4401) для 3D приентераAliExpress.com Product – 3D Printer Parts StepStick A4988 DRV8825 Stepper Motor Driver With Heat sink Carrier Reprap RAMPS 1.4 1.5 1.6 MKS GEN V1.4 board

Supplies

Hardware components

A4988 stepper motor driver× 1Amazon
NEMA 17 stepper motor× 1Amazon
Arduino Uno Rev3× 1Amazon
Power supply (8-35 V)× 1Amazon
Breadboard× 1Amazon
Capacitor (100 µF)× 1Amazon
Jumper wires~ 10Amazon
USB cable type A/B× 1Amazon

I like to use this driver in combination with a CNC-shield or expansion board. Such a shield already includes capacitors and offers an easy way to select the microstepping resolution. It makes wiring much easier and is a great option if you need a more permanent solution than a breadboard.

Software

Arduino IDE

Makerguides.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on Amazon.com.

Принцип работы шагового двигателя

Рис. 1 – Схема шагового двигателя

Шаговый двигатель обеспечивает вращения ротора на заданный угол при соответствующем управляющем сигнале. Благодаря этому можно контролировать положение узлов механизмов и выходить в заданную позицию. Работа двигателя осуществляется следующим образом – в центральном вале имеется ряд магнитов и несколько катушек. При подаче питания создается магнитное поле, которое воздействует на магниты и заставляет вал вращаться. Такие параметры как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.

Рис. 2 – Упрощенные анимированные схемы работы шагового двигателя

28BYJ-48 — это маленький, дешевый, 5 вольтовый шаговый мотор с редуктором. Передаточное число редуктора у него примерно 64:1, что позволяет получить вполне достойный крутящий момент для мотора такого размера и скорость порядка 15 об/мин. С некоторыми программными хитростями для постепенного ускорения можно достичь более 25 об/мин.

Рис. 3 – Шаговый двигатель 28YBJ-48

Рис. 4 – Размеры шагового двигателя 28BYJ-48

Таблица 1

Спецификация шагового двигателя 28BYJ-48
Тип мотораУниполярный шаговый двигатель
Число фаз4
Подключение5-выводов (к контроллеру двигателя)
Рабочее напряжение5-12 В
Частота100 Гц
Сопротивление по постоянному току50 Ом±7%(25°C)
Частота под нагрузкой> 600 Гц
Частота на холостом ходу> 1000 Гц
Крутящий момент> 34.3 мН·м (120 Гц)
Момент самопозиционирования> 34.3 мН·м
Стопорящий момент600-1200 г·см
Тяга300 г·см
Сопротивление изоляции> 10 МОм (500 В)
Класс изоляцииA
Шум< 35 дБ (120 Гц, без нагрузки, 10 см)
Режим шагаРекомендован полушаговый режим (8-шаговая управляющая сигнальная последовательность)
Угол шага Полушаговый режим: 8-шаговая управляющая сигнальная последовательность (рекомендовано). 5,625 градусов на шаг, 64 шага на оборот внутреннего вала мотора.Режим полного шага: 4-шаговая управляющая сигнальная последовательность. 11,25°/шаг, 32 шага на оборот внутреннего вала двигателя.
Передаточное отношение редуктора64:1
Подключение к контроллеру ULN2003A (синий), B (розовый), C (желтый), D (Оранжевый), E (красный, средний вывод обмоток)
Вес30г

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

Рис. 5 – Подключение выводов шагового двигателя 28BYJ-48

Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения. 

  • Полношаговый режим — за 1 такт, ротор делает 1 шаг. 
  • Полушаговый режим — за 1 такт, ротор делает 1/2 шага. 

Когда используется полношаговый метод управления, две из четырех обмоток запитываются на каждом шаге. Идущая вместе с Arduino IDE библиотека Stepper использует такой способ.

Таблица 2

Таблица переключения фаз на ULN2003
в полношаговом методе
Провод1234
4-Оранжевый    
3-Желтый    
2-Розовый    
1-Синий    

Предпочтительным является использование метода полушага, при котором сначала запитывается только 1 обмотка, затем вместе первая и вторая обмотки, затем только вторая обмотка и так далее. С 4 обмотками это дает 8 различных сигналов, как показано в таблице 3.

Таблица 3

Таблица переключения фаз на ULN2003 в полушаговом методе
Направление вращения по часовой стрелке (1-2 фазы)
Провод12345678
4-Оранжевый        
3-Желтый        
2-Розовый        
1-Синий        

Назначение элементов и контактов на плате драйвера L298N

Посмотрим внимательнее на модуль и разберемся с его контактами.

Логика микросхемы L298N питается напряжением 5 Вольт. Для этого на модуле предусмотрен стабилизатор напряжения 78M05. На вход этого стабилизатора можно подавать напряжение до 35 В, а на выходе всегда получается 5 В. Рабочий ток у 78M05 небольшой — до 500 мА. Однако, при желании, от него можно питать и саму плату Ардуино Уно, к которой мы будем подключать драйвер.

Тройная клемма снизу отвечает за питание модуля. Самый левый контакт — питание моторов. Сюда можно подавать до 35 В. Средний контакт — земля, которая должна быть общей для модуля и контроллера. Правый контакт имеет двоякую функцию. Если на модуле стоит перемычка питания стабилизатора, то на этом контакте будет +5В и к нему можно ничего не подключать, либо питать от него контроллер. Но если перемычку убрать, то к этому контакту нужно будет непременно подключить +5В от контроллера, чтобы питать драйвер. В нашем примере мы будем ориентироваться именно на вариант без перемычки.

Две другие винтовые клеммы (OUT1/2 и OUT 3/4) служат для подключения моторов. Надо отметить, что моторы постоянного тока неполярные, но от того на какой контакт мотора подается плюс, а на какой минус, зависит направление их вращения.

Наконец, осталось разобраться с контактами управления. Их по три штуки на каждый мотор. Контакты ENA и ENB позволяют управлять моторами с помощью ШИМ сигнала. Если ENA и ENB подключить строго к +5 В, то моторы будут всегда вращаться с максимальной возможной скоростью. Именно для этого режима на модуле предусмотрены две перемычки рядом с ENA и ENB.

С помощью контактов IN1,IN2,IN3,IN4 задаётся режим работы моторов. Таблица режимов для двигателя A имеет вид:

РежимIN1IN2
Вращение в одну сторону1
Вращение в обратную сторону1
Блокировка мотора11
Отключение мотора

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

Типы шаговых двигателей

Шаговый двигатель с постоянным магнитом

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

Обычно, величина шага таких двигателей лежит в диапазоне 45-90°.

Шаговый двигатель с переменным магнитным сопротивлением

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

Шаговые двигатели с переменным магнитным сопротивлением обычно имеют шаг, лежащий в диапазоне 5-15°.

Гибридный шаговый двигатель

Данный тип шаговых моторов получил название «гибридный» из-за того, что сочетает в себе характеристики шаговых двигателей и с постоянными магнитами и с переменным магнитным сопротивлением. Они обладают отличными удерживающим и динамическим крутящим моментами, а также очень маленькую величину шага, лежащую в пределах 0.9-5°, обеспечивая великолепную точность. Их механические части могут вращаться с большими скоростями, чем другие типы шаговых моторов. Этот тип двигателей используется в станках ЧПУ high-end класса и в роботах. Главный их недостаток — высокая стоимость.

Обычный мотор с 200 шагами на оборот будет иметь 50 положительных и 50 отрицательных полюсов с 8-ю обмотками (4-мя парами). Из-за того, что такой магнит нельзя произвести, было найдено элегантное решение. Берется два отдельных 50-зубых диска. Также используется цилиндрический постоянный магнит. Диски привариваются один с положительному, другой к отрицательному полюсам постоянного магнита. Таким образом, один диск имеет положительный полюс на своих зубьях, другой — отрицательный.

Два 50-зубых диска помещены сверху и снизу постоянного магнита

Фокус в том, что диски размещаются таким образом, что если посмотреть на них сверху, то они выглядят как один 100-зубый диск! Возвышения на одном диске совмещаются со впадинами на другом.

Впадины на одном диске выровнены с возвышениями на другом

Ниже показана работа гибридного шагового двигателя, имеющего 75 шагов на оборот (1.5° на шаг). Стоит заметить, что 6 обмоток спарены, каждая имеет обмотку с противоположной стороны. Вы наверняка ожидали, что катушки расположены под углом в 60° следом друг за другом, но, на самом деле, это не так. Если предположить, что первая пара — это самая верхняя и самая нижняя катушки, тогда вторая пара смещена под углом 60+5° по отношению к первой, и третья смещена на 60+5° по отношению ко второй. Угловая разница и является причиной вращения мотора. Режимы управления с полным и половинным шагом могут использоваться, впрочем как и волновое управление для снижения энергопотребления. Ниже продемонстрировано полношаговое управление. В полушаговом режиме, число шагов увеличится до 150!

Не пытайтесь следовать за обмотками, чтобы понаблюдать, как это работает. Просто сфокусируйтесь на одной обмотке и ждите.  Вы заметите, что всякий раз, когда обмотка задействована, есть 3 положительных полюса (красный) в 5° позади, которые притягиваются по направлению вращения и другие 3 отрицательных полюса (синий) в 5° впереди, которые толкаются в направлении вращения. Задействованная обмотка всегда находится между положительным и отрицательным полюсами.

Особенности управления

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

Полношаговый режим

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

Полушаговый режим

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

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

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

Микрошаговый режим

Чтобы максимально увеличить число шагов двигателя, используется микрошаговый режим. Для этого требуется включить две фазы и распределить ток обмоток неравномерно. При смещении магнитного поля статора относительно полюсов смещается и сам ротор. У диспропорции токов между рабочими фазами двигателя обычно наблюдается дискретность, которая определяет величину микрошага. Количество микрошагов на один оборот ротора шагового двигателя может составлять более 1 000. Устройство, работающее в таком режиме, можно максимально точно позиционировать. Однако данный способ управления является достаточно сложным.

L298N, Arduino и двигатель постоянного тока

Данный модуль дает возможность управлять одним или двумя двигателями постоянного тока. Для начала, подключите двигатели к пинам A и B на контроллере L298N.

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

После этого подключите источник питания. Плюс – к четвертому пину на L298N, минус (GND) – к 5 пину. Если ваш источник питания до 12 вольт, коннектор, отмеченный 3 на рисунке выше, можно оставить. При этом будет возможность использовать 5 вольтовый пин 6 с модуля.

Данный пин можно использовать для питания Arduino. При этом не забудьте подключить пин GND с микроконтроллера к 5 пину на L298N для замыкания цепи. Теперь вам понадобится 6 цифровых пинов на Arduino. Причем некоторые пины должны поддерживать ШИМ-модуляцию.

ШИМ-пины обозначены знаком “~” рядом с порядковым номером.

Теперь подключите цифровые пины Arduino к драйверу. В нашем примере два двигателя постоянного тока, так что цифровые пины D9, D8, D7 и D6 будут подключены к пинам IN1, IN2, IN3 и IN4 соответственно. После этого подключите пин D10 к пину 7 на L298N (предварительно убрав коннектор) и D5 к пину 12 (опять таки, убрав коннектор).

Направление вращения ротора двигателя управляется сигналами HIGH или LOW на каждый привод (или канал). Например, для первого мотора, HIGH на IN1 и LOW на IN2 обеспечит вращение в одном направлении, а LOW и HIGH заставит вращаться в противоположную сторону.

При этом двигатели не будут вращаться, пока не будет сигнала HIGH на пине 7 для первого двигателя или на 12 пине для второго. Остановить их вращение можно подачей сигнала LOW на те же указанные выше пины. Для управления скоростью вращения используется ШИМ-сигнал.

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

// подключите пины контроллера к цифровым пинам Arduino

// первый двигатель

int enA = 10;

int in1 = 9;

int in2 = 8;

// второй двигатель

int enB = 5;

int in3 = 7;

int in4 = 6;

void setup()

{

// инициализируем все пины для управления двигателями как outputs

pinMode(enA, OUTPUT);

pinMode(enB, OUTPUT);

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void demoOne()

{

// эта функция обеспечит вращение двигателей в двух направлениях на установленной скорости

// запуск двигателя A

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

// устанавливаем скорость 200 из доступного диапазона 0~255

analogWrite(enA, 200);

// запуск двигателя B

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

// устанавливаем скорость 200 из доступного диапазона 0~255

analogWrite(enB, 200);

delay(2000);

// меняем направление вращения двигателей

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(2000);

// выключаем двигатели

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void demoTwo()

{

// эта функция обеспечивает работу двигателей во всем диапазоне возможных скоростей

// обратите внимание, что максимальная скорость определяется самим двигателем и напряжением питания

// ШИМ-значения генерируются функцией analogWrite()

// и зависят от вашей платы управления

// запускают двигатели

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

// ускорение от нуля до максимального значения

for (int i = 0; i < 256; i++)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// торможение от максимального значения к минимальному

for (int i = 255; i >= 0; –i)

{

analogWrite(enA, i);

analogWrite(enB, i);

delay(20);

}

// теперь отключаем моторы

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

}

void loop()

{

demoOne();

delay(1000);

demoTwo();

delay(1000);

}

Что такое шаговый двигатель?

Прежде чем перейти к статье, давайте сразу договоримся, что статья не направлена на специалистов, а её цель – донести любознательным любителям техники и технологий о таком устройстве, как шаговый двигатель и об основах работы с ними. Поэтому умников и критиков, жаждущих поговорить о великом многообразии управляемого и регулируемого электропривода, прошу идти общаться на тематические ресурсы по ЧПУ-станкам и 3D-принтерам.

Итак, для начала сформулируем определение. Согласно Википедии: «Шаговый электродвигатель — синхронный бесщёточный электродвигатель с несколькими обмотками, в котором ток, подаваемый в одну из обмоток статора, вызывает фиксацию ротора. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора».

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

Всем известно что ротор «обычного» электродвигателя, будь то асинхронного, синхронного, коллекторного или любого другого будет вращаться до тех пор, пока на него подают напряжение питания, и после отключения питания он будет вращаться еще какое-то время по инерции, если же не используются какие-либо средства для его торможения.

Ротор такого двигателя вращается просто вокруг своей оси без каких-либо ограничений, на 360 градусов, и остановится он в любом месте. Зафиксировать его положением можно только механически (тормозом). По этой причине не получится добиться точного позиционирования исполнительных механизмов, что требуется в робототехнике, ЧПУ-станках и другом автоматизированном оборудовании.

Но шаговые двигатели разработаны для применения в механизмах, где детали поворачиваются точно на требуемый угол.

В приведенном выше определении было сказано «…вызывает дискретные угловые перемещения (шаги) ротора…» — это значит, что ротор шагового двигателя не вращается в обычном понимании, а поворачивается на какой-то определенный, «дискретный» угол. Этот угол называется шагом, отсюда и название «шаговый двигатель». Мне нравится еще одно название этих устройств — «двигатель с конечным числом положений ротора».  

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

Кроме того, что можно поворачивать двигатель на определенный угол и фиксировать его в этом положении, делать это всё можно без схемы обратной связи (датчиков положения и прочего).

Рассматривать типы шаговых двигателей в пределах этой статьи мы не будем, лишь кратко перечислим, какими они бывают. По конструкции:

  1. Реактивные.
  2. С постоянными магнитами.
  3. Гибридные.

По способу питания:

  1. Униполярные (однополярные — ток пропускают через обмотки только в одну сторону).
  2. Биполярные (ток пропускают через обмотки в обе стороны). Здесь драйвер должен подавать напряжение различной полярности, что несколько усложняет схемотехнику. При тех же размерах развивают бОльшую мощность по сравнению с униполярными.

В униполярном двигателе зачастую 5 проводов — 1 общий, от середины каждой из двух обмоток, и 4 от концов обмоток. Иногда говорят «4 обмотки» – это также правильно, поскольку фактически мы получаем 4 обмотки соединенных в общей точки.

Также ШД могут отличаться и по количеству проводов, это зависит от того, как соединены обмотки и какое питание предполагается, некоторые варианты вы видите в таблице ниже.

Управление шаговым двигателем

Различают два способа управления шаговым двигателем:

  1. Полношаговое. Одновременно включается только пара обмоток (без перекрытия с другими). Достигается максимальный момент на валу, но точность установления угла меньше, чем в других способах.
  2. Полушаговое. В этом случае увеличивается количество шагов, соответственно повышается точность установки положения вала. На каждый первый шаг включается одна обмотка, на каждый второй шагами (полушаг) – пара обмоток. Но когда включена одна обмотка момент на валу снижается вдвое.

На анимациях ниже наглядно продемонстрировано

Полношаговое управление

Полушаговое управление

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

AccelStepper library tutorial

The AccelStepper library written by Mike McCauley is an awesome library to use for your project. One of the advantages is that it supports acceleration and deceleration, but it has a lot of other nice functions too.

You can download the latest version of this library here or click the button below.

AccelStepper-1.59.zip

You can install the library by going to Sketch > Include Library > Add .ZIP Library… in the Arduino IDE.

Another option is to navigate to Tools > Manage Libraries… or type Ctrl + Shift + I on Windows. The Library Manager will open and update the list of installed libraries.

You can search for ‘accelstepper’ and look for the library by Mike McCauley. Select the latest version and then click Install.

Недостаточная температура для нагрева пластика

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

Пример температур для двух самых популярных пластиков:

PLA – температура нагрева 180 градусов, температура нагрева стола 60-80 грудусов

ABS – температура нагрева 240 градусов, температура нагрева стола 110 градусов

Настройка тока DRV8825.

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

Для настройки необходимо рассчитать значение напряжения Vref.

Vref = Current Limit / 2

где,

Current Limit — номинальный ток двигателя.

Для примера рассмотрим двигатель NEMA 17 17HS4401 с током 1,7 А.

Vref = 1,7 / 2 = 0,85 В.

Осталось только настроить, берем отвертку и вольтметр, плюсовый щуп вольтметра устанавливаем на потенциометр, а щуп заземления на вывод GND и выставляем нужное значение.

Подключение драйвера шагового двигателя DRV8825 к Arduino UNO.

Подключим двигатель DRV8825 к Arduino UNO по схеме.

Для этого подключаем GND LOGIC к GND на Arduino. Контакты DIR и STEP подключим к цифровым контактам 2 и 3 на Arduino. Подключение шагового двигателя к контактам B2, B1, A2 и A1.

Предупреждение: Подключение или отключение шагового двигателя при включенном приводе может привести к его повреждению.

Затем необходимо подключить контакт RST к соседнему контакту SLP к 5В на Arduino, чтобы включить драйвер. А контакты выбора микрошага необходимо оставить не подключенными, чтобы работал режим полный микрошаг. Теперь осталось подключить питание двигателя к контактам VMOT и GND MOT, главное не забудьте подключить электролитический конденсатор на 100 мкФ к контактам питания двигателя. В противном случае, при скачке напряжения модуль может выйти из строя.

Скетч вращения шагового двигателя NEMA 17, драйвер DRV8825.

Как уже было упомянуто выше, драйвер DRV8825 заменим драйвером A4988, поэтому и код вращения двигателем можно взять из предыдущей статьи: Драйвер шагового двигателя A4988. Но для увеличения кругозора сегодня будем использовать код вращения двигателя nema 17 без использования библиотеки.

const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;

void setup()
{
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
}
void loop()
{
  digitalWrite(dirPin, HIGH); // Установка вращения по часовой стрелки
  
  for(int x = 0; x > stepsPerRevolution; x++)
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(2000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(2000);
  }
  delay(1000);
  
  digitalWrite(dirPin, LOW); // Установка вращения против часовой стрелки

  for(int x = 0; x < stepsPerRevolution; x++)
  {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(1000);
  }
  delay(1000);
}

Описание скетча:

Для работы данного скетча, не требуется никаких библиотек. Программа начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR. Так же указываем stepsPerRevolution количество шагов на оборот.

В функции void setup() указываем управляющие контакты как выход.

В основной функции void loop(), вращаем двигатель по часовой стрелке, затем против, с разной скоростью.

Подробнее о подключении шаговых двигателей к Ardiono смотрите на сайте Ардуино технологии.

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

Распиновку и как подключать модуль драйвера DRV8825 будем рассматривать в следующей статье.

Использование драйвера DRV8825 с CNC shield v3.

Драйвер DRV8825 можно установить на CNC shield v3. CNC shield используются для управления ЧПУ станками и облегчают сборку электроники.

Данный набор позволяет без пайки собрать электронику для двух осевых, трех осевых, четырех осевых ЧПУ станков, а также для самостоятельной сборки 3D принтеров. При реализации ЧПУ станков данные шилды используются достаточно часто благодаря своей низкой цене и простоте сборки. Более подробно CNC shield v3 будем рассматривать в следующих статьях.

Вывод можно сделать следующий. Драйвер DRV8825 обладает рядом преимуществ перед драйвером A4988. А также, при использовании драйвера шагового двигателя DRV8825, меньше шума от шаговых двигателей. Это актуально при сборке лазерного гравера, 3D принтера. Когда при работе главный источник шума – это механика и гул шаговых двигателей.

Понравился статья Драйвер шагового двигателя DRV8825? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу , в группу на .

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачивая материал, я соглашаюсь с
Правилами скачивания и использования материалов.

drv8825-datasheet.pdf743 Kb 950 Скачать

БИБЛИОТЕКА ДЛЯ ШАГОВОГО ДВИГАТЕЛЯ ARDUINO

Для подключения шаговых моторов к Arduino нужно использовать драйверы. Очень дешёвые и популярные моторы 28byj-48-5v часто продаются вместе со своим драйвером (транзисторная сборка ULN2003), подключить можно к любым 4-м пинам Ардуино и использовать.

Для работы с большими шаговиками (типа Nema 17) нужно использовать специализированные драйверы, ниже вы найдёте описания и схемы подключения для A4988, DRV8825 и TMC2208, драйверы такого формата подключаются и работают практически одинаково, т.к. разработаны для CNC шилдов и взаимозаменяемы. У этих драйверов нужно настроить ток при помощи крутилки на плате. Это можно сделать “на глаз”, заставив мотор вращаться и регулируя крутилку. Мотор должен вращаться, но не вибрировать как перфоратор и сильно не нагреваться. Лучше настроить ток по опорному напряжению Vref, у каждого драйвера оно считается по своей формуле (см. картинки ниже). Берём ток своего мотора из описания, подставляем в формулу вместо current, считаем, и накручиваем полученное напряжение крутилкой. Для измерения опорного напряжения нужно подключить щупы вольтметра к самой крутилке и пину GND.

Главное преимущество дорогущих драйверов TMC – отсутствие шума/свиста/вибраций при работе, так как драйвер своими силами интерполирует сигнал до микрошага 1/256.

1Что такое драйвер двигателей и для чего он нужен

Максимальный ток на выводах Arduino слаб (около 50 мА) для такой мощной нагрузки как электромотор (десятки и сотни миллиампер). Поэтому напрямую к выводам Arduino подключать электродвигатель нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей. Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.

Различные варианты исполнения драйверов двигателей

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

Поделитесь в социальных сетях:FacebookX
Напишите комментарий