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

Сегодня в уроке подключим шаговый двигатель 28BYJ-48 к Arduino и научимся вращать вал двигателя в разные стороны и изменять скорость вращения с помощью потенциометра и энкодера KY-040.

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

Характеристики шагового двигателя 28BYJ-48:

Ардуино уно как подключить шаговый двигатель Размера шагового двигателя 28BYJ-48. Необходимы при проектировании деталей для 3D печати.Ардуино уно как подключить шаговый двигатель

Вот так выглядит схема шагового двигателя 28BYJ-48

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

Подавая сигналы в определённом порядке на выводы двигателя, двигатель можно вращать по часовой стрелке.

Для шагового режима.

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

Для полушагового режима.

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

Прямое подключение шагового двигателя 28BYJ-48 к Arduino

В связи с тем, что двигатель 28BYJ-48 работает от 5в и при небольших токах, его можно подключить на прямую к Arduino.

Схема подключения к Arduino UNO будет следующая.

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

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

Для этого можно сделать массив подачи сигнала на пины микроконтроллера.

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

И в цикле выполнять каждую строчку массива. Но есть решение с более компактным кодом. Нашел я данный пример на канале Дмитрия Осипова. За что ему отельное спасибо!

Код для вращения в одну и в другую сторону будет вот таким.

ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!

Пример подключения шагового двигателя 28BYJ-48 (5V)с использованием драйвер ULN2003.

Также у Дмитрия Осипова есть код для изменения скорости вращения с помощью потенциометра. Я его немного доработал, сделал обработку нажатия кнопки без задержки в 500 мс. Сейчас двигатель стал вращаться в обратную сторону без видимой задержки.

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

Драйвер устроен вот таким образом.

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

Подключим все по схеме и загрузим код в Arduino NANO.

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

Схема подключения для Arduino UNO будет аналогичной.

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

ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!

Пример управления шаговым двигателем 28BYJ-48 с помощью Энкодера.

Для уменьшения количества элементов в схеме решил заменить потенциометр и тактовую кнопку на энкодер вращения KY-040. Как подключить энкодер вращения к Arduino рассказывал в предыдущем уроке.

  • Подключаем шаговый двигатель 28BYJ-48 и энкодер к Arduino по схеме.
  • Проводим небольшую доработку кода и получим вот такой результат.

Если нажать на энкодер, меняется направление вращения. А при вращении энкодера по часовой стрелке — скорость увеличивается. Если вращать против часовой стрелки — скорость снижается.

ВНИМАНИЕ! Материалы для скачивания находятся внизу статьи!

Вы также можете без проблем воспользоваться примером из стандартной библиотеки Stepper, которая позволит сделать тоже самое и при меньшем объёме кода. Но библиотека не даст вам понять, как это все устроено.

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

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

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

Не забывайте подписываться на канал Youtube и вступайте в группы в

Подключение шагового двигателя к Arduino Uno

Шаговые двигатели с каждым годом находят все большее применение в мире электроники.

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

В этом проекте мы рассмотрим один из наиболее распространенных шаговых двигателей 28BYJ-48 и его подключение к плате Arduino с помощью модуля ULN2003.

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

Общие принципы работы шаговых двигателей

Внешний вид шагового двигателя 28BYJ-48 представлен на следующем рисунке:

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

Первый вопрос, который напрашивается при взгляде на этот рисунок – почему в отличие от обычного двигателя из этого шагового двигателя выходят 5 проводов различных цветов? Чтобы понять это давайте сначала разберемся с принципами работы шагового двигателя.

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

Чтобы добиться этого в устройстве шаговых двигателей присутствует несколько катушек и на эти катушки нужно подавать питание в определенной последовательности чтобы двигатель вращался (шагал).

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

Ардуино уно как подключить шаговый двигательКак можно видеть из рисунка, двигатель имеет однополярную катушку с 5 выводами. Но фактически это 4 катушки, на которые нужно подавать питание в определенной последовательности. На красные провода необходимо подать +5V, на остальные 4 провода необходимо подать землю чтобы запустить в работу соответствующую катушку. Мы будем использовать плату Arduino чтобы подавать питание на эти катушки в определенной последовательности и тем самым заставлять двигатель вращаться. Более подробно ознакомиться с принципами работы шаговых двигателей можно в статье про подключение шагового двигателя к микроконтроллеру AVR.

Так почему же этот двигатель называется 28BYJ-48? Честно говоря, мы не знаем точного ответа на этот вопрос. Некоторые наиболее важные технические характеристики этого шагового двигателя приведены на следующем рисунке.

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

На первый взгляд от такого количества характеристик может закружиться голова, но давайте попробуем выделить из них самые важные, те, которые нам понадобятся для дальнейшей работы. Во-первых, мы знаем, что это шаговый двигатель 5V, поэтому необходимо подавать на красный провод 5V.

Также мы знаем что это четырехфазный шаговый двигатель поскольку в нем четыре катушки. Передаточное число этого двигателя — 1: 64. Это означает, что вал, который вы видите снаружи, сделает одно полное вращение в том случае, когда двигатель внутри сделает 64 оборота.

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

Еще одним важным показателем, который нам следует знать, является угол шага: 5.625°/64. Это значит что когда двигатель сделает последовательность в 8 шагов он будет поворачиваться на 5.625° при каждом шаге и за один полный оборот он сделает 64 шага (5.625*64=360).

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

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

В Arduino для управления двигателем мы будем использовать 4-шаговую последовательность, поэтому угол шага будет составлять 11.25°. Поскольку изначально он равен 5.625°(приведен в даташите), то для 8 шаговой последовательности получим 11.25° (5.625*2=11.25).

Справедлива следующая формула:

Количество шагов за оборот = 360 / угол шага.

В нашем случае 360/11.25 = 32 шага за оборот.

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

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

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

Читайте также:  В3т4 двигатель как подключить 220в

Основной принцип, которого следует придерживаться при выборе драйвера мотора – он должен обеспечивать достаточный ток для управления шаговым двигателем.

Работа схемы

Схема подключения шагового двигателя к плате Arduino представлена на следующем рисунке.

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

Мы использовали шаговый двигатель 28BYJ-48 и драйвер мотора ULN2003. Для подачи питания на 4 катушки шагового двигателя мы будем использовать контакты платы Arduino 8, 9, 10 и 11. Драйвер мотора запитывается от контакта 5V платы Arduino.

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

Разработка программы для платы Arduino

Перед тем как начать писать программу для платы Arduino давайте разберемся что должно происходить внутри этой программы. Как мы уже говорили ранее, мы будем использовать метод 4-шаговой последовательности, то есть нам нужно будет сделать 4 шага чтобы выполнить один полный оборот двигателя.

Номер шага Контакты, на которое подается питание Катушки, на которое подается питание
Шаг 1 8 и 9 A и B
Шаг 2 9 и 10 B и C
Шаг 3 10 и 11 C и D
Шаг 4 11 и 8 D и A

На драйвере мотора есть 4 светодиода, по свечению которых можно судить о том, на какую катушку подается питание в конкретный момент. Более подробно все эти процессы можно посмотреть в видео, приведенном в конце статьи.

Мы напишем программу, в которой необходимое количество шагов для двигателя мы будем вводить в мониторе последовательного порта (serial monitor) платы Arduino. Полный текст программы приведен в конце статьи, здесь же мы рассмотрим наиболее важные его фрагменты.

  • Как мы рассчитали ранее, полное число шагов для полного оборота нашего шагового двигателя, равно 32, пропишем это в следующей строчке кода:
  • #define STEPS 32
  • Далее мы должны сказать плате Arduino через какие ее контакты мы будем управлять шаговым двигателем (то есть к каким ее контактам подключен драйвер мотора).
  • Stepper stepper (STEPS, 8, 10, 9, 11);

Примечание: последовательность номеров контактов, указанная в приведенной команде (8,10,9,11) – специально упорядочена таким образом чтобы подавать питание на катушки шагового двигателя в правильном порядке. Если вы измените номера контактов, к которым подключен шаговый двигатель, то вы соответствующим образом должны их упорядочить для подачи в приведенную команду.

  1. Мы будем использовать специальную библиотеку для работы с шаговыми двигателями, поэтому для задания скорости вращения шагового двигателя мы можем использовать команду вида:
  2. stepper.setSpeed(200);
  3. Для двигателя 28-BYJ48 скорость вращения можно установить в диапазоне от 0 до 200.
  4. Теперь, чтобы двигатель сделал один шаг, мы можем использовать следующую команду:
  5. stepper.step(val);

Количество шагов, которое должен сделать двигатель, определяется переменной “val”. Поскольку мы имеем 32 шага (для оборота) и передаточное число 64 мы должны сделать 2048 (32*64=2048) “шагов” в этой команде для совершения одного полного оборота двигателя.

Значение переменной “val” в нашей программе мы будем вводить из окна монитора последовательной связи.

Работа проекта

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

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

Теперь загрузите код программы в плату Arduino UNO и откройте окно монитора последовательной связи (serial monitor).

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

Для вращения против часовой стрелки просто вводите нужное число шагов со знаком “–“. То есть если вы введете -1024, то вал мотора совершит пол-оборота против часовой стрелки. Чтобы протестировать работу проекта вы можете вводить любые числа.

Исходный код программы

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

#include // заголовочный файл библиотеки для работы с шаговыми двигателями
// измените необходимое число шагов в зависимости от модели вашего шагового двигателя
#define STEPS 32
// создайте класс для шагового двигателя и запишите для него правильную последовательность контактов
Stepper stepper(STEPS, 8, 10, 9, 11);
int val = 0;
void setup() {
Serial.begin(9600);
stepper.setSpeed(200);
}
void loop() {
if (Serial.available()>0)
{
val = Serial.parseInt();
stepper.step(val);
Serial.println(val); //for debugging
}
}

Видео, демонстрирующее работу схемы

(Проголосуй первым!) Загрузка… 2 823 просмотров

Шаговый двигатель 28BYJ-48 с драйвером ULN2003 и Arduino UNO | РОБОТОША

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

Шаговый двигатель может точно перемещаться на минимально возможный угол, называемый шагом. Для практических задач можно считать, что шаговый мотор немного похож на сервопривод. Можно задать ему повернуться в некоторое положение и можно рассчитывать получить достаточно стабильные результаты в нескольких повторных экспериментах. Обычно, сервоприводы ограничены углом поворота в диапазоне от 0 до 180°, шаговый же двигатель может вращаться непрерывно, подобно двигателю постоянного тока. Преимуществом шаговых двигателей является то, что можно достичь гораздо большей степени контроля над движением. К недостатком шаговых двигателей можно отнести несколько более сложное управление, чем в случаях с сервами или моторами постоянного тока.

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

С некоторыми программными хитростями для постепенного ускорения можно достичь более 25 об/мин. Эти маленькие шаговики вместе с небольшой платкой-драйвером на базе м/сх ULN2003 для использования совместно c Arduino UNO можно приобрести здесь за сущие копейки.

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

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

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

Дешевизна и миниатюрность делает 28BYJ идеальным вариантом для небольших робототехнических приложений, а также для знакомства с управлением шаговыми двигателями, используя Arduino. Ниже представлена детальная спецификация шагового двигателя 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. Однако, некоторые пытливые товарищи с форума Arduino разобрали редуктор и определили, что, в действительности передаточное число равно 63.68395:1. Это означает, что в рекомендованном полушаговом режиме мы имеем: 64 шага на оборот мотора помноженное на передаточное число 63.684 ≈ 4076 шагов на полный оборот.
Подключение к контроллеру ULN2003 A (синий), B (розовый), C (желтый), D (Оранжевый), E (красный, средний вывод обмоток)
Вес 30г

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

Читайте также:  Ваз 21053 сколько объем двигателя

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

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

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

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

С 4 обмотками это дает 8 различных сигналов, как показано в таблице ниже.

Провод→ Направление вращения по часовой стрелке (1-2 фазы)
1 2 3 4 5 6 7 8
4 Оранжевый
3 Желтый
2 Розовый
1 Синий

Подключение драйвера шагового двигателя ULN2003 к Arduino Uno

Плата драйвера шагового двигателя на базе микросхемы ULN2003, представляющей собой массив транзисторов, включенных по схеме Дарлингтона, позволяет достаточно просто управлять мотором 28BYJ-48, используя микроконтроллер.

В нашем случае, в качестве управляющего микроконтроллера мы выберем плату Arduino Uno с микроконтроллером ATmega328.

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

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

Плата управления на базе ULN2003

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

Замечу, что питать мотор от 5 В Arduino не рекомендуется, так как мотор может потреблять ток, превышающий возможности Arduino. Лучше использовать внешний 5-12 В источник питания, выдающий ток не менее 1 А.

Четыре управляющих входа помечены как IN1-IN4 и должны быть подключены к четырем цифровым выводам Arduino.

Подключите выводы IN1, IN2, IN3 и IN4 к пинам 3, 4, 5 и 6 Arduino Uno. Положительный контакт источника питания необходимо подключить к выводу, помеченному как «+», а землю источника питания к выводу «-» на плате контроллера. Если для питания Arduino и мотора используются различные источники питания, то необходимо объединить выводы «земля» источников вместе.

Библиотека AccelStepper

Стандартная библиотека Stepper, идущая с Arduino IDE, поддерживает только полношаговый метод управления и имеет сильно ограниченные возможности. Использовать ее можно только в очень простых приложениях, в которых используется только один мотор. Применение библиотеки Stepper для управления 28BYJ-48 является не самым эффективным решением.

Есть решение получше — это использовать библиотеку Accel Stepper. Эта библиотека очень хорошо работает совместно с шаговым мотором 28BYJ-48 (мотор почти не греется), а также поддерживает ускорение, что позволяет заставить мотор вращаться быстрее. Библиотека использует код, не блокирующий шаги и включает немало других приятных особенностей.

  • Объектно-ориентированный интерфейс для 2, 3 или 4-выводных шаговых двигателей
  • Поддержка ускорения и замедления
  • Поддержка одновременно нескольких шаговых двигателей с независимой работой для каждого мотора
  • Функции API не используют функцию delay и не прерывают работу
  • Поддержка выбора функции для реализации шага позволяет работать совместно с библиотекой AFMotor
  • Поддержка контроллеров шаговых двигателей таких как Sparkfun EasyDriver (основанных на микросхеме драйвера 3967)
  • Поддержка низких скоростей
  • Расширяемый API
  • Поддержка подклассов

Как установить библиотеку в Arduino IDE.

Представленный ниже код медленно ускоряет мотор 28BYJ-28 в одном направлении, затем замедляется до остановки и вновь ускоряется, но уже вращаясь в противоположном направлении.

#include

#define HALFSTEP 8

// Определение пинов для управления двигателем
#define motorPin1 3 // IN1 на 1-м драйвере ULN2003
#define motorPin2 4 // IN2 на 1-м драйвере ULN2003
#define motorPin3 5 // IN3 на 1-м драйвере ULN2003
#define motorPin4 6 // IN4 на 1-м драйвере ULN2003

// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);

void setup(){
stepper1.setMaxSpeed(1000.0);
stepper1.setAcceleration(100.0);
stepper1.setSpeed(200);
stepper1.moveTo(20000);
}

void loop(){
// Изменяем направление, если шаговик достигает заданного положения
if(stepper1.distanceToGo()==0)
stepper1.moveTo(-stepper1.currentPosition());
stepper1.run();
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  1. #include
  2. #define HALFSTEP 8  
  3. // Определение пинов для управления двигателем
  4. #define motorPin1  3 // IN1 на 1-м драйвере ULN2003
  5. #define motorPin2  4 // IN2 на 1-м драйвере ULN2003
  6. #define motorPin3  5 // IN3 на 1-м драйвере ULN2003
  7. #define motorPin4  6 // IN4 на 1-м драйвере ULN2003
  8. // Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
  9. // для использования AccelStepper с 28BYJ-48
  10. AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
  11. void setup(){

  stepper1.setMaxSpeed(1000.0);  stepper1.setAcceleration(100.0);

  •   stepper1.setSpeed(200);
  •   stepper1.moveTo(20000);
  • }
  • void loop(){
  •   // Изменяем направление, если шаговик достигает заданного положения
  •   if(stepper1.distanceToGo()==0)

    stepper1.moveTo(-stepper1.currentPosition());  stepper1.run();}

Подключение шагового двигателя 28BYJ-48-5V к Arduino. Часть 1

  • В этой статье мы подключаем шаговый двигатель 28BYJ-48-5V к плате Arduino через драйвер шагового двигателя на безе микросхемы ULN2003.
  • Для подключения понадобится:
  • Для реализации проекта подключения необходимо установить библиотеку Stepper_28BYJ в среду разработки Ардуино IDE.

Библиотека Stepper_28BYJ это оптимальная библиотека, написанная на основе стандартной общей библиотеки Stepper являющейся частью среды Arduino IDE. Она была созданна конкретно для этого шагового двигателя 28BYJ-48-5V и учитывающая все его индивидуальные параметры.

  1. Посмотреть/скачать версию библиотеки Stepper_28BYJ (архив zip 9.9 КБ) бесплатно =>> 
  2. Установить библиотеку Stepper_28BYJ в среду Arduino IDE Вам поможет статья «Установка библиотек в Arduino IDE» =>> 
  3. Сборка и подключение: 

Внимание! Для драйвера на основе микросхемы ULN2003 DARLINGTON и соответственно мотора 28BYJ-48-5V, который получает питание от драйвера рекомендуется подавать питание от внешнего источника, в нашем случае (только для осуществления программирования) коммутируем подачу питания непосредственно от контроллера Ардуино (мотор работает без нагрузки и непродолжительное время) через контакты (Vin) для (+) и (GND) для (-). 

Драйвер управляется через четыре управляющих входа обозначенные как (IN1, IN2, IN3, IN4), именно к ним необходимо подключить соответственно выходы (Pin) с номерами 8 Pin, 9 Pin, 10 Pin и 11 Pin на плате контроллера Ардуино (как это показано на изображении ниже). 

Схема подключения на примере платы контроллера Arduino UNO R3, модуля драйвера ULN2003 и шагового двигателя 28BYJ-48-5V.

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

  • Загружаем скетч: 
  • Для загрузки скетча необходимо в среде разработки Ардуино IDE нажать вкладку новый проект и в открывшиеся окошко поместить скетч приведенный ниже: 
  • Скетч, который необходимо загрузить в контроллер через среду разработки Ардуино IDE:

#include
// установить количество шагов 4078 для мотора
#define STEPS 4078
// задать управляющие пины (Pin) на плате контроллера Ардуино
Stepper_28BYJ stepper(STEPS, 8, 9, 10, 11);
void setup()
{
// установить скорость вращения двигателя 13 об/мин
// как максимальное значение
stepper.setSpeed(13);
}
void loop()
{
stepper.step(4000); // Задать вращение 4000 шагов по часовой стрелке
stepper.step(-4000);// Задать вращение 4000 шагов против часовой стрелки
// если одну из строк задания вращения исключить
// мотор станет вращаться без остановки
}

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

Если по каким либо причинам Вы не смогли самостоятельно разобраться в подключении или программировании шагового двигателя 28BYJ-48, обратитесь к сотрудникам магазина робототехники и мехатроники — Robot-Kit.ru. 

Наш сайт: www.Robot-kit.ru Электронная почта: mos@robot-kit.ru 

У нас Вы найдете необходимую поддержку и помощь. 

В следующих частях статьи мы подробно разберем принцип работы шагового двигателя 28BYJ-48-5V, его подключение к Arduino, особенности драйвера на базе ULN2003 и различные способы программирования для управления шаговыми двигателями в среде ARDUINO IDE =>>

Arduino и шаговый двигатель 28BYJ-48

Что такое шаговый двигатель? Название говорит само за себя: двигатель, который может не просто “крутиться”, а крутиться размеренно, управляемо… шагами! То есть, мы сами в программе “говорим” ему, на какой угол нужно повернуться. Для чего это может понадобиться? Например, вы хотите собрать свой станок с ЧПУ, 3d принтер… или любое другое устройство, которое нуждается в точном позиционировании движущихся частей. Подробнее о шаговых двигателях можно почитать в википедии.

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

В этой статье мы будем использовать:

  • шаговый двигатель 28BYJ-48
  • драйвер ULN2003

Итак, задача: подключить к arduino uno шаговый двигатель и покрутить им.

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

  • Подключаем двигатель к драйверу, а драйвер, в свою очередь к плате arduino к цифровым пинам 2, 3, 4, 5 и к питанию (5В) как показано на фото.
  • Настоятельно рекомендую в своих проектах использовать отдельное питание для двигателя (от другого блока питания, а не от arduino), потому как если дать серьезную нагрузку на двигатель – на плате arduino может перегреться микросхема, отвечающая за питание – что не есть хорошо!

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

Stepper myStepper(2048,2,3,4,5);

Stepper myStepper(2048,2,3,4,5);

Методом setSpeed() можно управлять скоростью, а step() отвечает за перемещение вала на заданное количество шагов (если значение отрицательное – вал крутится в обратную сторону).

Полный код программы:

#include <Stepper.h>
 
Stepper myStepper(2048,2,3,4,5);
 
void setup() {
myStepper.setSpeed(10);
}
 
void loop() {
 
myStepper.step(2048);
delay(1000);
myStepper.step(-2048);
delay(1000);
}

#include   <Stepper.h>Stepper myStepper(2048,2,3,4,5);

Небольшое замечание по драйверу. Плата согласования Arduino и шагового двигателя на основе UNL2003A имеет всего одну перемычку, которая замыкает 3 и 4 выводы. Данная перемычка подаёт питание на светодиоды.

Если на шаговый двигатель подаётся питание +5 В (как в нашем случае), то данная перемычка позволяет наблюдать за переключением выводов управления шаговым двигателем.

Если для кого-то важен потребляемый ток (например, для увеличения времени работы от батареи) и не нужна индикация, то перемычку можно смело снимать.

Удачных экспериментов!

Возможно, вам потребуются файлы:

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

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

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

Шаговый двигатель состоит из двух основных частей: ротора и статора.

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

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

Ротор приводится в движение путем чередования тока на катушках, протекающий через них.

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

Шаг 2: Список деталей

Необходимые детали для проекта Ардуино шагового двигателя:

  • Шаговый двигатель (этот двигатель был взят от старого принтера)
  • Arduino
  • Изолированный медный провод
  • Проволочные резаки / стрипперы
  • Регулятор тока
  • транзистор
  • драйвер двигателя H-Bridge 1A
  • моторный шилд

Дополнительные детали:

  • паяльник
  • припой
  • инструменты
  • безопасные очки

Шаг 3: Присоединяем провода

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

Шаг 4: Эскиз/скетч Arduino

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

Файл → Примеры → Шаговые → stepper_oneRevolution
File → Examples → Stepper → stepper_oneRevolution

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

То, что на самом деле делает библиотека Stepper — чередует сигналы HIGH и LOW для каждой катушки, как показано в анимации выше.

Шаг 5: Что такое мост H-bridge?

H-Bridge — схема, состоящая из 4 переключателей, которые могут безопасно управлять двигателем постоянного тока или шаговым двигателем. Эти переключатели могут быть реле или (чаще всего) транзисторами. Транзистор представляет собой твердотельный переключатель, который можно закрыть, посылая небольшой ток (сигнал) на один из его контактов.

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

Важно! Переключатели 1 и 2 или 3 и 4 никогда не должны быть закрыты вместе. Это приведет к короткому замыканию и возможному повреждению устройства.

H-Bridges может помочь вам предотвратить перегорания вашего Arduino моторами, которыми вы пользуетесь. Двигатели являются индукторами, а это означает, что они хранят электрическую энергию в магнитных полях.

Когда ток больше не посылается двигателям, магнитная энергия возвращается в электрическую энергию и может повредить компоненты. H-Bridge помогает изолировать ваш Arduino лучше всего.

Вы не должны подключать двигатель непосредственно к Arduino.

Хотя H-Bridges можно легко сделать самому многие предпочитают покупать H-Bridge (например, чип L293NE / SN754410) из-за удобства. Это чип, который мы будем использовать в этом уроке. Физические номера контактов и их назначение ниже:

  • Пин 1 (1, 2EN) → Мотор 1 Включен/Выключен (HIGH/LOW)
  • Пин 2 (1A) → Мотор 1 логический выход 1
  • Пин 3 (1Y) → Мотор 1 терминал 1
  • Пин 4 → Земля
  • Пин 5 → Земля
  • Пин 6 (2Y) → Мотор 1 терминал 2
  • Пин 7 (2A) → Мотор 1 логический выход 2
  • Пин 8 (VCC2) → Питание для двигателей
  • Пин 9 → Мотор 2 Включен/Выключен (HIGH/LOW)
  • Пин 10 → Мотор 2 логический выход 1
  • Пин 11 → Мотор 2 терминал 1
  • Пин 12 → Земля
  • Пин 13 → Земля
  • Пин 14 → Мотор 2 терминал 2
  • Пин 15 → Мотор 2 логический выход 2
  • Пин 16 (VCC1) → Питание для H Bridge (5В)

Шаг 6: Схема соединения

  • Схема соединения нашего проекта Ардуино шагового двигателя ниже.

Для шагового двигателя Ардуино 4 вывода на H-Bridge должны подключаться к 4 выводам двигателя.

Затем 4 логических вывода подключаются к Arduino (8, 9, 10 и 11). Как показано на диаграмме выше, для питания двигателей можно подключить внешний источник питания.

Чип может обрабатывать внешний источник питания от 4,5 до 36 В (мы выбрали батарею 9В).

Шаг 7: Загрузка кода и тестирование

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

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

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