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

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

Как управлять шаговым двигателем через Arduino: схема подключения

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

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

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

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

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

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

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

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

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

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

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

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

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

2. С постоянными магнитами.

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

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

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

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

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

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

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

Перейдем к практике

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

Итак, из рассмотренного ранее набора у меня есть:

Модуль ULN2003 – предназначен для управления униполярным шаговым двигателем. Схематически это транзисторная сборка Дарлингтона с 7-ю каналами и, в принципе, ею можно управлять чем угодно. Технические характеристики приведены ниже:

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

Двигатель 28BYJ-48 5V DC подключается штатным разъёмом к белой колодке на плате. У него 5 проводов — красный общий, и 4 от обмоток.

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

Значит, попробуем выдать такие сигналы с ардуино. Для этого я подключаю модуль ULN2003 по такой схеме (пин ардуино – контакт модуля)

Дальше напишем в Arudino IDE код, который будет подавать на выходы сигналы в соответствии с таблицей выше.

// назначим переменные с номерами портов

const int dl = 2; // переменная для задержки

// назначим указанные пины как выходы

//сформируем сигналы для первого шага

delay(dl); //Задержка между шагами, чем она меньше — тем быстрее вращение вала.

//сформируем сигналы для второго шага

//сформируем сигналы для третьего шага

//сформируем сигналы для четвертого шага

Двигатель начнет вращаться, скорость вращения задаётся переменной dl. Я её ввёл только для того, чтобы в каждом шаге не вводить задержку вручную. Ниже я приложу видео и в нём для наглядности я показал как вращение с задержкой между шагами равной 2 мс (на 1 мс двигатель просто пищит и не вращается…), и с задержкой в полсекунды, что позволяет наглядно увидеть, в какой последовательности подаются сигналы на обмотки, что позволяет убедиться в том, что напряжение подаётся на две обмотки сразу, согласно таблице выше. При задержке в 2 мс светодиоды светятся как будто все вместе.

Перейдем к полушаговому управлению. В таблице ниже приведен порядок подачи сигналов на обмотки рассматриваемого двигателя для его реализации.

Тогда код будет таким:

// назначим переменные с номерами портов

const int dl = 2; // переменная для задержки

// назначим указанные пины как выходы

//сформируем сигналы для первого шага

delay(dl); //Задержка между шагами, чем она меньше — тем быстрее вращение вала.

//сформируем сигналы для второго шага

//сформируем сигналы для третьего шага

//сформируем сигналы для четвертого шага

//сформируем сигналы для пятого шага

//сформируем сигналы для шестого шага

//сформируем сигналы для седьмого шага

//сформируем сигналы для восьмого шага

Но на практике такой подход к управлению шаговым двигателем не используется. Для этого есть готовые библиотеки, в Arduino IDE есть встроенная «Stepper». Возьмем из библиотеки готовый пример «Stepper_oneRevolution» и изменим его под наш двигатель, код привожу ниже и в комментариях опишу основные особенности:

const int stepsPerRevolution = 2048; // изменить в соответствии с количеством

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

// мы указали для 1 полного оборота

// назначаем пины, к которым подключен драйвер ШД

Stepper myStepper(stepsPerRevolution, 13, 12, 11, 10);

// указываем номинальную скорость 15 об.мин:

// включаем последовательный пор:

// делаем оборот по часовой стрелке:

Serial.println(«clockwise»); // сообщение в монитор порта

// делаем оборот против часовой стрелке:

Serial.println(«counterclockwise»); // сообщение в монитор порта

Первое что бросается в глаза – код занимает значительно меньше времени, количество шагов для полного оборота ротора задаётся первым аргументом функции Stepper, с её помощью объявляются пины, к которым подключен двигатель и количество шагов в полном обороте вала её синтаксис такой:

Stepper название (количество шагов в полном обороте, пин 1, пин 2, пин 3, пин 4).

Ну а когда нам нужно вращать сам двигатель мы обращаемся к двигателю название которого мы написали в Stepper с приставкой «.step», у нас это myStepper.step. В видео ролике я для наглядности вставил фрагмент, где по часовой стрелке двигатель делает пол оборота, а против – целый оборот. Он в самом конце. Код я для этого изменил следующим образом:

// делаем оборот по часовой стрелке:

Serial.println(«clockwise»); // сообщение в монитор порта

// делаем оборот против часовой стрелке:

Serial.println(«counterclockwise»); // сообщение в монитор порта

В мониторе порта микроконтроллер нам «говорит» в какую сторону вращается двигатель.

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

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

Как подключить ардуино к драйверу шагового двигателя. Смотреть фото Как подключить ардуино к драйверу шагового двигателя. Смотреть картинку Как подключить ардуино к драйверу шагового двигателя. Картинка про Как подключить ардуино к драйверу шагового двигателя. Фото Как подключить ардуино к драйверу шагового двигателя

Шаговый двигатель Arduino ► предназначен для перемещения объекта на заданное количество шагов вала. Рассмотрим устройство и схему подключения шагового двигателя.

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала. Плата Arduino может управлять шаговым двигателем с помощью драйвера и библиотеки stepper.h или accelstepper.h. Рассмотрим принцип работы и схему подключения шагового двигателя к Arduino Uno / Nano, а также разберем скетч для управления шаговым мотором.

Как подключить ардуино к драйверу шагового двигателя. Смотреть фото Как подключить ардуино к драйверу шагового двигателя. Смотреть картинку Как подключить ардуино к драйверу шагового двигателя. Картинка про Как подключить ардуино к драйверу шагового двигателя. Фото Как подключить ардуино к драйверу шагового двигателя

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

В зависимости от конструкции, сегодня применяются три вида шаговых двигателей: с постоянным магнитом, с переменным магнитным сопротивлением и гибридные двигатели. У двигателей с постоянным магнитом число шагов на один оборот вала доходит до 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. Светодиоды на модуле служат для индикации включения катушек двигателя.

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

Для занятия нам понадобятся следующие детали:

Как подключить ардуино к драйверу шагового двигателя. Смотреть фото Как подключить ардуино к драйверу шагового двигателя. Смотреть картинку Как подключить ардуино к драйверу шагового двигателя. Картинка про Как подключить ардуино к драйверу шагового двигателя. Фото Как подключить ардуино к драйверу шагового двигателяСхема подключения шагового двигателя к Arduino UNO

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *