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

Подключение шагового двигателя к Ардуино

Шаговый двигатель Arduino ► предназначен для перемещения объекта на заданное количество шагов вала. Рассмотрим устройство и схему подключения шагового двигателя.

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки stepper.h или accelstepper.h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.

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

В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 48, то есть один шаг соответствует повороту вала на 7,5°. Гибридные двигатели обеспечивают не меньше 400 шагов на один оборот (угол шага 0,9°).

Фото. Устройство шагового мотора в разрезе

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

Драйвер шагового двигателя Ардуино

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

Фото. Виды драйверов для управления шаговым двигателем

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

Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 изображена на рисунке ниже. Основные характеристики мотора 28BYJ-48: питание от 5 или 12 Вольт, 4-х фазный двигатель, угол шага 5,625°. Порты драйвера IN1 — IN4 подключаются к любым цифровым выводам платы Arduino Mega или Nano. Светодиоды на модуле служат для индикации включения катушек двигателя.

Как подключить шаговый двигатель к Ардуино

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • драйвер шагового двигателя ULN2003;
  • шаговый двигатель 28BYJ-48;
  • провода «папа-мама».

Схема подключения шагового двигателя к Arduino UNO

Управление и подключение шагового двигателя к Ардуино (Arduino)

Когда нам нужны точность и стабильность, мы выбираем шаговый двигатель — степпер. То, как спроектировано это устройство позволяет ему двигаться лишь от одного шага к следующему и фиксироваться в этом положении. Обычный степпер имеет 200 шагов на один полный переворот; если мы при этом укажем моторчику передвинуться на 100 шагов в одном направлении, то он повернётся ровно на 180 градусов. Когда мы даём команду пройти 1 шаг, степпер поворачивается ровно на 1.8 градуса.

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

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

Мы можем управлять биполярным мотором при помощи платы Arduino Motor Shield. Вот, что нам для этого потребуется:

  • Плата Ардуино, подключенная к компьютеру посредством USB
  • Модуль Arduino Motor Shield
  • Биполярный шаговый двигатель, вы можете посмотреть их на сайтах Sparkfun, Pololu, Adafruit или выдернуть из старого принтера

Вот простой метод определить тип двигателя. Четырёхкабельный степпер обычно биполярный. Если вы видите 6 кабелей, то он скорее всего униполярный, а два центральных катушечных кабеля должны быть соединены друг с другом. Есть версии с пятью проводами, что тоже говорит о том, что моторчик униполярный и два центральных катушечных кабеля уже внутренне соединены. Есть также шаговые двигатели с 8 кабелями, но они встречаются крайне редко. Они также униполярные и четыре их центральных кабеля соединены вместе.

Шаг 1: Как подключать степперы

Подключение шагового двигателя к ардуино организуется следующим образом:

  • Аккуратно установите Arduino Motor Shield поверх Ардуино, не погните пины.
  • Найдите катушки. При помощи мультиметра определите сопротивление между всеми проводами. Провода с низким сопротивлением между ними будут катушками.
  • Соедините 4 провода степпера с основным выходом клемм на Shield. Одна катушка идёт на один выход двигателя, а вторая на другой выход.

На картинке изображено как всё должно выглядеть.

Шаг 2: Код

Следующий код повернёт двигатель на 100 шагов в одном направлении и на 100 шагов в обратном.

Шаг 3: Разбор кода

В коде объявляется использование степпера, устанавливается его скорость и мотор поворачивается по команде в обоих направлениях.

На этом этапе объявляется использование степпера. Синтаксис требует указать в качестве первого параметра количество шагов двигателя, а затем пины, к которым он подключен. Нам нужно указать два пина направлений Arduino Motor Shield, они указывают, в котором направлении будут возбуждаться катушки:

В обычном управлении шаговым двигателем постоянного тока в Motor Shield, два пина PWM определяют, какую мощность мы направляем на каждый моторчик. Тем не менее, так как мы работаем со степпером, мы хотим использовать его на полную мощность, поэтому мы упростим задачу и напрямую зададим пинам PWM постоянное состояние HIGH:

Еще одним важным шагом является определение скорости, на которой мы хотим, чтобы мотор вращался. Если, например, мы устанавливаем скорость на 60 оборотов в минуту, как в нашем случае, а у мотора 200 шагов, то у него займёт около 5 миллисекунд для того, чтобы пройти 1 шаг. Скорость моторчика можно поменять в любое время:

И, наконец, чтобы заставить моторчик двигаться, мы должны отправить команду с количеством шагов, которое он должен пройти. Если мы отправим отрицательное число шагов, он будет двигаться в обратном направлении. Заметьте, что функция step() остановит выполнение программы, пока моторчик не повернётся до конца. Если, к примеру, мы задали 200 шагов на скорости 1 оборот в минуту, то пройдёт ровно 1 минута перед тем, как Ардуино продолжит выполнять код программы.

Ардуино ожидает, что степпер движется, в то время как он отдаёт ему эту команду. У степпера нет обратной связи, поэтому если мы зажмём штифт моторчика, Ардуино всё же будет думать, что он вращается, в то время как на самом деле моторчик стоит на месте.

Шаг 4: Больше информации о степперах

Шаговые двигатели отличаются от обычных двигателей постоянного тока тем, что вместо того, чтобы просто вращаться, они двигаются маленькими интервалами в определённом направлении. Эти маленькие интервалы называются шагами. Мы можем приказать степперу продвинуться на 1 или более шагов в конкретном направлении. Они не всегда быстры, но зато очень точны и имеют определённый крутящий момент. Например, блок подачи бумаги в принтере содержит степпер. 3Д-принтеры и ЧПУ также содержат степперы ввиду их высокой точности и стабильности.

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

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Управляем шаговым двигателем с помощью Arduino и драйвера DRV8825

Шаговый двигатель – это тип двигателя постоянного тока, который работает дискретно и используется повсеместно, от камеры наблюдения до сложных роботов и машин. Шаговый двигатель NEMA 17 имеет угол шага 1,8°, что означает, что для поворота на 360 ° потребуется 200 шагов. Изменяя скорость подачи управляющего сигнала, мы можем легко контролировать скорость двигателя. Шаговый двигатель может работать в различных пошаговых режимах, таких как полный шаг, полшага, ¼ шаг путем применения соответствующих логических уровней к контактам шагового модуля. В нашем предыдущем проекте мы контролировали шаговый двигатель 28-BYJ48 с помощью Arduino. 28-BYJ48 имеет относительно более низкий крутящий момент, чем другие шаговые двигатели, такие как NEMA 14, NEMA17.

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

Модуль шагового привода или драйвер контролирует работу шагового двигателя. Драйверы шагового двигателя посылают ток на шаговый двигатель через различные фазы. DRV8825 – это модуль микрошагового драйвера, аналогичный модулю A4988. Используется для управления биполярными шаговыми двигателями. Этот модуль управления шаговым двигателем Nema 17 имеет встроенный транслятор, который означает, что он может управлять как скоростью, так и направлением биполярного шагового двигателя, такого как NEMA 17, используя только два контакта, то есть STEP и DIR. Вывод STEP используется для управления шагами, а вывод DIR – для управления направлением вращения.

Драйвер двигателя Nema 17 DRV8825 имеет максимальную выходную мощность 45 В и ± 2,2А. Этот драйвер может управлять шаговым двигателем в шести различных пошаговых режимах, то есть с полным шагом, полушагом, четвертьшагом, одной восьмой шага, одной шестнадцатой шага и одной тридцать второй шага. Вы можете изменить разрешение шага, используя линии микрошага (M0, M1 и M2). Установив соответствующие логические уровни для этих контактов, мы можем установить двигатели на одно из шести шагов разрешения.

Схема подключения шагового двигателя NEMA 17, Arduino, DRV8825 и сопутствующих компонентов приведена на следующем изображении.

Питание шагового двигателя осуществляется от источника питания 12 В, а модуль DRV8825 получает питание от Arduino. Контакты RST и SLEEP оба подключены к 5V от Arduino, чтобы драйвер оставался включенным. Потенциометр подключен к выводу A0 Arduino; он используется для управления направлением двигателя. Если вы поворачиваете потенциометр по часовой стрелке, то шаговый двигатель будет вращаться по часовой стрелке, а если вы поворачиваете потенциометр против часовой стрелки, то он будет вращаться против часовой стрелки. Конденсатор 47 мкФ используется для защиты платы от скачков напряжения. Выводы M0, M1 и M2 оставлены отсоединенными, это означает, что драйвер будет работать в режиме полного шага.

Перед использованием двигателя измените ограничение тока модуля DRV8825 на 350 мА с помощью потенциометра ограничения тока. Вы можете измерить текущий предел с помощью мультиметра. Измерьте ток между двумя точками заземления и потенциометром и отрегулируйте его до требуемого значения.

Полный код для управления Nema 17 с помощью Arduino приведен далее.

Шаговые двигатели и моторы Ардуино 28BYJ-48 с драйвером ULN2003

В этой статье мы поговорим о шаговых двигателях в проектах Ардуино на примере очень популярной модели 28BYJ-48. Так же как и сервоприводы, шаговые моторы являются крайне важным элементом автоматизированных систем и робототехники. Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора. В этой статье вы найдете описание схемы работы шаговых двигателей, пример подключения к Arduino с помощью драйверов на базе ULN2003 и примеры скетчей с использованием стандартной библиотеки Stepper.

Шаговый двигатель – принцип работы

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

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

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

Основные виды шаговых моторов:

  • Двигатели с переменными магнитами (применяются довольно редко);
  • Двигатели с постоянными магнитами;
  • Гибридные двигатели (более сложные в изготовлении, стоят дороже, но являются самым распространенным видом шаговых двигателей).

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

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

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

Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.

Работа двигателя в биполярном режиме имеет несколько преимуществ:

  • Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
  • Возможность применения двигателей с любой конфигурацией фазной обмотки.

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

Драйвер шагового двигателя на базе L298N

Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

Драйвер двигателя L298N

Драйвер шагового двигателя ULN2003

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

Другие драйвера

Существует другой вид драйверов – STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:

  • Они позволяют стабилизировать фазные токи;
  • Возможность установки микрошагового режима;
  • Обеспечение защиты ключа от замыкания;
  • Защита от перегрева;
  • Оптоизоляция сигнала управления, высокая защищенность от помех.

В STEP/DIR драйверах используется 3 сигнала:

  • STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
  • DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
  • ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.

Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Подключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Подключение шагового двигателя к Ардуино на базе L298

Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

Подключение шагового двигателя к Ардуино

Принципиальная схема подключения.

Принципиальная схема подключения шагового двигателя

Еще одна схема подключения биполярного шагового двигателя Nema17 через драйвер L298 выглядит следующим образом.

Обзор основных моделей шаговых двигателей для ардуино

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Основные характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50Ω ± 7% (25 ℃).

Описание библиотеки для работы с шаговым двигателем

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

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

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

Заключение

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

Источники:

http://masterclub.online/topic/13896-upravleniee-shagovim-dvigatelem-arduino

http://digitrode.ru/computing-devices/mcu_cpu/2250-upravlyaem-shagovym-dvigatelem-s-pomoschyu-arduino-i-drayvera-drv8825.html

http://arduinomaster.ru/motor-dvigatel-privod/shagovye-dvigateli-i-motory-arduino/

http://developer.alexanderklimov.ru/arduino/pwm.php

Ссылка на основную публикацию