Управление шаговым двигателем с помощью arduino и драйвера a4988

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основы работы с чипом L293D

Перед тем как подключать Arduino для управления мотором, стоит поэксперрментировать с чипом L293D. Как минимум, это даст вам понимание того, как именно он работает.

В данном случаем мы можем использовать Arduino исключительно для подачи питания 5 В на мотор.

Наша задача – отследить, в какую сторону вращается ротор мотора. Можете слегка зажать вал пальцами, и вы почувствуете направление вращения или прикрепить на вал какую-то метку (например, кусок бумажки). После первой проверки, подключите контакты, которые идут от 5V (питания) и от Gnd (земля) наоборот. После запуска, двигатель должен вращаться в противоположную сторону.

По большому счету, это и является концептом, на основании которого работает чип L293D. Он управляет пинами, позволяя нам менять направление вращения ротора двигателя.

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

Три контакта L293D, которые нас интересуют, это: Pin 1 (Enable), Pin 2 (In1) и Pin 7 (In2). Они подключаются к контакту 5V или к контакту GND с использованием фиолетового, желтого и оранжевого коннектора.

Как показано на рисунке выше, мотор должен вращаться в определенном направлении, давайте назовем это направлением A.

Если вы подключите Pin 1 (Enable) к GND, мотор остановится вне зависимости от управляющих пинов In1 и In2. Контакт Enable все включает и выключает. Это очень полезно при использовании ШИМ контактов для управления скоростью мотора. Переподключите Pin 1 к 5V, чтобы двигатель вновь начал вращаться.

Теперь попробуйте переподключить In1 (pin 2, желтый). Вместо 5V подключите его к GND. Оба контакта In1и In2 теперь подключены к GND, так что двигатель опять остановится.

Перемещение In2 от GND к 5V приведет к вращению мотора в противоположном направлении (направление В).

Если вы подключите In1 обратно к 5V и в результате In1 и In2 будут подключены к 5V, мотор опять-таки перестанет двигаться.

Подключение шагового двигателя: определяем тип ШД

Тип шагового двигателя определяется просто, «на глаз», по количеству проводов, выходящих из него: их может быть 4,5,6 или 8.

Если шаговый двигатель имеет 4 провода

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

Имеющиеся у шагового двигателя 6 или 8 проводов

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

Имея дело с 5-проводным ШД

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

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

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

На примере биполярного шагового двигателя с 4 выводами при его подключении к контроллеру или драйверу, первая обмотка подключается к разъёмам А и А*, а вторая – непосредственно ко второму устройству посредством разъёмов B и B*. Прежде чем приступить к подключению, обязательно проверьте цветовую схему выводов: в зависимости от производителя, она может быть различной. Ну и, конечно же, покупайте шаговые двигатели только у надёжных поставщиков, таких, как торговый дом Степмотор.

Источник

Двигатели постоянного тока робота. Драйвер движка L293D и Arduino

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

Из этой статьи вы узнаете:

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

Совсем недавно я приобрёл данный драйвер, 2 OLED экрана для Ардуино и датчик для измерения влажности почвы.

Как раз драйвер двигателей на данном этапе является основной частью для изучения, так как я буду его применять в силовой части робота, собран он будет совместно с Arduino UNO. Этот «Бутерброд» будет выполнять основные задачи по движению шасси робота.

Большой плюс в Arduino — это быстродействие, и все операции движения будет выполнять скетч в его «мозгах». Затем я буду снимать всю информацию на Raspberry Pi и обрабатывать её.

L293D Драйвер для 2-х двигателей постоянного тока

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

Принцип работы

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

Этот модуль на микросхеме L293D является самым популярным драйвером для работы с двигателями. L293D более мощный, чем его предшественник, и может не только изменять направление вращения, но скорость. Рабочее напряжение двигателей от 5В до 36 В, рабочий ток достигает 600 мА. На двигатель L293D может подавать максимальный ток в 1,2А.

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

Подключение

Подключение осуществляется с помощью макетных проводов. Выводы модуля имеют следующие назначения:

Для контроля скорости вращения с помощью широтно-импульсной модуляции (ШИМ) имеются отдельные входы. Для генерации ШИМ-сигнала можно использовать специальные микросхемы либо платформу Arduino.

Кроме драйвера понадобится контроллер DaVinci, два мотора постоянного тока, соединительные провода и дополнительный источник питания, так как контроллер выдает маленькие токи и на двигатели необходимо подавать питание отдельным источником питания к контакту MOTOR 5-36V.

Управление двигателями производится с помощью ШИМ сигналов через контакты IN1..IN4. Двигатели подключаются к клеммам М1 и М2. При этом полярность не имеет значения, ее можно поменять программно.

Чтобы начать работу с датчиком его необходимо подключить к микроконтроллеру по схеме ниже.

Программа

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

READ Как подключить розетку без счетчика

Программу можно усложнить и кроме направления менять еще и мощность.

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

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

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

Источник

Имеем гироскутер

Разбираем его. К сожалению, воспользоваться драйверами самого скутера у меня не получилось, они ушли на запчасти, а вот мотор-колеса и батарея пригодится в нашем проекте. В гироскутере пара таких драйверов

Мотор-колесо имеет три силовых фазы (это бесколлекторный трехфазный двигатель) и энкодер в виде трех датчиков Холла (с питанием датчиков это 5 контактов) . Контакты по краям разъема – питание, внутренние сигналы от датчиков Холла.


Как я уже заметил, подключить к контроллеру имеющийся в комплекте гироскутера драйвер у меня не получилось. На помощь пришел знаменитый китайский магазин. По итогу был выбран драйвер BLD-300B. Особенностью драйвера можно считать «заточенность» на управление через подстроечный резистор (внутренний либо внешний). Такой драйвер можно использовать для регулировки вращения шпинделя фрезерного станка. Но мне нужно использовать его для управления вращением колеса. При этом должна адекватно работать обратная связь по скорости. Т.е. если сопротивление вращению увеличивается драйвер должен это компенсировать, добавив мощности мотору доведя скорость до заданной.

Если требуется, чтобы драйвер держал заданную скорость, переключите тумблер в положение ON


Если SW2 в положении OFF , при малых оборотах мотор колесо можно остановить рукой. После включения SW2, это сделать затруднительно. Самая элементарная схема подключения изображена ниже. Нужно заземлить EN и BRK. После этого можно управлять мотором посредством внутреннего подстроечного резистора.

В качестве источника питания для мотора я буду использовать батарею от разобранного гироскутера на 36V емкостью 4 амперчаса.

Входы драйвера EN, BRK, F/R через резистор подтянуты к 5 вольтам питания, как следствие, если их не подключать никуда, они будут находиться в состоянии высокого сигнала (на них будет 5 вольт).

Код для Arduino управления драйвером A4988 (DRV8825)с использованием библиотеки AccelStepper.

Управление шаговым двигателем без библиотеки идеально подходит для простых проектов на Arduino с одним двигателем. Но если вы хотите управлять несколькими шаговыми двигателями, вам понадобится библиотека. Итак, для нашего следующего примера будем использовать библиотеку шаговых двигателей под названием AccelStepper library.

AccelStepper library поддерживает.

Ускорение и замедление. Несколько одновременных шаговых двигателей с независимыми одновременными шагами на каждом шаговом двигателе. Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.

Установка библиотеки AccelStepper.

Чтобы установить библиотеку, перейдите в «Скетч» -> «Подключить библиотеку» -> «Управление» библиотеками. Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте свой поиск, набрав «Accelstepper». Щелкните первую запись и выберите «Установка».

Код Arduino с использованием библиотеки AccelStepper.

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

// Подключаем библиотеку AccelStepper
#include <AccelStepper.h>
// Устанавливаем выводы
const int dirPin = 2;
const int stepPin = 3;
int i = 0;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1
// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
  // Устанавливаем максимальную скорость, коэффициент ускорения,
  // начальную скорость и целевую позицию
  myStepper.setMaxSpeed(1000);
  myStepper.setAcceleration(50);
  myStepper.setSpeed(200);
  myStepper.moveTo(100);
}
void loop() {
  // Изменение направления вращения, когда двигатель достигнет заданного положения
  if (myStepper.distanceToGo() == 0) 
  {
    myStepper.moveTo(-myStepper.currentPosition());
  }
  // Передвинуть на 1 шаг
  myStepper.run();
}

Пояснение к коду:

Подключаем библиотеку AccelStepper.

#include <AccelStepper.h>

Дальше определяем выводы Arduino, к которым подключаются
выводы
STEP и DIR A4988. Мы также
устанавливаем
motorInterfaceType на 1. (1 означает внешний шаговый драйвер с
выводами
Step и Direction).

const int dirPin = 2;
const int stepPin = 3;
int i = 0;
// Определение тип интерфейса двигателя
#define motorInterfaceType 1

Затем мы создаем экземпляр библиотеки под названием myStepper.

// Создаем экземпляр
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

В функции настройки мы сначала устанавливаем максимальную скорость
двигателя равной тысяче. Затем мы устанавливаем коэффициент ускорения для
двигателя, чтобы добавить ускорение и замедление к движениям шагового
двигателя. Дальше устанавливаем обычную скорость 200 и количество шагов,
которое мы собираемся переместить, например, 200 (поскольку NEMA 17 делает 200
шагов за оборот).

void setup() {
    myStepper.setMaxSpeed(1000);
    myStepper.setAcceleration(50);
    myStepper.setSpeed(200);
    myStepper.moveTo(100);
}

В основном цикле loop() используем оператор if, чтобы
проверить, как далеко двигателю нужно проехать (путем чтения свойства
distanceToGo), пока он не достигнет целевой позиции (установленной moveTo). Как
только
distanceToGo достигнет нуля, поменяем направление вращения двигателя в
противоположном направлении, изменив значение
moveTo на отрицательное по
отношению к его текущему значению. Теперь вы заметите, что в конце цикла мы
вызвали функцию
run (). Это самая важная функция, потому что шаговый двигатель
не будет работать, пока эта функция не будет выполнена.

void loop() {
    if (myStepper.distanceToGo() == 0) 
        myStepper.moveTo(-myStepper.currentPosition());
    myStepper.run();
}

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

Понравился Урок 2. Как подключить A4988 (DRV8825) к Arduino? Скетч, библиотека? Не забудь поделиться с друзьями в соц. сетях.

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

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

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

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

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

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

Код вращения шагового двигателя NEMA 17, драйвер A4988, DRV8825 без использования библиотеки.ino 1 Kb 230 Скачать

Код вращения шагового двигателя NEMA 17, драйвер A4988, DRV8825 без использования библиотеки.ino 1 Kb 183 Скачать

библиотека AccelStepper.zip 86 Kb 190 Скачать

Работа шагового двигателя и описание драйвера

Как работает шаговик?

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

Мы же с вами рассмотрим конкретный двигатель
28BYj-48
с драйвером управления
. Он достаточно дешёвый, прост в сборке и легко писать программу.

В 4-шаговом режиме он может совершать 2048 шагов, в 8-шаговом 4096 шагов. Питание 5 В, ток потребления 160 мА. Передаточное число 1:64 , то есть один шаг он совершит на 5,625 градусов. Крутящий момент составляет 34 мН.м. Средняя скорость 15 об/мин, с помощью программного кода можно ускорить до 35 об/мин, но вы должны понимать, что мы при этом теряем мощность и точность.

Размеры двигателя указаны из первоисточника — даташита производителя
Kiatronics.

А вот таким образом он выглядит изнутри:

Для небольших технических проектов —
28BYj-48 идеальный вариант. Его главным преимуществом является дешевизна и простота. Прилагаю спецификацию:

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

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

1.Шаговый режим —
это когда две из четырех обмоток запитываются на каждом шаге. Смотрите карту включения обмоток: Для этого способа используется библиотека my
Stepper.h.

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

Провод Фазы для полушагового режима
1 2 3 4 5 6 7 8
4 оранжевый
3 желтый
2 розовый
1 синий

Описание драйвера

Плата представляет собой силовой модуль, который содержит в себе семь независимых транзисторов Дарлингтона. Каждая пара представляет собой каскад из двух биполярных транзисторов.
является неким усилителем с током нагрузки 500 мА и напряжением 50 В. На изображении отображена сама плата и описание выводов к ней.

Драйвер моторов четырехканальный на двух микросхемах L293D

Статья о четырехканальном драйвере моторов RKP-MDS-L293D на двух микросхемах L293D. Электрическая схема, функциональная диаграмма, подключение к Ардуино, подключение DC-моторов, примеры программного кода.

Подключение драйвера RKP-MDS-L293D Motor Shield L293D к Arduino UNO

Модуль управления моторами RKP-MDS-L293D на микросхемах L293D предназначен для управления различными типами двигателей — постоянного тока (до 4-х шт.), сервомоторов (до 2-х шт.) и шаговых двигателей (до 2-х шт.) совместно с Arduino.

Электрическая схема драйвера.

На электрической схеме драйвера RKP-MDS-L293D Motor Driver L293D видно, что режимы управление двигателями постоянного тока и шаговыми двигателями осуществляется через микросхему 74HCT595N (см. рис. 1).

Функциональная диаграмма микросхемы 74HCT595N


Рис. 1

Это регистр последовательного сдвига с защелкой.

В библиотеке AFMotor Motor shield определены pin для драйвера RKP-MDS-L293D по которым осуществляется установка режимов управление моторами:

// Arduino pin names for interface to 74HCT595 latch #define MOTORLATCH 12 = DIR_LATCH // pin 12 Arduino #define MOTORCLK 4 = DIR_CLK // pin 4 Arduino #define MOTORENABLE 7 = DIR_EN // pin 7 Arduino #define MOTORDATA 8 = DIR_SER // pin 8 Arduino

За изменение скорости вращения двигателей отвечаю цепи PWM0A, PWM0B, PWM1A, PWM1B, PWM2A и PWM2B микросхем драйверов двигателей L293D (см. рис. 2).


Рис. 2

Соответствие pin драйвера моторов L293D и pin Arduino Uno приведены в таблице 1.


Таблица. 1

А назначение управляющих битов регистра 74HCT595N для моторов 1- 4 в таблице 2.

Таблица. 2

Из таблицы 2 видно, чтобы заставить Мотор 1 работать на max скорости нужно в регистр передать byte у которого bit 2 = 1 и bit 3 = 0, а чтобы поменять вращение на противоположное – bit 2 = 0 и bit 3 = 1.

!!Еще одна важная особенность!!!

Питание сервомоторов осуществляется от платы Arduino 5 Вольт. Если сервомоторы потребляют больший ток чем может выдать источник питания Arduino, то всё устройство начинает «глючить».

Это может случиться даже с небольшими серводвигателями, если их где-то заклинит. Тогда ток потребления может возрасти до 0,8-1А. Поэтому питать серводвигатели лучше от дополнительного источника питания.

Подключение питания Питание моторов подключенных к драйверу RKP-MDS-L293D может осуществляется не сколькими способами:

1. От одного источника питания. В этом случае питание подается на разъем Arduino 6-12В и с выхода линейного стабилизатора происходит питание цифровых схем Arduino и сервомоторов. Далее питание 6-12В через контакт Vin и установленный джампер, подается на драйвер RKP-MDS-L293D для питания остальных типов моторов.

2. От двух источников питания. Для этого необходимо снять джампер источника питания. В этом случае источник питания подключенный к разъем у Arduino 6-12В обеспечивает ее работу, цифровых схем драйвера RKP-MDS-L293D и питание серво двигателей. А второй источник питания 4.5-25В — питание двигателей постоянного тока и шаговых двигателей (см. рис. 3).


Рис. 3

Схема подключения двигателей к драйверу RKP-MDS-L293D Motor Driver L293D

Подключение моторов постоянного тока (4 DC Motors)

Драйвер RKP-MDS-L293D позволяет одновременно подключить до 4-х двигателей постоянного тока (см. рис. 4).


Рис. 4

Подключение шаговых двигателей к драйверу RKP-MDS-L293D Motor Driver L293D

Драйвер Motor Shield L293D позволяет одновременно подключить до 2-х шаговых двигателей (см. рис. 5).


Рис. 5

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

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

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

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

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

Самые простые двигатели Варианты на сайте 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

https://youtube.com/watch?v=pDE_wXNs6J4

https://youtube.com/watch?v=RWrt4fujNdg

https://youtube.com/watch?v=yGA9vXA1UJA

Управление биполярным шаговым двигателем без использования драйвера

Как-то раз мне захотелось поэксперементировать с шаговыми двигателями. С униполярным двигателем всё очень просто, достаточно полумоста на очень бюджетной микросхеме ULN2003 или ULN2803. А вот с биполярным двигателем всё гораздо сложнее. Он имеет минимум две обмотки, на каждом конце которых полярность питания должна меняться на противоположную. Кто-то скажет «зачем изобретать велосипед? Купи драйвер на L239 и радуйся жизни», может быть это и правильно, но мы же не ищем лёгких путей, да и что-нибудь спаять руки чешутся (а драйверы были куплены, просто они ещё ехали из Китая). Немного покопавшись в интернете, я заинтересовался такой штукой, как H-мост.

3Скетч для управления коллекторным двигателем

Напишем скетч для управления коллекторным двигателем. Объявим две константы для ножек, управляющих двигателем, и одну переменную для хранения значения скорости. Будем передавать в последовательный порт значения переменной Speed и менять таким образом скорость (значением переменной) и направление вращения двигателя (знаком числа).

int Speed = 0; const int IA1 = 5; // Управляющий вывод 1 const int IA2 = 6; // Управляющий вывод 2void setup() { pinMode(IA1, OUTPUT); pinMode(IA2, OUTPUT); Serial.begin(9600);} void loop() { if (Serial.available() > 0) { String s = Serial.readString(); Speed = s.toInt(); // преобразуем считанную строку в число } if (Speed > 0) { // если число положительное, вращаем в одну сторону analogWrite(IA1, Speed); analogWrite(IA2, LOW); } else { // иначе вращаем ротор в другую сторону analogWrite(IA1, LOW); analogWrite(IA2, -Speed); }} Максимальная скорость вращения – при наибольшем значении напряжения, которое может выдать драйвер двигателя. Мы можем управлять скоростью вращения, подавая напряжения в диапазоне от 0 до 5 Вольт. Так как мы используем цифровые ножки с ШИМ, напряжение на них регулируется командой analogWtirte(pin, value), где pin – номер вывода, на котором мы хотим задать напряжение, а аргумент value – коэффициент, пропорциональный значению напряжения, принимающий значения в диапазоне от 0 (напряжение на выводе равно нулю) до 255 (напряжение на выводе равно 5 В).

Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.

Подключимся с помощью любой терминалки к порту, передадим число «100» – двигатель начнёт вращаться со средней скоростью. Если подадим «минус 100», то он начнёт вращаться с той же скоростью в противоположном направлении.


Управление электромотором с помощью драйвера двигателей и Arduino

А вот так выглядит подключение подключение коллекторного двигателя к Arduino в динамике:

https://youtube.com/watch?v=-kXXz5jLSew