Шаговый двигатель 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
- Шум <35dB (120 Гц, без нагрузки, 10 см)
- Размеры платы драйвера: 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.
Схема ULN2003A
Подключение к Arduino
Библиотеки для Управления
Для управления шаговыми двигателями часто используют 4 библиотеки.
- Stepper — стандартная библиотека, уже входит в Arduino IDE. Осуществляет только полношаговый режим коммутации.
- CustomStepper
- Stepper_28BYJ
- AccelStepper
Файлы для скачивания внизу на этой странице.
Мы остановимся на AccelStepper, так как она более удобна для работы и обладает большими возможностями.
Эта библиотека очень хорошо работает совместно с шаговым мотором 28BYJ-48 (мотор почти не греется), а также поддерживает ускорение, что позволяет заставить мотор вращаться быстрее. Библиотека использует код, не блокирующий шаги и включает немало других приятных особенностей.
Особенности AccelStepper
- Объектно-ориентированный интерфейс для 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();
FAQ — Шаговый двигатель 28BYJ-48 с драйвером ULN2003
Что такое шаговый двигатель 28BYJ-48?
28BYJ-48 — это четырёхфазный бесколлекторный шаговый двигатель с встроенным редуктором 1:64. Вал двигателя вращается дискретными шагами, что обеспечивает точное позиционирование. Используется в 3D-принтерах, ЧПУ станках, роботах и других механических системах.
Для чего нужен драйвер ULN2003?
ULN2003 — это модуль с микросхемой ULN2003A, состоящей из 7 ключей, который позволяет управлять шаговым двигателем с током до 500 мА на канал. Он защищает микроконтроллер от перегрузки, так как двигатель потребляет гораздо больше тока, чем способен выдать вывод Arduino.
В чем разница между полношаговым и полушаговым режимами?
В полношаговом режиме двигатель совершает меньше шагов за один оборот (например, около 2048 шагов), что даёт больший крутящий момент. В полушаговом режиме число шагов удваивается (около 4076 шагов за оборот), что повышает точность позиционирования, но каждый второй шаг имеет меньший крутящий момент.
Как подключить шаговый двигатель 28BYJ-48 к Arduino?
Подключение осуществляется через драйвер ULN2003. Выводы драйвера IN1–IN4 подключаются к цифровым пинам Arduino, питание VCC к 5 В, GND к земле. После этого можно управлять двигателем с помощью библиотек Arduino, таких как Stepper или AccelStepper.
Какие библиотеки использовать для управления двигателем?
Чаще всего используют 4 библиотеки: Stepper, CustomStepper, Stepper_28BYJ и AccelStepper. Рекомендуется AccelStepper, так как она поддерживает ускорение, замедление, работу с несколькими двигателями одновременно и не блокирует выполнение кода.
Какие особенности есть у библиотеки AccelStepper?
AccelStepper поддерживает объектно-ориентированный интерфейс для 2, 3 и 4-выводных шаговых двигателей, управление ускорением и скоростью, независимую работу нескольких двигателей, функции без блокировки кода, поддержку разных типов контроллеров и низких скоростей.
Можно ли управлять двигателем через потенциометр?
Да, скорость двигателя можно регулировать с помощью линейного потенциометра (например, 10 кОм), подключённого к аналоговому пину Arduino. Позицию потенциометра считывают через analogRead, а затем управляют скоростью движения шагового двигателя.