В этой статье мы поговорим о шаговых двигателях в проектах Ардуино на примере очень популярной модели 28BYJ-48. Так же как и сервоприводы, шаговые моторы являются крайне важным элементом автоматизированных систем и робототехники. Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора. В этой статье вы найдете описание схемы работы шаговых двигателей, пример подключения к Arduino с помощью драйверов на базе ULN2003 и примеры скетчей с использованием стандартной библиотеки Stepper.
- Шаговый двигатель – принцип работы
- Где купить шаговый двигатель
- Драйвер для управления шаговым двигателем
- Драйвер шагового двигателя на базе L298N
- Драйвер шагового двигателя ULN2003
- Другие драйвера
- Подключение шагового двигателя к Ардуино
- Обзор основных моделей шаговых двигателей для ардуино
- Описание библиотеки для работы с шаговым двигателем
- Пример скетча для управления
- Заключение
- Подключение шагового двигателя к Ардуино
- Принцип работы шагового двигателя
- Драйвер шагового двигателя Ардуино
- Как подключить шаговый двигатель к Ардуино
- Управление шаговым двигателем с помощью Arduino и драйвера A4988
- Микросхема драйвера шагового двигателя A4988
- Распиновка драйвера A4988
- Выводы питания
- Выводы выбора микрошага
- Выводы управления
- Выводы управления питанием A4988
- Выводы для подключения шагового двигателя
- Система охлаждения — радиатор
- Ограничение тока
- Способ 1:
- Способ 2:
- Подключение драйвера шагового двигателя A4988 к Arduino UNO
- Код Arduino — простой пример
- Пояснение к скетчу:
- Скетч Arduino — использование библиотеки AccelStepper
- Установка библиотеки
- Скетч Arduino
- Пояснение к скетчу:
Видео:Как настроить ШАГОВЫЙ ДВИГАТЕЛЬ 28BYJ-48 Arduino?! ОбзорСкачать
Шаговый двигатель – принцип работы
Шаговый двигатель – это мотор, перемещающий свой вал в зависимости от заданных в программе микроконтроллера шагов и направления. Подобные устройства чаще всего используются в робототехнике, принтерах, манипуляторах, различных станках и прочих электронных приборах. Большим преимуществом шаговых двигателей над двигателями постоянного вращения является обеспечение точного углового позиционирования ротора. Также в шаговых двигателях имеется возможность быстрого старта, остановки, реверса.
Шаговый двигатель обеспечивает вращения ротора на заданный угол при соответствующем управляющем сигнале. Благодаря этому можно контролировать положение узлов механизмов и выходить в заданную позицию. Работа двигателя осуществляется следующим образом – в центральном вале имеется ряд магнитов и несколько катушек. При подаче питания создается магнитное поле, которое воздействует на магниты и заставляет вал вращаться. Такие параметры как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.
Упрощенные анимированные схемы работы шагового двигателя
Основные виды шаговых моторов:
Видео:NEMA17 Управление шаговым двигателем - Stepper motor with ArduinoСкачать
Где купить шаговый двигатель
Самые простые двигатели Варианты на сайте AliExpress:
Видео:ПОДКЛЮЧАЕМ ШАГОВЫЙ ДВИГАТЕЛЬ К ARDUINO [Уроки Ардуино #14]Скачать
Драйвер для управления шаговым двигателем
Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.
Работа двигателя в биполярном режиме имеет несколько преимуществ:
Но существенным минусов в биполярном режиме является сложность самого драйвера. Драйвер униполярного привода требует всего 4 транзисторных ключа, для обеспечения работы драйвера биполярного привода требуется более сложная схема. С каждой обмоткой отдельно нужно проводить различные действия – подключение к источнику питания, отключение. Для такой коммутации используется схема-мост с четырьмя ключами.
Драйвер шагового двигателя на базе L298N
Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.
Драйвер двигателя L298N
Драйвер шагового двигателя ULN2003
Шаговые двигателями с модулями драйверов на базе ULN2003 – частые гости в мастерских Ардуино благодаря своей дешевизне и доступности. Как правило, за это приходится платить не очень высокой надежностью и точностью.
Другие драйвера
Существует другой вид драйверов – STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:
В STEP/DIR драйверах используется 3 сигнала:
Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.
Видео:Как подключить A4988 DRV8825 к Arduino. Скетч, библиотека AccelStepper library.Скачать
Подключение шагового двигателя к Ардуино
Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.
Подключение шагового двигателя к Ардуино
Еще один вариант схемы с использованием L298:
Подключение шагового двигателя к Ардуино на базе L298
Схема подключения на базе ULN2003 изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.
Подключение шагового двигателя к Ардуино
Принципиальная схема подключения.
Принципиальная схема подключения шагового двигателя
Еще одна схема подключения биполярного шагового двигателя Nema17 через драйвер L298 выглядит следующим образом.
Видео:Управление биполярным шаговым двигателем при помощи инкрементального энкодера. Инкрементный энкодер.Скачать
Обзор основных моделей шаговых двигателей для ардуино
Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.
Основные характеристики двигателя:
28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.
Видео:Программа для управления шаговым двигателем с помощью ArduinoСкачать
Описание библиотеки для работы с шаговым двигателем
В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:
Видео:Уроки Arduino. Управление моторами с библиотекой GyverMotorСкачать
Пример скетча для управления
В наборе примеров библиотеки Stepper.h существует программа stepper_oneRevolution, в которой задаются все параметры для шагового двигателя – количество шагов, скорость, поворот.
Видео:Как подключить шаговый двигатель к ArduinoСкачать
Заключение
В этой статье мы с вами узнали, что такое шаговый двигатель, как можно его подключить к ардуино, что такое драйвер шагового двигателя. Мы также рассмотрели пример написания скетча, использующего встроенную библиотеку Stepper. Как видим, ничего особенно сложного в работе с шаговыми моторами нет и мы рекомендуем вам обязательно поэкспериментировать самостоятельно и попробовать включить его в своих проектах Arduino.
Видео:Шаговые двигатели, и как ими управлять с помощью микроконтроллераСкачать
Подключение шагового двигателя к Ардуино
Шаговый двигатель 28byj-48 Arduino ► предназначен для перемещения объекта на заданное количество шагов вала. Рассмотрим управление шаговым двигателем от Ардуино
Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки stepper.h или accelstepper.h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.
Видео:Панель управления шаговым двигателем на Arduino.Скачать
Принцип работы шагового двигателя
В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 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. Светодиоды на модуле служат для индикации включения катушек двигателя.
Видео:⚙️Управляем двигателем😁 Шаговый двигатель подключениеСкачать
Как подключить шаговый двигатель к Ардуино
Для этого занятия нам потребуется:
Видео:Шаговый двигатель 28BYJ-48 с драйвером ULN2003 - Подключение к ArduinoСкачать
Управление шаговым двигателем с помощью Arduino и драйвера A4988
Если вы планируете создать свой собственный 3D-принтер или станок с ЧПУ, вам нужно будет управлять несколькими шаговыми двигателями. Если использовать для этого только Arduino, то большая часть скетча будет занята кодом управления шаговыми двигателями и не останется много места для чего-то еще.
Модуль A4988 может контролировать как скорость, так и направление вращения биполярного шагового двигателя, такого как NEMA 17, использую всего два вывода контроллера.
Шаговые двигатели используют зубчатое колесо и электромагниты (катушки), позволяющие вращать ось по одному шагу за раз.
Драйвер двигателя посылает высокий импульс на соответствующую катушку, которая в свою очередь притягивает ближайший зуб зубчатого колеса, в результате чего ось двигателя проворачивается на определенный градус (шаг).
От характера управляющих импульсов зависит поведение шагового двигателя, а именно:
Видео:Управление шаговым двигателем. Драйвер A4988, подключение и настройкаСкачать
Микросхема драйвера шагового двигателя A4988
Модуль собран на чипе A4988. Не смотря на свой малый размер (всего 0,8 ″ × 0,6 ″), но обладает хорошими характеристиками.
Драйвер шагового двигателя A4988 имеет высокую выходную мощность (до 35 В и 2 А) и позволяет управлять одним биполярным шаговым двигателем с выходным током до 2 А на катушку, например NEMA 17.
Для удобства работы драйвер имеет встроенный транслятор. Использование транслятора позволило уменьшить количество управляющих контактов до 2, один для управления шагами, а другой для управления направлением вращения.
Драйвер предлагает 5 различных разрешений шага, а именно:
Видео:Управление двумя униполярными шаговыми двигателями с помощью джойстика на базе Arduino uno.Скачать
Распиновка драйвера A4988
Драйвер A4988 имеет всего 16 контактов, которые связывают его с внешним миром. Распиновка у A4988 следующая:
Давайте ознакомимся со всеми контактами по очереди.
Выводы питания
На самом деле A4988 требует подключения двух источников питания.
VDD и GND используется для управления внутренней логической схемой. Напряжение питания должно находиться в пределах от 3 до 5,5 В.
Vmot и GND для обеспечения питания шагового двигателя. Тут напряжение в пределах от 8 до 35 В.
Согласно datasheet, для питания двигателя требуется соответствующий разделительный конденсатор рядом с платой, способный выдерживать ток 4 А.
Один из способов защитить драйвер от таких скачков — подключить электролитический конденсатор емкостью 100 мкФ (или как минимум 47 мкФ) к контактам источника питания двигателя.
Выводы выбора микрошага
Драйвер A4988 допускает использование режима микрошага. Это достигается за счет подачи питания на катушки с промежуточными уровнями тока.
Например, если вы решите управлять шаговым двигателем NEMA 17 с шагом 1,8 градуса (200 шагов на оборот) в режиме 1/4 шага, то двигатель будет выдавать 800 микрошагов на оборот.
Драйвер A4988 имеет три вывода селектора размера шага (разрешения), а именно: MS1, MS2 и MS3. Установив соответствующие логические уровни на эти контакты, мы можем настроить двигатели на одно из пяти ступенчатых разрешений.
По умолчанию эти три контакта подтянуты к земле внутренним резисторам. Если мы оставим эти выводы не подключенными, то двигатель будет работать в режиме полного шага.
Выводы управления
Драйвер A4988 имеет два управляющих входа, а именно: STEP и DIR.
STEP — управляет микрошагом мотора. Каждый высокий импульс, отправляемый на этот вывод, приводит двигатель в действие на количество микрошагов, заданное выводами Microstep Selection (MS1, MS2 и MS3). Чем быстрее импульсы, тем быстрее будет вращаться двигатель.
DIR — управляет направлением вращения двигателя. Если на него подать высокий уровень, то двигатель будет вращается по часовой стрелке, а если низкий — против часовой стрелки.
Если вы просто хотите, чтобы двигатель вращался только в одном направлении, то вы можете соединить вывод DIR непосредственно с VCC или GND соответственно.
Выводы STEP и DIR не подтянуты внутренними резисторами, поэтому вы не должны оставлять их не подключенными.
Выводы управления питанием A4988
A4988 имеет три различных вывода для управления состоянием питания, а именно. EN, RST и SLP.
EN — вывод включения (0)/ выключения (1) драйвера A4988. По умолчанию на этом выводе установлен низкий уровень, поэтому драйвер всегда включен.
SLP — подача на данный вывод сигнала низкого уровня переводит драйвер в спящий режим, сводя к минимуму потребление энергии. Вы можете использовать это для экономии энергии.
RST — при подаче сигнала низкого уровня все входные данные STEP игнорируются, до тех пор пока не будет установлен высокий уровень. Низкий уровень также сбрасывает драйвер, устанавливая внутренний транслятор в предопределенное состояние Home. Исходное состояние — это в основном начальное положение, с которого запускается двигатель, и оно различается в зависимости от разрешения микрошага.
Если вам не нужно использовать вывод RST, вы можете подключить его к соседнему контакту SLP / SLEEP, чтобы вывести его на высокий уровень и включить драйвер.
Выводы для подключения шагового двигателя
Выходные контакты: 1B, 1A, 2A и 2B.
К этим выводам можно подключить любой биполярный шаговый двигатель с напряжением питания от 8 до 35 В.
Каждый выходной контакт модуля может обеспечить ток до 2 А. Однако величина тока, подаваемого на двигатель, зависит от источника питания системы, системы охлаждения и настройки ограничения тока.
Видео:управляем шаговым двигателем с телефона Двигатель 28byj 48Скачать
Система охлаждения — радиатор
Чрезмерное рассеивание мощности микросхемы драйвера A4988 приводит к повышению температуры, которая может выйти за пределы возможностей микросхемы, что, вероятно, приведет к ее повреждению.
Даже если микросхема драйвера A4988 имеет максимальный номинальный ток 2 А на катушку, микросхема может подавать только около 1 А на катушку без перегрева.
Для достижения более 1 А на катушку требуется радиатор или другой метод охлаждения.
Драйвер A4988 обычно поставляется с радиатором. Желательно установить его перед использованием драйвера.
Видео:NEMA17: Управление шаговым двигателем в реальном времени с ArduinoСкачать
Ограничение тока
Перед использованием драйвера нам нужно сделать небольшую настройку. Нам нужно ограничить максимальный ток, протекающий через катушки шагового двигателя, и предотвратить превышение номинального тока двигателя.
На драйвере A4988 есть небольшой потенциометр, который можно использовать для установки ограничения тока. Вы должны установить ограничение по току равным или ниже номинального тока двигателя.
Для этого есть два метода:
Способ 1:
В данном случае мы собираемся установить ограничение тока путем измерения напряжения (Vref) на выводе «ref».
ограничение тока = Vref x 2,5
Например, если ваш двигатель рассчитан на 350mA, вы должны установить опорное напряжение 0,14В.
Способ 2:
В данном случае мы собираемся установить ограничение тока, измеряя ток, протекающий через катушку двигателя.
Видео:Управление моторами с ArduinoСкачать
Подключение драйвера шагового двигателя A4988 к Arduino UNO
Подключения довольно простое. Начните с подключения VDD и GND (рядом с VDD) к контактам 5V и минус на Arduino. Входные контакты DIR и STEP подключите к цифровым контактам №2 и №3 на Arduino соответственно. Шаговый двигатель подключите к контактам 2B, 2A, 1A и 1B.
Подключение или отключение шагового двигателя при включенном драйвере может привести к его повреждению.
Затем подключите вывод RST к соседнему выводу SLP/SLEEP, чтобы драйвер оставался включенным. Также держите контакты выбора микрошага отключенными, чтобы двигатель работал в полношаговом режиме.
Наконец, подключите источник питания двигателя к контактам VMOT и GND. Не забудьте установить большой развязывающий электролитический конденсатор 100 мкФ на контакты источника питания двигателя, рядом с платой.
Видео:Fl Prog Часть 8 управление драйвером А4988 + ШД Nema 17Скачать
Код Arduino — простой пример
Следующий скетч даст вам полное представление о том, как управлять скоростью и направлением вращения биполярного шагового двигателя с помощью драйвера шагового двигателя A4988, и может служить основой для более практических экспериментов и проектов.
Пояснение к скетчу:
Скетч начинается с определения выводов Arduino, к которым подключены выводы STEP и DIR A4988. Мы также определяем stepsPerRevolution. Установите его в соответствии со спецификациями шагового двигателя.
В разделе setup() кода все контакты управления двигателем объявлены как цифровой выход.
В цикле loop() мы медленно вращаем двигатель по часовой стрелке, а затем быстро вращаем его против часовой стрелки с интервалом в секунду.
Управление направлением вращения: для управления направлением вращения двигателя мы устанавливаем вывод DIR в высокое или низкое положение. Сигнал высокого уровня вращает двигатель по часовой стрелке, а низкого — против часовой стрелки.
Скорость двигателя определяется частотой импульсов, которые мы посылаем на вывод STEP. Чем чаще импульсы, тем быстрее вращается двигатель. Импульсы — это не что иное, как установка высокого уровня, некоторое ожидание, затем установка низкого уровня и снова ожидание. Изменяя задержку между двумя импульсами, вы изменяете частоту этих импульсов и, следовательно, скорость двигателя.
Видео:Подключаем к Arduino шаговый двигатель 28BYJ 48 на драйвере ULN2003Скачать
Скетч Arduino — использование библиотеки AccelStepper
Управление шаговым двигателем без библиотеки идеально подходит для простых приложений с одним двигателем. Но если вы хотите управлять несколькими шаговыми двигателями, то вам понадобится библиотека.
Итак, для нашего следующего эксперимента мы будем использовать расширенную библиотеку шаговых двигателей под названием AccelStepper library. Она поддерживает:
Эта библиотека не включена в IDE Arduino, поэтому вам необходимо сначала установить ее.
Установка библиотеки
Чтобы установить библиотеку, перейдите в Эскиз> Include Library> Manage Libraries… Подождите, пока диспетчер библиотек загрузит индекс библиотек и обновит список установленных библиотек.
Отфильтруйте результаты поиска, набрав «Accelstepper». Щелкните первую запись и выберите «Установить».
Скетч Arduino
Вот простой код, который ускоряет шаговый двигатель в одном направлении, а затем замедляется, чтобы остановиться. Как только двигатель совершает один оборот, он меняет направление вращения. И он повторяет это снова и снова.
Пояснение к скетчу:
Мы начинаем с подключения недавно установленной библиотеки AccelStepper.
Определяем выводы Arduino, к которым подключаются выводы STEP и DIR A4988. Устанавливаем motorInterfaceType значение 1. (1 означает внешний шаговый драйвер с выводами Step и Direction).
Затем мы создаем экземпляр библиотеки с именем myStepper.
В функции setup() мы сначала устанавливаем максимальную скорость двигателя 1000. Затем мы устанавливаем коэффициент ускорения для двигателя, чтобы добавить ускорение и замедление к движениям шагового двигателя.
Затем мы устанавливаем обычную скорость 200 и количество шагов, например, 200 (поскольку NEMA 17 совершает 200 шагов за оборот).
В функции loop() мы используем оператор If, чтобы проверить, как далеко двигателю нужно проехать (путем чтения distanceToGo), пока он не достигнет целевой позиции (moveTo). Как только distanceToGo станет равен нулю мы переключаем двигатель в противоположное направление, изменив moveTo на противоположное значение относительно его текущего положения.
Теперь в конце цикла мы вызываем функцию run(). Это самая важная функция, поскольку шаговый двигатель не будет работать, пока эта функция не будет выполнена.