Интегрированная среда разработки Arduino (IDE) или программное обеспечение Arduino поставляется с предустановленной стандартной библиотекой шаговиков. Поэтому нет необходимости скачивать библиотеку. В первой строке кода мы сначала включаем заголовочный файл этой встроенной библиотеки темпа.
Arduino step motor 28byj 48 подключение
В этой статье мы поговорим о шаговых двигателях в проектах Arduino на примере очень популярного 28BYJ-48. Как и серводвигатели, шаговые двигатели очень важны в системах автоматизации и робототехнике. Их можно найти во многих устройствах, от приводов компакт-дисков до 3D-принтеров и роботов-манипуляторов. В этой статье вы найдете описание схемы шагового двигателя, пример подключения к Arduino с драйверами на базе ULN2003, а также примеры скетчей с использованием стандартной библиотеки шаговых двигателей.
Шаговый двигатель — это двигатель, который перемещает свой вал в соответствии с шагами и направлением, заданными в программе микроконтроллера. Такие устройства в основном используются в робототехнике, принтерах, манипуляторах, различных станках и других электронных устройствах. Основным преимуществом шаговых двигателей по сравнению с двигателями постоянного тока является точное угловое позиционирование ротора. Шаговые двигатели также предназначены для быстрого запуска, остановки и реверсирования.
Шаговый двигатель обеспечивает вращение ротора на определенный угол при соответствующем управляющем сигнале. Это позволяет контролировать положение компонентов машины и приводить их в заданное положение. Двигатель работает следующим образом: Центральный вал оснащен рядом магнитов и различными катушками. При подаче тока создается магнитное поле, которое воздействует на магниты и заставляет вал вращаться. Такие параметры, как угол поворота (шаги), направление движения, задаются в программе для микроконтроллера.
Упрощенная анимационная диаграмма шагового двигателя
Основные типы шаговых двигателей:
- Двигатели с переменными магнитами (используются очень редко),
- Двигатели с постоянными магнитами,
- Гибридные двигатели (более сложные в изготовлении, более дорогие, но наиболее распространенный тип шагового двигателя).
Где купить шаговый двигатель
Самые простые варианты двигателей на сайте AliExpress:
Драйвер — это устройство, которое соединяет контроллер и шаговый двигатель. Драйверы L298N и ULN2003 обычно используются для управления биполярным шаговым двигателем.
Работа двигателя в биполярном режиме имеет много преимуществ:
- На 40% более высокий крутящий момент по сравнению с униполярными двигателями,
- Двигатели могут использоваться с любой конфигурацией фазных обмоток.
Однако основным недостатком биполярного режима является сложность самого драйвера. Униполярный драйвер требует всего 4 транзисторных кнопки, в то время как биполярный драйвер требует более сложной схемы. Каждая обмотка должна обрабатываться отдельно — подключение к источнику питания, отключение. Для такого типа переключения используется четырехкнопочная мостовая схема.
Драйвер шагового двигателя на базе L298N
Этот мостовой драйвер управляет двигателем с током до 2А и напряжением питания до 46В. Модуль L298N на базе драйвера состоит из микросхемы L298N, системы охлаждения, выводов, сигнальных соединений, регулятора напряжения и защитных диодов.
Драйвер двигателя L298N
Драйвер шагового двигателя ULN2003
Шаговые двигатели с драйверами на базе ULN2003 — частые гости в лабораториях Arduino из-за их низкой стоимости и доступности. Обычно это происходит в ущерб надежности и точности.
Другие драйвера
Существует еще один тип драйверов — драйверы STEP/DIR, которые представляют собой аппаратные модули, взаимодействующие с микроконтроллером по протоколу STEP/DIR. Драйверы STEP/DIR расширяют возможности:
- Они позволяют стабилизировать фазные токи,
- Можно установить режим микрошага,
- Обеспечивают базовую защиту от короткого замыкания,
- Базовая защита от перегрева,
- Оптическая изоляция сигнала управления, высокая помехоустойчивость.
Драйверы STEP/DIR используют 3 сигнала:
- STEP — импульс, который запускает один оборот за шаг/часть шага, в зависимости от функции. Частота повторения импульсов определяет скорость вращения двигателя.
- DIR — сигнал для определения направления вращения. Обычно высокий сигнал вызывает вращение по часовой стрелке. Этот тип сигнала генерируется перед импульсом STEP.
- ENABLE — Включить/выключить функцию драйвера. Этот сигнал можно использовать для остановки двигателя в неуправляемом режиме.
Одним из самых доступных драйверов STEP/DIR является TB6560-V2. Этот драйвер предлагает все необходимые функции и возможности.
Подключение шагового двигателя к Arduino
Подключение осуществляется с помощью униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве печатной платы используется Arduino Uno.
Подключение шагового двигателя к Arduino
Еще один вариант схемы с использованием L298:
Подключение шагового двигателя к Arduino на базе L298.
Схема подключения на основе ULN2003 показана на следующем рисунке. Управляющие выходы драйвера IN1-IN4 подключаются к любым цифровым выводам Arduino. В этом случае используются цифровые контакты 8-11. К источнику питания подключается напряжение 5 В. Также желательно использовать отдельный источник питания для двигателя, чтобы избежать перегрева платы Arduino.
Подключение шагового двигателя к Arduino
Принципиальная схема является схематичной.
Принципиальная схема подключения шагового двигателя
Другая схема подключения биполярного шагового двигателя Nema17 через драйвер L298 выглядит следующим образом.
Я хотел бы знать, какие проекты вы хотите построить (или уже построили) с этим шаговым двигателем. Если у вас есть вопросы или предложения, или вы считаете, что в этих инструкциях чего-то не хватает, пожалуйста, оставьте комментарий.
Обзор шагового двигателя 28BYJ-48 с драйвером ULN2003
Сегодня я описываю четырехфазный шаговый двигатель 28BYJ-48, который работает от 5 В постоянного тока (есть также версия на 12 В постоянного тока). Поскольку двигатель потребляет большой ток, мы не можем подключить его напрямую к контактам Arduino UNO. Поэтому мы используем так называемый «драйвер двигателя», который основан на микросхеме ULN2003.
Технические параметры 28BYJ-48
Модель: ► Однополярный ► Напряжение питания: 5 В, DC ► Количество фаз: 4 ► Частота: 100 Гц ► Сопротивление постоянному току: 50 Ом ± 7% (25℃).
Немного теории: четырехфазный шаговый двигатель (28BYJ-48) — это бесщеточный двигатель, в котором вал вращается пошагово (дискретное движение). На роторе (валу) находится магнит, окруженный катушками. Когда переменный ток подается на эти катушки, создается магнитное поле, которое отталкивает или притягивает магнитный вал, заставляя двигатель вращаться. Такая конструкция позволяет приводить вал в движение с большой точностью относительно катушек. Ниже приведена принципиальная схема четырехфазного шагового двигателя 28BYJ-48.
На схеме видно, что двигатель содержит две обмотки, которые в свою очередь разделены на четыре, отсюда и название 4-фазный двигатель. Средние провода катушек соединены друг с другом и служат источником питания для двигателя. Поскольку каждая обмотка подключена к источнику питания, такие двигатели называются униполярными. На валу 28BYJ-48 расположено 8 магнитов с чередующимися полюсами (т.е. четыре магнита с двумя полюсами).
На рисунке видно, что внутри находится шестерня с передаточным числом примерно 1:64. Это означает, что двигатель делает 4075,7728395 шагов за один оборот. Этот двигатель работает в полушаговом режиме и может сделать 4076 шагов за один полный оборот, или, точнее, ему требуется примерно 11,32 шага на 1° (4076 / 360 = 11,32).
Режим работы: При использовании шагового двигателя 28BYJ 48, как правило, используются два режима работы. ► Режим полного шага — за 1 ход ротор делает 1 шаг. ► Режим полушага — за 1 цикл ротор делает ½ шага. Приведенная ниже таблица последовательности хода была изменена:
Модуль шагового двигателя ULN2003: цифровой выход микроконтроллера может подавать ток. ~ULULCM2003 может выдавать 40 мА, а обмотка 28BYJ-48 потребляет больше. ~320 мА, поэтому если вы подключите двигатель напрямую, микроконтроллер сгорит. Для целей защиты был разработан «модуль шагового двигателя ULN2003», в котором используется микросхема ULN2003A (по сути, состоящая из 7 кнопок), способная управлять нагрузкой до 500 мА (одна кнопка). Данное устройство может работать с 5В и 12В двигателем 28BYJ-48, необходимо установить или снять перемычку (по умолчанию перемычка установлена, питание 5В).
Принципиальная схема ULN2003 показана на следующем рисунке.
Подключение шагового двигателя 28BYJ-48
► Arduino UNO R3 x 1 шт. ► Модуль драйвера шагового двигателя ULN2003 x 1 шт. ► 28BYJ-48-5V (5 В) шаговый двигатель x 1 шт. ► Кабель DuPont 2,54 мм, 20 см, F-M (female — male) x 1 шт. ► Кабель USB 2.0 A-B x 1 шт. ► Кабель USB 2.0 A-B x 1 шт.
Соединение. Схема не сложная, вам понадобится только шесть проводов, сначала подключите интерфейсные провода, IN1 (ULN2003) к 11 (Arduino UNO), IN2 (ULN2003) к 10 (Arduino UNO), IN3 (ULN2003) к 9 (Arduino UNO) и IN4 (ULN2003) к 8 (Arduino UNO), подключите питание GND к GND и VCC к VIN слева (не для непрерывной работы), подключите штекер двигателя к модулю ULN2003. Схема готова, теперь нужно подготовить программную часть.
Для вращения двигателя по часовой стрелке и против часовой стрелки мы используем библиотеку «CustomStepper». Эта библиотека не включена в стандартную Arduino IDE, поэтому скачайте ее и добавьте. Затем запустите IDE и скопируйте скетч (для простоты я добавляю файл загрузки), если все правильно, двигатель начнет вращаться.
В любительской робототехнике часто используется дешевый шаговый двигатель 28BYJ-48, который поставляется с драйвером двигателя на микросхеме ULN2003. Вам необходимо подключить шаговый двигатель к плате Arduino.
The ULN2003 Driver Board
What is the ULN2003 Driver Board?
ULN2003 — одна из наиболее распространенных ИС драйверов двигателей, содержащая массив из 7 пар транзисторов Дарлингтона, каждая из которых способна управлять нагрузкой до 500 мА и 50 В. Пара Дарлингтона — это пара транзисторов, в которой второй транзистор усиливает выходной ток первого транзистора.
Вам нужен ULN2003 для управления шаговым двигателем с помощью Arduino. Они также легко доступны по доступной цене. Лучше использовать одно из этих устройств, чем макетную плату самой ИС.
Как показано на рисунке ниже, плата драйвера ULN2003 состоит из ULN2003, припаянного к печатной плате, а также резисторов, конденсаторов и других деталей, которые помогают создать схему, принимающую импульсные сигналы от контроллера и преобразующую их в движение шагового двигателя.
Схема расположения клеммной колодки ULN2003 (источник: Component101).
Плата драйвера ULN2003 (источник: electronicoaldas)
Why you need the ULN2003?
Шаговый двигатель 28BYJ-48 потребляет большой ток, поэтому для управления двигателем с помощью микроконтроллера типа Arduino необходимо использовать микросхему драйвера, например ULN2003. Известный своими возможностями по высокому току и высокому напряжению, ULN2003 обеспечивает более высокий коэффициент усиления по току, чем простой транзистор, и позволяет использовать низковольтный и низкотоковый выход микроконтроллера для управления шаговым двигателем с большим током.
Например, шаговый двигатель, для работы которого требуется 9 В и 300 мА, не может управляться Arduino. Поэтому мы подключаем эту ИС к источнику питания, чтобы получить достаточный ток и напряжение для двигателя. Если вам нужно более 5 В и 80 мА, следует использовать плату драйвера ULN2003.
Я не рекомендую запускать шаговый двигатель напрямую через Arduino. Подробнее об этом я расскажу ниже.
Pin Arrangement
Схема распиновки (источник: Geeetech wiki).
Connecting the 28BYJ-48 stepper motor to the ULN2003 driver board
Шаговый двигатель 28BYJ-48 обычно поставляется с 5-контактным разъемом, который подходит к плате драйвера ULN2003.
Connecting the ULN2003 driver board to the Arduino
Подключите драйверы ULN2003 lN1, lN2, lN3 и lN4 к цифровым выводам 8, 9, 10 и 11 на Arduino. На плате драйвера есть два контакта, обозначенные как GND и VCC, для подачи питания. Клемма GND платы драйвера ULN2003 должна быть подключена к клемме GND Arduino. Аналогично, вывод VCC платы драйвера должен быть подключен к выводу 5V Arduino.
Важное замечание: в этой установке шаговый двигатель питается непосредственно через Arduino. Хотя это самый простой способ подачи питания на двигатель, делать это (подключать вывод VCC платы драйвера к выводу 5V Arduino) не рекомендуется.
Это связано с тем, что если двигатель потребляет слишком большой ток, Arduino может быть поврежден. Убедитесь, что ваш Arduino не потребляет более 300 мА. Если требуется больший ток, просто подключите плату драйвера к внешнему источнику питания вместо использования встроенного источника питания Arduino.
Однако, поскольку мы все еще находимся на ранних стадиях, в этом примере мы будем подавать питание на двигатель через Arduino, чтобы сохранить простоту соединений. После ознакомления с соединениями вы можете подключить двигатель к внешнему источнику питания, если требуется большая мощность.
Example Code for Connecting the Arduino
Интегрированная среда разработки Arduino (IDE) или программное обеспечение Arduino поставляется с предустановленной стандартной библиотекой шаговиков. Поэтому нет необходимости скачивать библиотеку. В первой строке кода мы сначала включаем заголовочный файл этой встроенной библиотеки темпа.
Мы определяем количество шагов, необходимых для поворота. Редактирование этого номера может быть немного сложным, поэтому посмотрите, как это происходит.
Шаговые двигатели могут работать в различных режимах и имеют определенное передаточное отношение. Оба фактора влияют на количество шагов за один оборот. В этом примере мы будем эксплуатировать двигатель в режиме, известном как режим полного шага, где каждый шаг соответствует повороту на 11,25 градусов, согласно спецификации. Это означает, что на один оборот приходится 32 шага (360/11,25 = 32). Кроме того, производитель указал передаточное отношение 64:1 для шагового двигателя 28BYJ-48.
How it works?
Чтобы получить окончательное число шагов, необходимо умножить передаточное число на число шагов на оборот, 32. Наиболее точное значение передаточного числа — 63,68395:
- Поэтому мы установили окончательное количество шагов равным 2038 (32 x 63,68395 = 2037,8864).
- Инициализируйте систему шагов. Внутри скобок находятся параметры. Первый параметр — это количество шагов. Поскольку оно уже было определено в предыдущей строке, мы можем написать STEPS, чтобы представить это число. Остальные параметры соответствуют контактам Arduino, используемым для подключения платы драйвера ULN2003. Как упоминалось ранее, это контакты 8, 9, 10 и 11.
- В следующей функции цикла мы пишем наш код для приведения в действие двигателя. В первой строке цикла мы устанавливаем скорость одного оборота равной одному обороту в минуту.
- Мы говорим шаговому двигателю сделать 2038 шагов. Поскольку один оборот соответствует 2038 шагам, как мы рассчитали ранее, это означает, что вал двигателя должен совершить полный оборот примерно за одну минуту.
- Мы определяем задержку в одну секунду. В следующих двух строках мы снова делаем то же самое — задаем количество оборотов в минуту и даем команду шаговому двигателю сделать определенное количество шагов. Однако на этот раз мы установим скорость 6 об/мин и переместим вал в другом направлении, задав отрицательное число шагов. Это означает, что двигатель движется в 6 раз быстрее и совершает полный оборот примерно за 10 секунд (60s/6 = 10s).
Вот код для примера. Загрузите приведенный ниже код в вашу программу Arduino и попробуйте сами!
Код по.
Moving Forward
Это простой код, который вы можете использовать для работы шагового двигателя. Начало работы в области электроники может быть довольно сложным, и иногда вас могут мучить сомнения и неадекватность, особенно если ваш код не работает.
Поэтому начните с простых кодов. После некоторой практики, чтобы укрепить свою уверенность, попробуйте более сложные коды, чтобы заставить двигатель выполнять больше действий. Github, платформа с миллионами проектов с открытым исходным кодом, является хорошим местом для начала поиска примеров кода, с которыми можно поиграть.
В цикле мы сначала используем функцию setSpeed() для установки скорости, на которой должен работать двигатель (вы также можете добавить эту функцию в раздел кода установки).
Описание библиотеки AccelStepper
Теперь мы переходим к самой интересной части нашей статьи. Это описание двух библиотек для работы с движками myStepper и AccelStepper. Я буду уделять больше внимания библиотеке AccelStepper, поскольку она имеет больше возможностей, а именно:
- Имеется возможность регулировать скорость,
- поддержка различных шаговых кнопок
- Поддержка двигателей, работающих одновременно
Определение конфигурации моторов
AccelStepper mystepper (1, pinStep, pinDirection),
Για-управление шаговым двигателем.
AccelStepper mystepper (2, pinA, pinB),
Биполярная схема, управляемая Н-мостом.
AccelStepper mystepper (4, pinA1, pinA2, pinB1, pinB2),
Униполярный двигатель, управляемый четырьмя транзисторами.
Максимальная частота вращения двигателя. Скорость, как известно, низкая. Двигатель сначала разгоняется до этой скорости, а затем снижает ее.
Ускорение шагового двигателя, в шагах в секунду.
Управление положением
Переход к абсолютно определенной позиции. Само движение активируется функцией run().
Движение к относительно определенной позиции. Само движение активируется функцией run(). Значение расстояния может быть больше или меньше нуля.
Возвращает текущую абсолютную позицию.
Возвращает расстояние от указанной позиции. Может использоваться для проверки того, достиг ли двигатель заданной конечной точки.
Двигайтесь. Функция должна быть вызвана снова, чтобы возобновить движение двигателя.
Отъехать и подождать, пока двигатель не достигнет заданной точки. Функция не возвращается, пока не завершит свою работу.
Управление скоростью
Установите скорость в шагах в секунду. Сам процесс запускается с помощью runSpeed().
Двигайтесь. Функция должна быть вызвана снова, чтобы возобновить движение двигателя.
Как видите, функции управления в принципе несложные, нужно только посидеть несколько вечеров.