Технические параметры двигателя 28BYJ-48
Модель: 28BYJ-48
Тип двигателя: Униполярный
Напряжение питания: 5 Вольт, DC
Количество фаз: 4
Частота: 100 Гц
Сопротивление: 50Ω ± 7% (при 25 ℃)
Общие сведения о движке
4-х фазный шаговый двигатель 28BYJ-48 — это бесколлекторный двигатель, имеющий дискретное перемещение (вращение вала осуществляется шагами). На роторе (валу), расположен магнит, а вокруг него находятся катушки. Подавая поочередно ток на эти катушки, создается магнитное поле, которое отталкивает или притягивает магнитный вал, заставляя двигатель вращаться. Такая конструкция позволяет с большой точностью управлять валом, относительно катушек. Принципиальная схема четырехфазного шагового двигателя 28BYJ-48 приведена ниже.
Двигатель называется четырех фазным, из-за того, что в нем содержится две обмотки, которые, в свою очередь, разделены на четыре. (Это отражено на схеме выше). Центральные отводы катушек подключены вместе и служат для питания двигателя. Так как каждая обмотка подключена к питанию, такие двигатели называют униполярными. На роторе 28BYJ-48 расположено 8 магнитов, с чередующимися полюсами (то есть, четыре магнита с двумя полюсами).
На рисунке видно, что внутри расположен редуктор, с примерным передаточным числом в 1:64, если быть точнее 1:63,68395. Это значит, что двигатель за один оборот осуществляет 4075.7728395 шага. Данный двигатель поддерживает полушаговый режим и за один полный оборот может совершать 4076 шага, а точнее за 1° делает примерно 11,32 шага. (4076 / 360 = 11,32).
Режимы работы двигателя:
Чаще всего, при использовании шагового двигателя 28BYJ 48, используют два режима подключения.
Полушаговый режим — за 1 такт, ротор делает ½ шага.
Полношаговый режим — за 1 такт, ротор делает 1 шаг.
Ниже представлены таблицы последовательности тактов:
Модуль управления шаговым двигателем ULN2003:
Цифровой вывод микроконтроллера выдает ток до ~40 мА, а одна обмотка 28BYJ-48 в пике потребляет ~320 мА, то есть, если подключить двигатель напрямую, микроконтроллер сгорит. Для защиты был разработан модуль шагового двигателя ULN2003, в котором используется микросхема ULN2003A (состоящая из 7 ключей), которая позволяет управлять нагрузкой до 500 мА (один ключ). Данный модуль может работать с 5 Вольтовым и 12 Вольтовым двигателем 28BYJ-48. Для переключения необходимо установить или убрать перемычку (по умолчанию перемычка установлена на питание 5 Вольт).
С принципиальной схемой модуля ULN2003 можно ознакомиться на рисунке ниже
Назначение 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. Схема собрана, теперь надо подготовить программную часть.
Для вращения двигателя по часовой и против часовой стрелки, используется библиотека 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