Ардуино подключение шагового двигателя: Страница не найдена — Ардуино Уроки

Содержание

L298N подключение к Ардуино — RadioRadar

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

Конечно, шаговые двигатели (ШД) используются не только в ЧПУ и 3D-принтерах, им есть масса и других применений. Например, вкупе с популярным «конструктором для взрослых», Arduino, на базе которого можно создать всё что угодно. Однако, связка «Ардуино – шаговый двигатель» требует дополнительный элемент – драйвер.

Из-за того, что двигатель требует повышенного напряжения и силы тока, непосредственное подключение его к микроконтроллеру невозможно, напряжения логического нуля в +5В и силы тока в 40 мА не хватит для работы любого шагового двигателя. Функцию усилителя/переключателя берет на себя драйвер.

О нём мы и поговорим подробнее ниже.

 

L298N описание

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

Модуль собирается на основе одноименной микросхемы (L298N).

К L298N можно подключить двигатели, питающиеся напряжением от 5 до 35 вольт. Управление может быть реализовано в активном или пассивном режимах.

1.Активный – доступно не просто включение и отключение вращения мотора, но и управление его скоростью.

2.Пассивный – контроллер будет понимать только логику «включить/выключить двигатель». Управление уровнем выходного напряжения будет недоступно.

L298N – это облегчённая версия платы L293D. По сравнению с последней на L298N отсутствуют защитные диоды (их можно установить самостоятельно при необходимости защиты от скачков тока в процессе пуска двигателей).

 

Подключение

Чтобы логика управления была понятнее, сначала разберёмся с джамперами и клеммами на плате.

Рис. 1.  Джамперы и клеммы на плате

 

К клеммникам 1 и 2 подключаются двигатели, логика подключения зависит от моделей двигателей и логики их работы.

Блок клемм 3 отвечает за подключение питания двигателей. Первый контакт — +12. На него подаётся питание от 5 до 12 вольт, если джампер 3 одет, и от 12 до 35 воль, если джампер 3 снят.

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

Если джампер 3 снят, то контакт +5В требуется запитать отдельно.

Управляющие сигналы от Ардуино или с другого микроконтроллера должны подаваться на контакты IN1-IN4, ENA, ENB. В зависимости от логических уровней и конфигурации джамперов 1,2 будет подаваться питание на двигатели/двигатель.

Джамперы 1 и 2 отвечают за переключение между активным и пассивным режимами работы драйвера. Если джампер одет, то реализуется логика «пассивного» управления.

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

 

Управление двумя двигателями постоянного тока

Схема соединения будет выглядеть следующим образом.

Рис. 2. Схема соединения

 

Напряжение питания двигателей ниже 12 вольт, значит джампер 3 установлен, джамперы 1 и 2 на контактах ENA и ENB сняты.

Стоит особое внимание уделить пинам на Ардуино с ШИМ-модуляцией (рядом с цифровым значением есть специальный символ «~»). Они необходимы для управления скоростью вращения вала (чем выше уровень напряжения, тем выше скорость).

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

Таблица

Логический уровень на контакте ENA

Логический уровень на контакте IN1

Логический уровень на контакте IN2

Результат работы двигателя

1

1

0

Вращается по часовой стрелке

1

0

1

Вращается против часовой

0

1

0

Не вращается

0

0

1

Не вращается

 

Логический уровень на контакте ENAЛогический уровень на контакте IN1Логический уровень на контакте IN2Результат работы двигателя

Получается, что контакт ENA отвечает за разрешение работы двигателя. А от комбинации на входах IN1, IN2 зависит направление вращения.

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

 

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

Соединение схемы управления, включающей в себя драйвер, двигатель Nema17 и Arduino Nano, выглядит следующим образом.

Рис. 3. Соединение схемы управления,

 

Назначение контактов A+, A-, B+ и B- может отличаться на вашей модели привода, поэтому необходимо изучить документацию для определения правильного назначения.

Ввиду того, что логика работы данной схемы предполагает наличие на выходах только логических нулей и единиц, то джамперами 1 и 2 модуль L298N переключается в пассивный режим.

Скетч для работы с шаговым двигателем есть во встроенной библиотеке IDE для Ардуино (называется Stepper Library, найти её можно так — File -> Examples -> Stepper).

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

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

Вызов функции, инициализирующей вращение, осуществляется через метод step с параметром stepsPerRevolution, при отрицательном параметре вращение осуществляется в обратную сторону.

Пример с использованием этой библиотеки можно найти ниже во вложениях. Полную документацию по API можно найти на официальном сайте проекта.

Скетчи двигателей постоянного тока и шаговых двигателей можно найти здесь.

Автор: RadioRadar

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

На втором месте рейтинга двигателей для роботов после сервоприводов, которые мы уже рассматривали, стоят шаговые двигатели. Сегодня мы научимся управлять ими при помощи Arduino!

Кроме шагового двигателя (ШД) и Arduino нам потребуется ещё плата драйвера L298, которую можно приобрести у нас в магазине.

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

ШД способен удерживать свою позицию даже в случае внешнего крутящего момента! Шаговые двигатели делятся на униполярные и биполярные. Мы будем использовать униполярный ШД, так как биполярный требует специальный драйвер для управления, тогда как униполярным можно легко управлять даже при помощи сборки транзисторов. Обратите внимание – биполярные ШД имеют 4 провода на выходе, униполярные – не 4 (5 или более).

Количество выводов зависит от количества обмоток в двигателе, чаще всего их 4 –поэтому 5 проводов (4 обмотки и общий). Управление униполярным двигателем, в теории, сводится к перебору обмоток (подачи поочерёдно логической единицы). Задержка между переключением обмотки определяет скорость и ускорение двигателя.

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

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

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Для управления шаговым двигателем сгодится любой контроллер Arduino, мы же используем Arduino UNO.  От шаговика отходят две пары проводов и общий(GND). A, A+ подключаются к MA, MA+, также и B, B+ к MB, MB+.

Питание 12В подаётся на первый контакт разъёма питания, 5В – на второй, GND –  на третий (см. фото ниже). Выводы IN1-IN4 подключаются по порядку к цифровым пинам с 8 по 11 – по ним передаются управляющие импульсы.

После подключения надо загрузить в контроллер программу-пример stepper_oneRevolution из библиотеки Stepper (включена в комплект поставки). Можете добавить ее либо с этой страницы, либо найти в Файл Примеры Stepper stepper_oneRevolution

Как подключить шаговый двигатель к плате Arduino CNC Shield V3 c драйверами A4988, DRV8825, TMC2100 и тп

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

Схема подключения драйвера A4988Схема подключения драйвера DRV8825Схема подключения драйвера Arduino CNC Shield V3

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

Маркировка разъемов на шилде совпадает с маркировкой контактов драйвера DRV8825.
Маркировка разъемов на шилде не совпадает с маркировкой контактов драйвера A4988 — разъемам шилда B2 B1 A1 A2 соответствуют контакты 2B 2A 1A 1B, что может сбить с толку.
Но не смотря на разную маркировку, провода идут от одних и тех же обмоток двигателя и в одинаковой последовательности.

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

Теперь становится ясно, что шаговый двигатель 42BYGHW609 должен быть подключен к шилду следующим образом: провод A (черный) на разъем B2, провод С (зеленый) на разъем B1, провод B (красный) на разъем

A1, провод D (синий) на разъем A2.
В случае униполярного двигателя — просто подключаем его как биполярный (игнорируем средние провода от каждой обмотки — если смотреть на диаграмму выше, то это будут провода O (желтый) и O- (белый)).

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



#21. Подключаем к Arduino Шаговый двигатель 28BYJ-48 на драйвере ULN2003

Сегодня в уроке подключим шаговый двигатель 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 и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке

Понравилась статья? Поделитесь ею с друзьями:

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

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

Вы можете скачать файл.

управления шаговым двигателем 28BYJ-48 с помощью кнопки и потенциометра .ino5 Kb 697Скачать

Вы можете скачать файл.

с использованием библиотеки Stepper.ino1 Kb 497Скачать

Вы можете скачать файл.

Даташит на шаговый двигатель 28BYJ-48.pdf193 Kb 310Скачать

Вы можете скачать файл.

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

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

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

Типы шаговых двигателей

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

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

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

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

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

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

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

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

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

Подключение шаговых двигателей

Разные шаговые двигатели могут иметь разное количество проводов, как правило, 4, 5, 6, или 8. 4-х проводные линии могут поддержать только биполярные шаговые двигатели, поскольку у них нет центрального провода.

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

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

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

Полный шаг – такой привод всегда имеет два электромагнита. Для вращения вала, один из электромагнитов выключается и далее электромагнит включен, вызывая вращение вала на 1/4 зуба (по крайней мере для гибридных шаговых двигателей). Этот стиль имеет самый сильный момент вращения, но и самый большой размер шага.

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

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

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

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

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

В статье подробно рассказано о нескольких способах обновления BIOS на материнской плате Asus.

Теперь вы точно подберете идеальный ноутбук для работы или учебы!

Данная статья описывает преимущества SSD накопителей для приложений и игр. Также здесь выполняется сравнение между достоинств данного накопителя с устаревшим аналогом.

В статье речь идет о том, как отремонтировать пластмассовый китайский электрочайник.

Общие сведения:

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

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

Виды шаговых двигателей по типу ротора:

По типу ротора, шаговые двигатели делятся на: двигатели с постоянными магнитами, реактивные двигатели и гибридные двигатели.

  • Двигатель с постоянными магнитами (ротор из магнитотвердого материала). На роторе установлен один, или несколько, постоянных магнитов. Количество полных шагов в одном обороте таких двигателей, зависит от количества постоянных магнитов на роторе, и количества электромагнитов на статоре. Обычно в одном обороте от 4 до 48 шагов (один шаг от 7,5° до 90° ).
  • Реактивный двигатель (ротор из магнитомягкого материала). Еще такие двигатели называют двигателями с переменным магнитным сопротивлением. Ротор не имеет постоянных магнитов, он выполнен из магнитомягкого материала в виде многоконечной звезды. Данные двигатели встречаются редко, так как у них наименьший крутящий момент, по сравнению с остальными, при тех же размерах. Количество полных шагов в одном обороте таких двигателей, зависит от количества зубцов на звезде ротора, и количества электромагнитов на статоре. Обычно в одном обороте от 24 до 72 шагов (один шаг от 5° до 15°.)
  • Гибридный двигатель (совмещает технологии двух предыдущих двигателей). Ротор выполнен из магнитотвердого материала (как у двигателя с постоянными магнитами), но имеет форму многоконечной звезды (как у реактивного двигателя). Количество полных шагов в одном обороте таких двигателей, зависит от количества постоянных магнитов на звезде ротора, и количества электромагнитов на статоре. Количество шагов в одном обороте таких двигателей может доходить до 400 (один шаг от 0,9°).

Какой тип шагового двигателя у меня?

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

Виды шаговых двигателей по типу соединения электромагнитов статора:

По типу соединения электромагнитов, шаговые двигатели делятся на: униполярные и биполярные.

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

  • Биполярный двигатель имеет 4 вывода. Выводы A и A питают обмотку AA, выводы B и B питают обмотку BB. Для включения электромагнита, на выводы обмотки необходимо подать разность потенциалов (два разных уровня), поэтому двигатель называется биполярным. Направление магнитного поля зависит от полярности потенциалов на выводах.
  • Униполярный двигатель имеет 5 выводов. Центральные точки его обмоток соединены между собой и являются общим (пятым) выводом, который, обычно, подключают к GND. Для включения электромагнита, достаточно подать положительный потенциал на один из выводов обмотки, поэтому двигатель называется униполярным. Направление магнитного поля зависит от того, на какой именно вывод обмотки подан положительный потенциал.
  • 6-выводной двигатель имеет ответвление от центральных точек обмоток, но обмотка AA не соединена с обмоткой BB. Если не использовать выводы центральных точек обмоток, то двигатель будет биполярным, а если эти выводы соединить и подключить к GND, то двигатель будет униполярным.
  • 8-выводной двигатель является наиболее гибким в плане подключения электромагнитов. Данный двигатель можно не только использовать как биполярный или униполярный, но и самим определять, как соединить электромагниты обмоток, последовательно или параллельно.

Какой тип шагового двигателя у меня?

Если у Вашего двигателя 4 вывода, значит он биполярный. Если у Вашего двигателя 5 выводов, значит он униполярный. Но если у Вашего двигателя 6 и более выводов, то это не значит что некоторые из них являются центральными выводами катушек электромагнитов. Дело в том, что есть двигатели, некоторые выводы которых (обычно крайние), электрически замкнуты, так биполярный двигатель может иметь 6 выводов. Точно определить тип соединений, для двигателей с 6 и более выводами, можно только измеряя сопротивление между выводами.

Режимы работы шаговых двигателей:

    Для работы шагового двигателя (вне зависимости от его вида) можно выбрать один из трех режимов работы:
  • Полношаговый режим – ротор поворачивается на 1 шаг за 1 такт.
  • Полушаговый режим – ротор поворачивается на ½ шага за 1 такт.
  • Микрошаговый режим – ротор поворачивается на ¼, ⅛ и т.д. шагов за 1 такт.

Ниже рассмотрены режимы работы, на примере биполярного двигателя с постоянным магнитом и полным шагом 90°.

Полношаговый режим (одна фаза на полный шаг). Номинальные значения шагового двигателя указываются именно для этого режима.

Полношаговый режим (две фазы на полный шаг). Этот режим позволяет увеличить крутящий момент почти в половину от номинального.

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

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

Если подавать уровни не «0» – «½» – «1» (как на картинке), а «0» – «¼» – «½» – «¾» – «1», то количество шагов в полном обороте увеличится не в 4 раза, а в 8 раз. Можно увеличить количество шагов в 16, 32, 64 раза и т.д., а если заменить дискретные уровни сигналов на синусоиды, то мотор будет вращаться плавно (без шагов).

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

Пример работы шаговых двигателей с разными видами роторов:

Подключение шаговых двигателей к Arduino:

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

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

  • Биполярный двигатель можно подключить только к драйверу биполярных двигателей.
  • 6-выводной двигатель можно подключить к любому драйверу. Если не использовать выводы центральных точек обмоток, то двигатель будет биполярным, а если эти выводы соединить и подключить к GND, то двигатель будет униполярным.
  • 8-выводной двигатель является наиболее гибким в плане подключения. Данный двигатель можно не только использовать как биполярный или униполярный, но и самим определять, как соединить электромагниты обмоток внутри двигателя, последовательно или параллельно.
  • Униполярный двигатель, при необходимости, можно подключить и к драйверу биполярного двигателя по простой схеме из нескольких диодов (лучше использовать диоды Шоттки), но такое подключение гарантирует корректность работы униполярного двигателя только в полношаговом режиме.

Шаговые двигатели интересны тем, что позволяют повернуть вал на определённый угол. Соответственно, с их помощью можно повернуть вал и на определённое число оборотов, потому что N оборотов — это тоже определённый угол, равный 360*N, и, в том числе, на нецелое число оборотов, например на 0.75 оборота, 2.5 оборота, на 3.7 оборота и т.д. Этими возможностями шаговых двигателей определяется и область их применения. В основном они используются для позиционирования различных устройств: считывающих головок в дисководах, печатающих головок в принтерах и плоттерах и т.д.

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

Итак, что нам понадобится для экспериментов. Во-первых, шаговый двигатель. Я брал 5-ти вольтовый китайский биполярный шаговик с загадочным названием, выдранный из старого 3,5″ дисковода, аналог M20SP-GW15. Во-вторых, поскольку обмотки двигателя потребляют значительный ток (в данном случае до 300 мА), то вполне понятно, что подключить шаговик к контроллеру напрямую не удастся, нужен драйвер.

В качестве драйвера для биполярных шаговых двигателей обычно используют схему так называемого H-моста или специальную микросхему (в которой всё равно встроен H-мост). Можно конечно ваять самому, но я взял готовую микруху (LB1838) из того же старого дисковода. Собственно, кроме всего вышеописанного, для наших экспериментов также понадобятся: PIC-контроллер (был взят PIC12F629, как самый дешёвый) и пара кнопок.

Перед тем, как перейти непосредственно к схеме, давайте немного разберёмся с теорией.

Биполярный шаговый двигатель имеет две обмотки и, соответственно, подключается по четырём проводам. Найти концы обмоток можно простой прозвонкой — концы проводов, относящиеся к одной обмотке, будут между собой звониться, а концы, относящиеся к разным обмоткам, — нет. Концы первой обмотки обозначим буквами «a», «b», а концы второй обмотки буквами «c», «d».

На рассматриваемом экземпляре есть цифровая маркировка контактов возле мотора и цветовая маркировка проводов (бог его знает, может это тоже какой-то стандарт): 1 — красный, 2 — голубой — первая обмотка; 3 — жёлтый, 4 — белый — вторая обмотка.

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

За один полный цикл двигатель делает четыре шага.

Для правильной работы, должна строго соблюдаться указанная в таблице последовательность коммутаций. То есть, например, после второй комбинации (когда мы подали + на вывод «c» и минус на вывод «d») мы можем подать либо третью комбинацию (отключить вторую обмотку, а на первой подать — на «a» и + на «b»), тогда двигатель повернётся на один шаг вперёд, либо первую комбинацию (двигатель повернётся на один шаг назад).

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

То есть, допустим мы повернули двигатель на 5 шагов вперёд, подавая на него комбинации 2-3-4-1-2, потом обесточили, а потом захотели повернуть ещё на один шаг вперёд. Для этого на обмотки надо подать комбинацию 3. Пусть после этого мы его опять обесточили, а через какое-то время захотели вернуть его на 2 шага назад, тогда нам нужно подать на двигатель комбинации 2-1. И так далее в таком же духе.

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

На этом мы закончим с двигателем и перейдём к драйверу LB1838.

У этой микрухи есть четыре управляющие ноги (IN1, IN2, EN1, EN2), на которые мы как раз и будем подавать сигналы с контроллера, и четыре выходных ноги (Out1, Out2, Out3, Out4), к которым подключаются обмотки двигателя. Обмотки подключаются следующим образом: провод «a» подключается к Out1, провод «b» — к Out2, провод «c» — к Out3, провод «d» — к Out4.

Ниже представлена таблица истинности для микросхемы драйвера (состояние выходов в зависимости от состояния входов):

IN1EN1Out1 (a)Out2(b)IN2EN2Out3(c)Out4(d)
LowHigh+LowHigh+
HighHigh+HighHigh+
XLowотклотклXLowотклоткл

Теперь давайте нарисуем на диаграмме, какую форму должны иметь сигналы IN1, EN1, IN2, EN2 для одного полного цикла вращения (4 шага), т.е. чтобы на выходах появились последовательно все 4 комбинации подключения обмоток:

Если присмотреться к этой диаграмме (слева), то становится очевидно, что сигналы IN1 и IN2 можно сделать абсолютно одинаковыми, то есть на обе этих ноги можно подавать один и тот же сигнал. В этом случае наша диаграмма будет выглядеть так:

Итак, на последней диаграмме нарисовано, какие комбинации уровней сигналов должны быть на управляющих входах драйвера (EN1, EN2, IN1, IN2) для того, чтобы получить соответствующие комбинации подключения обмоток двигателя, а также стрелками указан порядок смены этих комбинаций для обеспечения вращения в нужную сторону.

Вот в общем-то и вся теория. Необходимые комбинации уровней на управляющих входах формируются контроллером (мы будем использовать PIC12F629).

R1..R2 = 1 кОм. Когда соответствующая кнопка не нажата — резистор подтягивает напряжение на входе контроллера к +5 В (высокий уровень). При нажатии на кнопку напряжение на входе подтягивается к земле (низкий уровень).

С1, С2 = 0,1 мкФ — керамические конденсаторы.

С3 = 470 мкФ х 16В — электролитический конденсатор.

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

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

Arduino: Шаговые двигатели

Статья проплачена кошками — всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

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

Шаговые двигатели бывают униполярные и биполярные.

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

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

Мы не можем подключить этот двигатель напрямую к контроллеру, так как ток на его обмотках может достигать 160 мА, что очень много для выводов Arduino. Для управления 28BYj-48 мы используем драйвер ULN2003.

На плате на одной стороне есть семь контактов для микроконтроллера: IN1..IN7, из которых понадобятся только первые четыре. На другой стороне находятся пять контактов для двигателя, и в средней части платы есть ещё два контакта для питания. Также есть перемычка, разрывающая цепь питания двигателя.

Как правило, кабель двигателя 28BYj-48 уже имеет разъём с ключом, который вставляется в плату только в правильном положении. В противном случае, при подключении необходимо следовать цветовой схеме. Контакты IN1..IN4 можно подключить к любым цифровым выходам Arduino.

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



Коннектор JST-XH

Мотор соединяется с драйвером при помощи специального коннектора марки JST-XH. Соединить легко, а вот отсоединить проблематично. Каждый изощряется как может. Для изобретателя данного коннектора приготовлен отдельный котёл.

Дополнительные материалы

Ардуино: шаговый двигатель 28BYJ-48 и драйвер ULN2003

Реклама

инструкция, схемы и примеры использования [Амперка / Вики]

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

Примеры работы для Arduino и XOD

В качестве мозга для управления моторами рассмотрим платформу из серии Arduino, например Arduino Uno.

Подключение к Arduino

Выберите один из вариантов коммуникации драйвера с внешним микроконтроллером:

  • Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводные шлейфы «мама-мама», который идут в комплекте с модулем.

Управление коллекторными моторами

Код для Arduino

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

troyka-h-bridge-dual-example-arduino-dc-motors.ino
// Пины управления скоростью и направлением мотора
constexpr auto pinM1Speed = 9;
constexpr auto pinM1Direction = A1;
constexpr auto pinM2Speed = 10;
constexpr auto pinM2Direction = A0;
 
int pins[] = {pinM1Speed, pinM1Direction, pinM2Speed, pinM2Direction};
 
void setup() {
  // Настраиваем все пины управление моторами в режим выхода
  for (int i = 0; i < 4; i++) {     
    pinMode(pins[i], OUTPUT);
  }
} 
 
void loop() {
  // Крутим мотор M1 в одну сторону в течении 1 секунды
  motorsDrive(255, 0);
  delay(1000);
 
  // Крутим мотор M1 в другую сторону в течении 1 секунды
  motorsDrive(-255, 0);
  delay(1000);
 
  // Крутим мотор M2 в одну сторону в течении 1 секунды
  motorsDrive(0, 255);
  delay(1000);
 
  // Крутим мотор M2 в другую сторону в течении 1 секунды
  motorsDrive(0, -255);
  delay(1000);
 
  // Стоим на месте
  motorsDrive(0, 0);
  delay(1000);
 
}
 
// Функция управления моторами
void motorsDrive(int M1Speed, int M2Speed) {
  if (M1Speed > 0) {
    digitalWrite(pinM1Direction, HIGH);
  } else {
    digitalWrite(pinM1Direction, LOW);
  }
 
  if (M2Speed > 0) {
    digitalWrite(pinM2Direction, HIGH);
  } else {
    digitalWrite(pinM2Direction, LOW);
  }
  analogWrite(pinM1Speed, abs(M1Speed));
  analogWrite(pinM2Speed, abs(M2Speed));
}

Усовершенствуем эксперимент: заставим каждый мотор по очереди плавно разгоняться и останавливаться в разных направлениях.

troyka-h-bridge-dual-example-arduino-dc-motors-pwm.ino
// Пины управления скоростью и направлением мотора
constexpr auto pinM1Speed = 9;
constexpr auto pinM1Direction = A1;
constexpr auto pinM2Speed = 10;
constexpr auto pinM2Direction = A0;
 
int pins[] = {pinM1Speed, pinM1Direction, pinM2Speed, pinM2Direction};
 
void setup() {
  // Настраиваем все пины управление моторами в режим выхода
  for (int i = 0; i < 4; i++) {     
    pinMode(pins[i], OUTPUT);
  }
} 
 
void loop() {
  // Медленно разгоняем M1 в одну сторону
  for (int i = 0; i <= 255; i++) {
    motorsDrive(i, 0);
    delay(10);
  }
  // Медленно тормозим мотор
  for (int i = 255; i >= 0; i--) {
    motorsDrive(i, 0);
    delay(10);
  }
  // Медленно разгоняем M1 в другую сторону
  for (int i = 0; i <= 255; i++) {
    motorsDrive(-i, 0);
    delay(10);
  }
  // Медленно тормозим мотор
  for (int i = 255; i >= 0; i--) {
    motorsDrive(-i, 0);
    delay(10);
  }
 
  // медленно разгоняем M2 в одну сторону
  for (int i = 0; i <= 255; i++) {
    motorsDrive(0, i);
    delay(10);
  }
  // медленно тормозим мотор
  for (int i = 255; i >= 0; i--) {
    motorsDrive(0, i);
    delay(10);
  }
  // медленно разгоняем M2 в другую сторону
  for (int i = 0; i <= 255; i++) {
    motorsDrive(0, -i);
    delay(10);
  }
  // медленно тормозим мотор
  for (int i = 255; i >= 0; i--) {
    motorsDrive(0, -i);
    delay(10);
  }
 
}
 
// Функция управления моторами
void motorsDrive(int M1Speed, int M2Speed) {
  if (M1Speed > 0) {
    digitalWrite(pinM1Direction, HIGH);
  } else {
    digitalWrite(pinM1Direction, LOW);
  }
 
  if (M2Speed > 0) {
    digitalWrite(pinM2Direction, HIGH);
  } else {
    digitalWrite(pinM2Direction, LOW);
  }
  analogWrite(pinM1Speed, abs(M1Speed));
  analogWrite(pinM2Speed, abs(M2Speed));
}

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

Для лёгкого и быстрого управления шаговым двигателем мы написали библиотеку AmperkaStepper, которая скрывает в себе все тонкости работы с мотором и предоставляет удобные методы.

Код для Arduino
troyka-h-bridge-dual-example-arduino-stepper.ino
// Библиотека для работы с шаговым двигателем
#include <AmperkaStepper.h>
 
// Создаём объект для работы с шаговым двигателем
// и передаём фиксированное количество шагов за полный оборот.
// Подробности в характеристиках двигателя
AmperkaStepper motor(200, A0, A1, 9, 10);
 
void setup() {
  // Устанавливаем скорость вращения 30 оборотов в минуту.
  motor.setSpeed(30);
}
 
void loop() {
  // 180° по часовой стрелке в двухфазном режиме
  motor.step(100, FULL_STEP);
  delay(1000);
 
  // 180° против часовой стрелки в однофазном режиме
  motor.step(-100, WAVE_DRIVE);
  delay(1000);
 
  // 180° по часовой стрелке в полушаговом режиме
  motor.step(200, HALF_STEP);
  delay(1000);
 
  // 180° против часовой стрелки в двухфазном режиме
  // этот режим используется по умолчанию, если не передан
  // второй аргумент
  motor.step(-100);
  delay(1000);
}

Пример работы для Espruino

В качестве мозга для управления моторами рассмотрим платформу из серии Espruino, например, Iskra JS.

Подключение к Espruino

Выберите один из вариантов коммуникации драйвера с внешним микроконтроллером:

  • Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая одевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте трёхпроводные шлейфы «мама-мама», который идут в комплекте с модулем.

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

Код для Espruino IDE

Покрутим каждый мотор в одну, а затем другую сторону. Прошейте платформу Espruino скриптом, приведённым ниже.

troyka-h-bridge-dual-example-espruino-dc-motors.js
// Подключаем библиотеку «motor»
var Motor = require('@amperka/motor');
 
 
// Пины управления скоростью и направлением мотора
var motorOne = Motor.connect({phasePin: A1, pwmPin: P9, freq: 100});
var motorTwo = Motor.connect({phasePin: A0, pwmPin: P10, freq: 100});
 
// Интервал времени
var time = 1000;
// Счётчик
var state = 0;
 
// Каждую секунду меняем режим работы
setInterval(() => {
  motorOne.write(0);
  motorTwo.write(0);
  state++;
  if (state === 1) {
    motorOne.write(1);
  } else if (state === 2) {
    motorOne.write(-1);
  } else if (state === 3) {
    motorTwo.write(1);
  } else if (state === 4) {
    motorTwo.write(-1);
  } else {
    state = 0;
  }
}, time);

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

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

Код для Espruino
troyka-h-bridge-dual-example-espruino-stepper.js
// Подключаем библиотеку «motor»
var StepperMotor = require("StepperMotor");
 
// Создаём объект для работы с шаговым двигателем
// передаём пины управления
var motor = new StepperMotor({
  pins:[A0, A1, P9, P10],
  pattern:[0b0001,0b0011,0b0010,0b0110,0b0100,0b1100,0b1000,0b1001],
});
 
// Крутим вал на 100 шагов по часовой стрелке
motor.moveTo(100, 5000, function() {
  // Крутим вал на 100 шагов против часовой стрелке
  motor.moveTo(-100, 5000, function() {
    // Приехали
    console.log("Done!");
  }, true);  
});

Пример работы для Raspberry Pi

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

Подключение к Raspberry Pi

В компьютере Raspberry Pi присутствует только два канала с ШИМ-сигналом, и то которые используются для аналогового звукового выхода. В итоге для регулировки скоростью моторов придется жертвовать звуком. Используйте плату расширения Troyka Cap, которая добавит малине 9 пинов с поддержкой ШИМ.

Подключите драйвер к компьютеру Raspberry Pi через Troyka Cap. Для коммуникации используйте трёхпроводные шлейфы «мама-мама», который идут в комплекте с модулем.

Программная настройка

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

Код для Raspberry Pi

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

troyka-h-bridge-dual-example-raspberry-pi-dc-motors.py
# библиотека для работы с пинами GPIO
import RPi.GPIO as GPIO
# библиотека для работі с временем
import time
 
# выбираем имена пинов BCM
GPIO.setmode(GPIO.BCM)
# устанавливаем светодиод в режим выхода
GPIO.setup(24, GPIO.OUT)
 
try:
    while True:
        # ждём одну секунду
        time.sleep(1)
        # зажигаем светодиод
        GPIO.output(24, GPIO.HIGH)
        # ждём одну секунду
        time.sleep(1)
        # гасим светодиод
        GPIO.output(24, GPIO.LOW)
except KeyboardInterrupt:
    print('The program was stopped by keyboard.')
finally:
    GPIO.cleanup()
    print('GPIO cleanup completed.')

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

H-мост может управлять двумя отдельными коллекторными моторами или одним биполярным шаговым двигателем.

Подключение коллекторных моторов

  1. Подключите силовое питание для моторов через клеммник P.

    1. В качестве автономного источника обратите внимание на батарейный отсек с элементами питания.

Значение входного силового напряжения зависит от номинального напряжения подключаемых моторов и ограничено диапазоном от 3,3 до 12 вольт.

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

  1. Подключите силовое питание для мотора через клеммник P.

    1. В качестве автономного источника обратите внимания на батарейный отсек с элементами питания.

Значение входного силового напряжения зависит от номинального напряжения шагового двигателя и ограничено диапазоном от 3,3 до 12 вольт.

Элементы платы

Драйвер двигателей TB6612FNG

Сердце и мускулы платы — микросхема двухканального H-моста TB6612FNG, которая позволяет управлять двумя коллекторными моторами или одним биполярным шаговым двигателем с помощью внешнего микроконтроллера.

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

В зависимости от текущего состояние переключателей возможно разное состояние мотора.

S1 S2 S3 S4 Результат
1 0 0 1 Мотор крутится вправо
0 1 1 0 Мотор крутится влево
0 0 0 0 Свободное вращение мотора
0 1 0 1 Мотор тормозит
1 0 1 0 Мотор тормозит
1 1 0 0 Короткое замыкание источника питания
0 0 1 1 Короткое замыкание источника питания

Ключи меняем на MOSFET-транзисторы, а для плавной регулировки скорости вращения вала мотора используем ШИМ-сигнал.

Питание

На плате драйвера моторов присутствует два контура питания: силовое и логическое.

  • Силовой контур (VM) — напряжение для питания моторов от силовой части микросхемы TB6612FNG и светодиодов индикации. Силовое питание подключается через клеммник P c входным диапазоном напряжения от 5 до 12 вольт.
  • Логический контур (Vcc) — питание вспомогательной цифровой логики управления микросхемы TB6612FNG. Логическое питание поступает на плату модуля через контакт V. Диапазон входного напряжения от 3,3 до 5 вольт.

Если отсутствует хотя бы один из контуров питания — драйвер H-мост работать не будет.

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

Нагрузка

Нагрузка разделена на два независимых канала. Первый канал на плате обозначен шёлком M1, а второй канал — M2. К каждому каналу можно подключить по одному коллекторному мотору или объединить каналы для подключения биполярного шагового двигателя.

Обозначения «+» и «−» показывают воображаемые начало и конец обмотки. Если подключить два коллекторных двигателя, чтобы их одноимённые контакты щёточного узла соответствовали одному и тому же обозначению на плате, то при подаче на H-Bridge одинаковых управляющих импульсов, моторы будут вращаться в одну и ту же сторону.

Светодиодная индикация

Имя светодиода Назначение
DIR1/EN1Индикация состояния направления и скорости первого канала M1. При высоком логическом уровне светится зелёным светом, при низком — красным. Яркость светодиода пропорциональна скорости вращения двигателя.
DIR2/EN2Индикация состояния направления и скорости первого канала M2. При высоком логическом уровне светится зелёным светом, при низком — красным. Яркость светодиода пропорциональна скорости вращения двигателя.

Принципиальная и монтажная схемы

Габаритный чертёж

Характеристики

  • Драйвер моторов: TB6612FNG

  • Количество подключаемых моторов: 2

  • Напряжение логической части: 3,3–5 В

  • Напряжение силовой части: 3,3—12 В

  • Максимальный ток нагрузки: до 1,2 A на канал

  • Максимальная частота переключения (ШИМ): 100 кГц

  • Габариты модуля: 50,8×25,4×19 мм

Ресурсы

Как управлять шаговым двигателем с помощью драйвера A4988 и Arduino


Обзор: управление шаговым двигателем с драйвером A4988 и Arduino

В этом руководстве мы будем управлять шаговым двигателем NEMA17 с помощью модуля драйвера A4988 и Arduino. A4988 — это микрошаговый драйвер для управления биполярными шаговыми двигателями, который имеет встроенный переводчик для упрощения работы. Таким образом, мы можем управлять шаговым двигателем с помощью всего 2 контактов от нашего контроллера. Штифт DIR будет управлять направлением вращения, а штифт STEP — шагом.

В предыдущем уроке мы изучили управление шаговым двигателем с помощью потенциометра , а также с помощью джойстика . 28BYJ-48 — это 5-проводный униполярный шаговый двигатель, который работает от 5 вольт и не требует драйвера. Но для шагового двигателя NEMA17 требуется мощность 8–35 В, поскольку крутящий момент слишком высок. Поэтому нам нужен модуль шагового драйвера, например A4988 или DRV8825 .


Спецификация

Для изучения этого руководства необходимы следующие компоненты.Все компоненты можно легко приобрести на Amazon . Также дается ссылка на покупку компонента .


A4988 Модуль драйвера шагового двигателя

A4988 — это полный микрошаговый драйвер двигателя со встроенным переводчиком для упрощения работы. Коммутационная плата от Allegro имеет регулируемое ограничение тока, защиту от перегрузки по току и перегреву, а также пять различных разрешений микрошага. Он работает от 8 В до 35 В и может выдавать до 1 А на фазу без радиатора или принудительного воздушного потока.Он рассчитан на 2 А на катушку при достаточном дополнительном охлаждении.

Характеристики
  1. Макс. Рабочее напряжение: 35 В
  2. Мин. Рабочее напряжение: 8 В
  3. Макс. Ток на фазу: 2A
  4. Микрошаговое разрешение: полный шаг, ½ шага, ¼ шага, 1/8 и 1/16 шага
  5. Защита от обратного напряжения: Нет
  6. Размеры: 15,5 × 20,5 мм (0,6 ″ × 0,8 ″)
  7. Защита от короткого замыкания на массу и короткого замыкания
  8. Выходы Low RDS (ON)
  9. Схема теплового отключения
A4988 Распиновка драйвера двигателя

Драйвер A4988 имеет в общей сложности 16 контактов, а именно:

1.Контакты источника питания: Контакты включают VDD, VMOT и пару контактов GND. VDD используется для управления внутренней логической схемой, которая может составлять от 3 до 5 В, тогда как VMOT обеспечивает питание двигателя, которое может составлять от 8 до 35 В.

2. Контакты Microstep Selection: Драйвер A4988 имеет входы трехступенчатого селектора разрешения, то есть MS1, MS2 и MS3. Установив соответствующие логические уровни для этих выводов, мы установим двигатели как минимум на одно из пяти шагов разрешения.

3.Контакты входа управления: STEP и DIR — это 2 контакта входа управления. Вход STEP контролирует микрошаги двигателя, тогда как вход DIR контролирует направление вращения двигателя.

4. Вывод управления состояниями питания: A4988 имеет три разных входа для управления состояниями питания, то есть EN, RST и SLP. Контакт EN является активным низким входом, при нажатии LOW активируется драйвер A4988. Вывод SLP — активный низкий вход. Нажатие этого вывода на НИЗКОЕ значение переводит драйвер в спящий режим, минимизируя потребление ресурсов.RST — это активный низкий вход, который при нажатии LOW все входы STEP игнорируются. Он также сбрасывает драйвер, устанавливая внутренний переводчик на начальную ступень двигателя.

5. Выходные контакты: Имеется 4 выходных контакта: 2B, 2A, 1B, 1A. Мы можем подключить к этим контактам любой биполярный шаговый двигатель с напряжением от 8 до 35 В.

Требования к радиатору

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

Из-за чрезмерного рассеивания мощности драйвера A4988 происходит повышение температуры, которое может выйти за пределы возможностей ИС, что, вероятно, приведет к ее повреждению.

Установка предела тока

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

Текущий предел = VRef x 2,5

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


Шаговый двигатель NEMA17

NEMA 17 — гибридный шаговый двигатель с углом шага 1,8 ° (200 шагов / оборот).Каждая фаза потребляет 1,2 А при 4 В, что обеспечивает удерживающий момент 3,2 кг-см. Шаговый двигатель NEMA 17 обычно используется в принтерах, станках с ЧПУ и лазерных резаках.

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


Взаимодействие шагового двигателя NEMA17 с Arduino с использованием драйвера A4988

Теперь давайте подключим драйвер шагового двигателя A4988 к Arduino и будем управлять шаговым двигателем NEMA17.Я использовал контакты D2 и D3 для управления направлением и шагом двигателя. Схема подключения приведена ниже.

Вывод VMOT питается от источника питания 12 В, а VDD питается от источника питания 5 В. Не забудьте установить большой развязывающий электролитический конденсатор 100 мкФ на контакты источника питания двигателя, рядом с платой.


Project PCB Gerber File & PCB Заказ онлайн

Если вы не хотите собирать схему на макетной плате и вам нужна печатная плата для проекта, то вот печатная плата для вас.Печатная плата для управления шаговым двигателем Nema17 с A4988 и Arduino разработана с использованием онлайн-инструмента EasyEDA для создания схем и проектирования печатных плат. Лицевая и обратная стороны печатной платы показаны ниже.

Рис: Вид спереди Рис: Вид сзади

Файл Gerber для печатной платы представлен ниже. Вы можете просто загрузить файл Gerber и заказать печатную плату по адресу https://www.nextpcb.com/

Скачать файл Gerber: A4988 + Arduino + NEMA17 PCB

Теперь вы можете посетить официальный сайт NextPCB, щелкнув здесь: https: // www.nextpcb.com/ . Вы будете перенаправлены на сайт NextPCB .

Теперь вы можете загрузить файл Gerber на веб-сайт и разместить заказ. Качество печатной платы чистое и блестящее. Вот почему большинство людей доверяют NextPCB для PCB и PCBA Services .


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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

const int dirPin = 2;

const int stepPin = 3;

const int stepsPerRevolution = 200;

void setup ()

{

// Объявление контактов как выходов

pinMode (stepPin, OUTPUT);

pinMode (dirPin, ВЫХОД);

}

void loop ()

{

// Установить направление двигателя по часовой стрелке

digitalWrite (dirPin, HIGH);

// Медленно вращайте двигатель

for (int x = 0; x

{

digitalWrite (stepPin, HIGH);

delayMicroseconds (2000);

digitalWrite (stepPin, LOW);

delayMicroseconds (2000);

}

задержка (1000); // Подождите секунду

// Установите направление двигателя против часовой стрелки

digitalWrite (dirPin, LOW);

// Быстрое вращение двигателя

for (int x = 0; x

{

digitalWrite (stepPin, HIGH);

delayMicroseconds (1000);

digitalWrite (stepPin, LOW);

delayMicroseconds (1000);

}

задержка (1000); // Подождите секунду

}


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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

const int dirPin = 2;

const int stepPin = 3;

const int stepsPerRevolution = 200;

void setup ()

{

// Объявление контактов как выходов

pinMode (stepPin, OUTPUT);

pinMode (dirPin, ВЫХОД);

}

void loop ()

{

// Установить направление двигателя по часовой стрелке

digitalWrite (dirPin, HIGH);

// Медленно вращайте двигатель

for (int x = 0; x

{

digitalWrite (stepPin, HIGH);

delayMicroseconds (2000);

digitalWrite (stepPin, LOW);

delayMicroseconds (2000);

}

задержка (1000); // Подождите секунду

// Установите направление двигателя против часовой стрелки

digitalWrite (dirPin, LOW);

// Быстрое вращение двигателя

for (int x = 0; x

{

digitalWrite (stepPin, HIGH);

delayMicroseconds (1000);

digitalWrite (stepPin, LOW);

delayMicroseconds (1000);

}

задержка (1000); // Подождите секунду

}


Управление шаговым двигателем с помощью библиотеки AccelStepper Шаговым двигателем

можно управлять с помощью библиотеки Arduino AccelStepper.Он предоставляет объектно-ориентированный интерфейс для 2-, 3- или 4-контактных шаговых двигателей и драйверов двигателей.

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

Следующий код показывает все вышеупомянутые функции.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

39

40

41

42

43

44

45

46

48

51

52

53

#include

// Определите соединения шагового двигателя и тип интерфейса двигателя. Тип интерфейса двигателя должен быть установлен на 1 при использовании драйвера:

#define dirPin 2

#define stepPin 3

#define motorInterfaceType 1

// Создайте новый экземпляр класса AccelStepper:

AccelStepper = AccelStepper (motorInterfaceType, stepPin, dirPin);

void setup () {

// Установите максимальную скорость в шагах в секунду:

stepper.setMaxSpeed ​​(1000);

}

void loop ()

{

// Установить текущую позицию на 0:

stepper.setCurrentPosition (0);

// Запустите двигатель вперед со скоростью 200 шагов в секунду, пока двигатель не достигнет 400 шагов (2 оборота):

while (stepper.currentPosition ()! = 400)

{

stepper.setSpeed ​​(200) ;

stepper.runSpeed ​​();

}

задержка (1000);

// Сбросьте положение на шаговый 0:

.setCurrentPosition (0);

// Запустите двигатель назад со скоростью 600 шагов в секунду, пока двигатель не достигнет -200 шагов (1 оборот):

while (stepper.currentPosition ()! = -200)

{

stepper.setSpeed ​​( -600);

stepper.runSpeed ​​();

}

задержка (1000);

// Сбросить позицию на 0:

stepper.setCurrentPosition (0);

// Запустите двигатель вперед со скоростью 400 шагов в секунду, пока двигатель не достигнет 600 шагов (3 оборота):

while (stepper.currentPosition ()! = 600)

{

stepper.setSpeed ​​(400);

stepper.runSpeed ​​();

}

задержка (3000);

}


Код ускорения и замедления шагового двигателя

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

#include

#define dirPin 2

#define stepPin 3

#define motorInterfaceType 1

// Создайте новый экземпляр класса AccelStepper:

StepPin, AccelStepper ;

void setup ()

{

// Установите максимальную скорость и ускорение:

stepper.setMaxSpeed ​​(200);

stepper.setУскорение (30);

}

void loop () {

// Установите целевую позицию:

шаговый.moveTo (600);

// Движение к целевой позиции с заданной скоростью и ускорением / замедлением:

stepper.runToPosition ();

задержка (1000);

// Вернуться к нулю:

stepper.moveTo (0);

stepper.runToPosition ();

задержка (1000);

}


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

Шаговым двигателем также можно управлять с помощью потенциометра.Я использовал потенциометр 10K и подключил его к аналоговому выводу A0 платы Arduino Nano. Напряжение, подаваемое на аналоговый вывод Arduino, можно использовать в качестве опорного напряжения для управления скоростью шагового двигателя. Схема подключения приведена ниже.

Скопируйте приведенный ниже код и загрузите его на плату Arduino Nano.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

/ Определяет номера выводов

const int stepPin = 3;

const int dirPin = 4;

int customDelay, customDelayMapped; // Определяет переменные

void setup () {

// Устанавливает два контакта как выходы

pinMode (stepPin, OUTPUT);

pinMode (dirPin, ВЫХОД);

digitalWrite (dirPin, HIGH); // Позволяет двигателю двигаться в определенном направлении

}

void loop () {

customDelayMapped = speedUp (); // Получает пользовательские значения задержки из пользовательской функции speedUp

// Создает пулы с пользовательской задержкой, в зависимости от потенциометра, от которого зависит скорость двигателя

digitalWrite (stepPin, HIGH);

delayMicroseconds (customDelayMapped);

digitalWrite (stepPin, LOW);

delayMicroseconds (customDelayMapped);

}

// Функция для чтения потенциометра

int speedUp () {

int customDelay = analogRead (A0); // Считывает потенциометр

int newCustom = map (customDelay, 0, 1023, 300,4000); // Преобразует считанные значения потенциометра от 0 до 1023 в желаемые значения задержки (от 300 до 4000)

return newCustom;

}


Видеоуроки и руководство

A4988 Учебное пособие | Управляйте шаговым двигателем NEMA17 с помощью модуля драйвера шагового двигателя A4988 и Arduino

Как использовать шаговый двигатель в Arduino


Следующее руководство даст вам краткое введение в шаговые двигатели.Эти двигатели могут двигаться на очень небольшой шаг за шагом, что делает их подходящими для проекты, требующие точности. Во-первых, в этом руководстве вы можете узнать о способ работы шаговых двигателей. Затем в пошаговом руководстве вы узнаете, как подключиться к свой Arduino и управляйте ими с компьютера с помощью Ozeki 10. Давайте начнем прямо сейчас.

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

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

Как работает шаговый двигатель?

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

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

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

Arduino

Рисунок 1 — Схема подключения шагового двигателя Arduino

Как использовать шаговый двигатель Arduino в Озэки

Соединение с мультиконтроллером шагового двигателя способно передавать команды вашим шаговым двигателям от любого выбранного соединения Ozeki.Шаговые двигатели — самые точные из доступных двигателей. Вы можете приказать им двигаться точно на 1,8 / 16 = 0,1125 градуса / шаг в каждом направлении. Команды движения состоят из необходимых шагов и скорости вращения двигателей. Вы также можете настроить ограничители движения двигателя. Чтобы использовать шаговый двигатель в Ozeki, вам сначала нужно загрузить Ozeki Robot Developer. Озэки Robot Developer установит библиотеки Arduino, необходимые для эффективного использования этого датчика.

Скачать Ozeki Robot Developer

После того, как разработчик Ozeki Robot будет установлен, вам необходимо загрузить код управления шаговым двигателем. к вашему Arduino.Вы можете найти код и инструкции по загрузке на следующих страницах. Процесс загрузки состоит из двух шагов: сначала вам нужно отформатировать EEPROM Arduino, тогда вам нужно загрузить контрольный код. Процедура очень проста, требуется всего лишь несколько секунд.

Загрузите код шагового двигателя в Arduino Mega 2560
Загрузите код шагового двигателя в лазерный резак
Загрузите код шагового двигателя в Ozeki Matrix

Моторы Arduino и Ozeki будут обмениваться данными через порт USB с использованием протокола Ozeki Stepper Motor.Этот Протокол позволяет вам использовать мотор прямо на вашем ПК. Вы сможете управлять этим двигателем через Интернет. пользовательский интерфейс или вы сможете общаться с ним с помощью Ozeki Chat. Вы можете узнать больше об управлении чатом на следующей странице.

Как общаться с шаговым двигателем в чате

Важно понимать управление чатом, потому что когда вы создаете робота, Вы хотите управлять этим двигателем, отправляя и получая сообщения.если ты откройте приложение Ozeki Robot Developer, вы увидите, кому вы можете написать C # .Net программа для работы с этим мотором.

Шаги подключения

  1. Подключите шаговый двигатель к Arduino, следуя схеме подключения
  2. Подключите плату Arduino к компьютеру с помощью USB-кабеля для передачи данных
  3. Проверьте COM-порты в списке устройств Windows
  4. Откройте приложение Arduino на вашем компьютере
  5. Загрузить пример кода в микроконтроллер
  6. Откройте https: // localhost: 9515 в своем браузере
  7. Выберите подключение шагового двигателя
  8. Установите скорость и градус для проверки шагового двигателя

Обзор системы

Предлагаемая нами система состоит из шагового двигателя, подключенного к аналоговому порту. вашего Arduino.Arduino будет отвечать за чтение данных с этого устройства. в реальном времени. Мозг системы будет работать на ПК (рисунок 2). На ПК Озэки 10 смогут управлять общением. Вы можете легко запустить Ozeki 10 с помощью веб-браузера.

Рисунок 2 — Системная конфигурация шагового двигателя, подключенного к ПК с помощью Arduino

Предварительные требования

  • Шаговый двигатель (и)
  • Драйвер (и) шагового двигателя DRV8825 или A4988
  • Концевой упор (и)
  • Ozeki 10 установлен на вашем компьютере
  • Программируемая плата (Arduino Mega plus RAMPS v1.4, модуль контроллера шагового двигателя Ozeki
    или плата контроллера лазерного резака)
  • USB-кабель необходим между платой и компьютером

Шаг 1. Подключите шаговый двигатель к Arduino

.

Вы можете увидеть, как подключить шаговые двигатели на любую из следующих досок:

После подключения подключите плату к компьютеру!

Шаг 2 — Загрузите код в микроконтроллер

(Вот код для загрузки)

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

Шаг 3 — Запустите Ozeki 10, чтобы попробовать шаговый двигатель

После этого вы подключили Arduino к Raspberry Pi, теперь вы можете опробовать шаговый двигатель.Для этого вам нужно открыть GUI (графический пользовательский интерфейс) Ozeki 10. Это можно сделать, набрав localhost: 9513 в веб-браузере и нажав Enter. Здесь Ozeki 10 автоматически определяет подключенные устройства, поэтому после подключения шаговый двигатель, вы увидите его в списке подключений. Все, что у тебя есть сделать здесь, это открыть соединение и попробовать шаговый двигатель.

Шаг 4 — Настройте шаговый двигатель в Ozeki 10

Чтобы настроить шаговый двигатель (подключенный к Arduino) в Ozeki 10, который установлен на вашем компьютере, вам необходимо открыть графический интерфейс пользователя (GUI) Ozeki 10.Вы можете открыть графический интерфейс, введя URL-адрес компьютера в свой веб-браузер. Например, если у нашего ПК IP-адрес 192.168.1.5, мы бы введите http://192.168.1.5:9513 в наш веб-браузер.

Шаг 5. Ознакомьтесь с протоколом шагового двигателя

Мульти-контроллер шагового двигателя может связываться с Ozeki через следующий протокол.

Ссылки:
https://www.tutorialspoint.com
http: //www.tigoe.ком

Дополнительная информация


Управление шаговыми двигателями: Object Fall 2019

    Щиток приборов

    ATLS3300-010

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

    Перейти к содержанию Щиток приборов
    • Авторизоваться

    • Панель приборов

    • Календарь

    • Входящие

    • История

    • Помощь

    Закрывать