Работа с шаговым мотором 28BYJ-48 и драйвером ULN2003

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 14 мая 2019, 19:45

Сегодня вы узнаете о четырехфазном шаговом двигателе 28BYJ-48, работающим от постоянного напряжения 5 Вольт. Также существует его модификация на 12 Вольт. Двигатель потребляет значительный ток, а это значит, что мы не можем подключить его напрямую к выводам Arduino. Воспользуемся для этого драйвером двигателя на микросхеме ULN2003.

мотор 28BYJ-48 и драйвер ULN2003.jpg
мотор 28BYJ-48 и драйвер ULN2003
мотор 28BYJ-48 и драйвер ULN2003.jpg (83.86 КБ) 2809 просмотров


Технические параметры двигателя 28BYJ-48

Модель: 28BYJ-48
Тип двигателя: Униполярный
Напряжение питания: 5 Вольт, DC
Количество фаз: 4
Частота: 100 Гц
Сопротивление: 50Ω ± 7% (при 25 ℃)

Общие сведения о движке

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

Принципиальная схема четырехфазного шагового двигателя 28BYJ-48.png
Принципиальная схема четырехфазного шагового двигателя 28BYJ-48
Принципиальная схема четырехфазного шагового двигателя 28BYJ-48.png (27.7 КБ) 2809 просмотров


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

motor-28byj.jpg
motor-28byj.jpg (59.35 КБ) 2809 просмотров


На рисунке видно, что внутри расположен редуктор, с примерным передаточным числом в 1:64, если быть точнее 1:63,68395. Это значит, что двигатель за один оборот осуществляет 4075.7728395 шага. Данный двигатель поддерживает полушаговый режим и за один полный оборот может совершать 4076 шага, а точнее за 1° делает примерно 11,32 шага. (4076 / 360 = 11,32).

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

Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения.

Полушаговый режим — за 1 такт, ротор делает ½ шага.
Полношаговый режим — за 1 такт, ротор делает 1 шаг.

Ниже представлены таблицы последовательности тактов:

таблица последовательности тактов 1.png
таблица последовательности тактов 1.png
таблица последовательности тактов 1.png (11.37 КБ) 2809 просмотров


таблица последовательности тактов 2.png
таблица последовательности тактов 2.png
таблица последовательности тактов 2.png (9.35 КБ) 2809 просмотров


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

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

Модуль управления шаговым двигателем ULN2003.jpg
Модуль управления шаговым двигателем ULN2003
Модуль управления шаговым двигателем ULN2003.jpg (82.08 КБ) 2809 просмотров


С принципиальной схемой модуля ULN2003 можно ознакомиться на рисунке ниже

принципиальная схема модуля ULN2003.png
принципиальная схема модуля ULN2003
принципиальная схема модуля ULN2003.png (19.76 КБ) 2809 просмотров


Назначение X1

IN1 . . . IN7: Вход 1 … 7

Назначение X2

1 — GND: «-» питание модуля
2 — Vcc: «+» питание модуля (5В или 12В)
3 — Vcc: «+» питание модуля (перемычка, только при 5В)
4 — Vcc: «+» питание модуля (перемычка, только при 5В)

Назначение X3

A . . . G: Выход 1 … 7

Назначение X4

1 — Питание
2 — A
3 — B
4 — C
5 — D

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

Необходимые детали:

Arduino UNO R3 x 1 шт.
Модуль драйвера шагового двигателя ULN2003 x 1 шт.
Шаговый двигатель 28BYJ-48-5V (5В) x 1 шт.
Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
Кабель USB 2.0 A-B x 1 шт.

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

В данном примере используется модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V. Схема довольно простая, необходимо всего 6 проводов. Вначале подключаем интерфейсные провода, IN1 (ULN2003) в 11 (Arduino UNO), IN2 (ULN2003) в 10 (Arduino UNO), IN3 (ULN2003) в 9 (Arduino UNO) и IN4 (ULN2003) в 8 (Arduino UNO). Остается подключить питание GND к GND и VCC к VIN (не для постоянного использовании). Подключим разъем двигателя в модуль ULN2003. Схема собрана, теперь надо подготовить программную часть.

модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V.png
модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V
модуль ULN2003, Arduino UNO R3 и двигатель 28BYJ-48-5V.png (59.41 КБ) 2809 просмотров


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

Пример программы для работы с двигателем 28BYJ-48

Код: Выделить всё

#include <CustomStepper.h>            // Подключаем библиотеку CustomStepper
CustomStepper stepper(2, 3, 4, 5);  // Указываем пины, к которым подключен драйвер шагового двигателя
boolean rotate1 = false;              // Переменная для смены режимов
boolean rotatedeg = false;            // Переменная для смены режимов
boolean crotate = false;              // Переменная для смены режимов                

void setup()
{
  stepper.setRPM(10);                 // Устанавливаем количество оборотов в минуту
  stepper.setSPR(4075.7728395);       // Устанавливаем колочество шагов на полный оборот. Максимальное значение 4075.7728395
}

void loop()
{
  if (stepper.isDone() &&  rotate1 == false)  
  
{
    stepper.setDirection(CCW);        // Устанавливает направление вращения (по часовой)
    stepper.rotate(2);                // Устанавливает вращение на заданное количество оборотов
    rotate1 = true;
  }
  if (stepper.isDone() && rotate1 == true && rotatedeg == false)
  {
    stepper.setDirection(CW);         // Устанавливает направление вращения (против часовой)
  //  stepper.rotateDegrees(90);        // Поворачивает вал на заданное кол-во градусов
    stepper.rotate(2);                // Устанавливает вращение на заданное количество оборотов
    rotatedeg = true;
  }
  if (stepper.isDone() && rotatedeg == true && crotate == false)
  {
    stepper.setDirection(CCW);        // Устанавливает направление вращения (по часовой)
    stepper.rotate();                 // Будет вращать пока не получит команду о смене направления или STOP
    crotate = true;
  }
  stepper.run();                      // Этот метод обязателен в блоке loop. Он инициирует работу двигателя, когда это необходимо


Как реализована работа с двигателем.

Изначально в библиотеке назначаются какие-либо инструкции, которые должен выполнить двигатель (например, сделать три оборота двигателем), обработкой этих инструкций осуществляется командой stepper.run();, после того как все инструкции выполнены isDone вернет true(истина). То есть если двигатель еще крутится вернется false (лож) или если двигатель прекратил движение вернется true(истина).
_https://smartmodules.ru/arduino-28byj48-uln2003
[center]i love you [s]mxIni[/s] Mysql[/center]


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Аппаратная часть»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 3 гостя