Step motor 28byj 48 подключение к ардуино

Step motor 28byj 48 подключение к ардуино

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

Рабочее напряжение
Число фаз4
Тип шагового двигателяУниполярный
Угол шагаПолушаговый режим: 5,625° ( 64 шага на оборот)
Шаговый режим: 11,25° ( 32 шага на оборот)
Предпочтительный режим работыПолушаговый

Схема устройства шагового мотора

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

Контакт мотораФазы для полушагового режима
12345678
Оранжевый+++
Желтый+++
Розовый+++
Синий+++
Контакт мотораФазы для шагового режима
1234
Оранжевый++
Желтый++
Розовый++
Синий++

Подключение напрямую к Arduino Uno

Первое подключение — самое простое напрямую к Arduino Uno. Обратите внимание — красный провод мотора не подключен.

Файл мотора для Fritzing — 28BYJ-48 Stepper Motor.fzpz (9,27 KB) .

Добавим кнопку для изменения направления вращения и потенциометр для изменения скорости вращения:

Принципиальная схема

Скетч для Fritzing — step_motor_02_button_potentiometr.fzz (17,9 KB)

Подключаем через драйвер ULN2003A

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

Вливаем первый скетч и. вуаля! Все работает!

В нашем случае маркировка платы с драйвером ULN2003APG — ZC-A0591 ( SBT0811). Это не играет принципиальной роли, потому что все подобные платы абсолютно одинаковые.

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

Наш драйвер ( микросхема ULN2003A) представляет из себя сборку Дарлингтона из семи независимых транзисторных пар Дарлингтона в одном корпусе. Каждая пара Дарлингтона представляет из себя каскад из двух биполярных транзисторов. Такая схема позволяет управлять мощными нагрузками с током до 500 мА и напряжением до 50 В на канал с помощью слабого тока микроконтроллера, такого как Arduino.

Скетч с использованием драйвера ULN2003A и внешнего источника питания на 9 В — step_motor_03_driver_9V.fzz (31,7 KB)

Таким образом драйвер ULN2003A позволяет управлять более мощными моторами, используя внешний источник питания ( на примере 9 В мотора):

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

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

Step motor 28byj 48 подключение к ардуино

Также сбоку расположен джампер (два вывода под четырьмя резисторами), установка которого позволяет подавать питание на шаговый двигатель. Замечу, что питать мотор от 5 В Arduino не рекомендуется, так как мотор может потреблять ток, превышающий возможности Arduino. Лучше использовать внешний 5-12 В источник питания, выдающий ток не менее 1 А. Четыре управляющих входа помечены как IN1-IN4 и должны быть подключены к четырем цифровым выводам Arduino.

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

Библиотека AccelStepper

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

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

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

Библиотека AccelStepper

Библиотека AccelStepper
AccelStepper-1.48.zip
Version: 1.48
81.7 KiB
5551 Downloads
Детали

Категория:Programs
Дата:06.09.2015

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

#include #define HALFSTEP 8 // Определение пинов для управления двигателем #define motorPin1 3 // IN1 на 1-м драйвере ULN2003 #define motorPin2 4 // IN2 на 1-м драйвере ULN2003 #define motorPin3 5 // IN3 на 1-м драйвере ULN2003 #define motorPin4 6 // IN4 на 1-м драйвере ULN2003 // Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4 // для использования AccelStepper с 28BYJ-48 AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4); void setup() < stepper1.setMaxSpeed(1000.0); stepper1.setAcceleration(100.0); stepper1.setSpeed(200); stepper1.moveTo(20000); >void loop()< // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) stepper1.moveTo(-stepper1.currentPosition()); stepper1.run(); >

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

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

Для подключения понадобится:

  • Плата Arduino купить плату Arduino =>>
  • Шаговый двигатель 28BYJ-48 купить шаговый двигатель RKP-28BYJ-48-5V =>>
  • Драйвер для шагового двигателя купить драйвер на микросхеме ULN2003A =>>
  • Коммутационные провода купить провода и шлейфы папа-мама =>>
  • Источник питания для Arduino купить блок питания LJY-186 9V 1A для Arduino =>>
  • Корпус для Arduino купить корпус для платы Arduino =>>

Для реализации проекта подключения необходимо установить библиотеку Stepper_28BYJ в среду разработки Ардуино IDE.

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

Установить библиотеку Stepper_28BYJ в среду Arduino IDE Вам поможет статья «Установка библиотек в Arduino IDE» =>>

Сборка и подключение:

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

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

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

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

Загружаем скетч:

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

Скетч, который необходимо загрузить в контроллер через среду разработки Ардуино IDE:

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

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

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

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

Step motor 28byj 48 подключение к ардуино

Шаговые двигатели — основа точной робототехники. В отличие от двигателей постоянного вращения, один оборот «шаговика» состоит из множества микроперемещений, которые и называют шагами. Другими словами, мы можем повернуть вал двигателя ровно на 90 градусов, и зафиксировать его в этом положении. Грубым аналогом шагового двигателя является серводвигатель.

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

Робот-манипулятор и 3D-печать

Другим известным примером может служить ЧПУ станок. Взять тот же 3D-принтер. Для точного перемещения печатающей головки применяют именно шаговые двигатели. В старых дисководах шаговики использовались для перемещения магнитной головки. А в современных фотоаппаратах микро-миниатюрные шаговые двигатели перемещают линзы в объективе.

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

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

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

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

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

Конструкция для нашего проекта в сборе

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

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

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

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

«Шаговый двигатель 28BYJ-48-5V с драйвером на ULN2003» — Урок № 8

Скоро на моём канале в YOUTUBE появится новый урок «Шаговый двигатель 28BYJ-48-5V с драйвером на ULN2003».

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

Шаговый двигатель 28BYJ-48-5V с драйвером на ULN2003

  • Номинальное напряжение: 5 В
  • Угол шага 5,625 ° / 64
  • Передаточное отношение редуктора:1/64
  • Частота 100 Гц /> Сопротивление постоянному току 50Ω ± 7% (25 ℃)
  • Крутящий момент> 34.3mN.m (120 Гц)
  • Момент трения 600-1200 gf.cm
  • Класс изоляции 600VAC/1mA/1s
  • Шум
  • Размеры платы драйвера: 38mm X 30mm
  • Максимальный допустимый ток драйвера на 1 канал: 500mA

Шаговые двигатели применяют в механических системах точного позиционирования

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

  • ЧПУ станках,
  • 3-D принтерах,
  • принтерах,
  • роботах-манипуляторах.

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

Минимально возможный угол перемещения шагового двигателя, называется шагом.
Редуктор, с передаточным числом 1:64.(если быть точнее 1:63,68395) Это означает, что двигатель за один оборот осуществляет 4076 шагов.

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

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

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

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

Полношаговый режим.

  • 4 ступени импульсов на один шаг;
  • 32 шага за один оборот ротора.
  • Встроенный редуктор с передаточным числом 64(точнее 63,68395)
  • Получается около 2048 шагов
  • Угол шага 11,25 градуса.

Полношаговый режим

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

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

Полушаговый режим.

  • 8 ступеней импульсов на 1 шаг.
  • 64 шага за один оборот ротора.
  • Встроенный редуктор с передаточным числом 64(точнее 63,68395)
  • Получается около 4096 шагов(точнее 4075.7728395)
  • Угол шага 5,62 градуса.

полношаговый режим

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

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

Драйвер ULN2003 A

Цифровой вывод микроконтроллера выдает ток до ~40 мА, а одна обмотка 28BYJ-48 в пике потребляет ~320 мА, то есть, если подключить двигатель напрямую, микроконтроллер сгорит.
Для защиты был разработан модуль шагового двигателя ULN2003, в котором используется микросхема ULN2003A (состоящая из 7 ключей), которая позволяет управлять нагрузкой до 500 мА (один ключ).
Данный модуль может работать с 5 Вольтовым и 12 Вольтовым двигателем 28BYJ-48.

Модуль управления шаговым двигателем ULN2003

Схема ULN2003A

схема подключения ULN2003A

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

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

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

  • Stepper — стандартная библиотека, уже входит в Arduino IDE. Осуществляет только полношаговый режим коммутации.
  • CustomStepper
  • Stepper_28BYJ
  • AccelStepper

Файлы для скачивания внизу на этой странице.

Мы остановимся на AccelStepper, так как она более удобна для работы и обладает большими возможностями.

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

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

Функции библиотеки.

Для регулировки оборотов необходимо использовать линейный потенциометр на 10 кОм, подключается движком к А0, другие два вывода к +5 и GND.

Шаговый двигатель, управляемый платой
AccelStepper mystepper(DRIVER, step, direction);

Шаговый двигатель, управляемый Н-мостом
AccelStepper mystepper(FULL2WIRE, pinA, pinB);

Униполярный двигатель, управляемый транзисторами.
AccelStepper mystepper(FULL4WIRE, pinA1, pinA2, pinB1, pinB2);

Установка максимальной скорости (оборотов в минуту). Скорость по умолчанию очень низкая, так что её требуется переопределить. При движении шаговый двигатель будет ускоряться до этой максимальной скорости и замедляться при подходе к концу движения.
mystepper.setMaxSpeed(stepsPerSecond);

Установка ускорения, в шагах в секунду за секунду.
mystepper.setAcceleration(stepsPerSecondSquared);

Установить скорость (в шагах за секунду). Само движение запускается функцией runSpeed().
mystepper.setSpeed(stepsPerSecond);

Возвращает текущее абсолютное положение (в шагах)
mystepper.currentPosition(); .

Установить счетчик как текущую позицию. Полезно как задание нулевой координаты. Обнуляет текущую скорость до нуля.
mystepper.setCurrentPosition (long position);

Конечное положение в шагах
mystepper.targetPosition();

Вернуть расстояние до указанного положения. Может использоваться для проверки: достиг ли двигатель указанной конечной точки.
mystepper.distanceToGo();

Переместиться в абсолютно указанное положение. Само движение запускается функцией run().
mystepper.moveTo(long absolute);

Переместиться в относительно указанное положение. Само движение запускается функцией run(). Значение distance может быть больше или меньше нуля.
mystepper.move(long relative);

Начать движение с ускорением. Один шаг. Для продолжения движения следует вызывать функцию повторно как можно чаще — в loop() или иной функции.
mystepper.run();

Начать движение и подождать когда двигатель достигнет указанной точки. БЛОКИРУЮЩАЯ ФУНКЦИЯ — функция не прерывается, пока двигатель не остановится!
mystepper.runToPosition();

Начать движение с ускорением, до заданной позиции. БЛОКИРУЮЩАЯ ФУНКЦИЯ
mystepper.runToNewPosition();

Максимально быстрая остановка (без замедления), используя текущие параметры скорости и ускорения. Также задает новое конечное положение.
mystepper.stop();

Начать движение с текущей заданной скоростью (без плавного ускорения). Для продолжения движения двигателя следует вызывать функцию повторно как можно чаще.
mystepper.runSpeed();

Начать движение с текущей заданной скоростью (без плавного ускорения), до заданной позиции. БЛОКИРУЮЩАЯ ФУНКЦИЯ
mystepper.runSpeedToPosition();

Возвращает true, если ШД в режиме вращения.
mystepper.isRunning();

Деактивировать занятые пины и установить их в LOW. Снимает напряжение с обмоток двигателя, экономя энергию (вал при это может проворачиваться под внешними нагрузками)
mystepper.disableOutputs();

Активировать зарезервированные пины и устанавливает их в режим OUTPUT. Вызывается автоматически при запуске движения.
mystepper.enableOutputs();

Step motor 28byj 48 подключение к ардуино

Рассмотрим как подключить данный компактный и тихий шаговый двигатель 28BYJ-48 к ардуино. Через драйвер шаговика ULN2003 можно подключить любой шаговый двигатель, например, от факса, принтера, DVD привода.

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

  1. соединяем ардуино и драйвер: в ардуино цифровые контакты 2,3,4,5 подключаем к драйверу к контактам IN1, IN2, IN3, IN4.
  2. соединяем двигатель с драйвером. Гнездо и штеккер расчитаны друг на друга и перепутать невозможно.
  3. Заливаем скетч в ардуину и наслаждаемся

#include Stepper.h> const int stepsPerRevolution = 256; Stepper myStepper(stepsPerRevolution, 2, 4, 3, 5); void setup() < pinMode(2, OUTPUT); pinMode(3, OUTPUT); myStepper.setSpeed(70); Serial.begin(9600); > void loop() < Serial.println(«clockwise»); myStepper.step(stepsPerRevolution * 4); digitalWrite(2, LOW); //Для экономии энергии снимаем напряжение с контактов 2 и 3 digitalWrite(3, LOW); //Контакты по умолчанию были активны для удержания тяги на валу delay(2000); Serial.println(«counterclockwise»); myStepper.step(-stepsPerRevolution * 4); digitalWrite(2, LOW); digitalWrite(3, LOW); delay(2000); >

Оцените статью
TutShema
Добавить комментарий