Скоро на моём канале в YOUTUBE появится новый урок "Шаговый двигатель 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
Подключение шагового двигателя к Ардуино
Для управления шаговыми двигателями часто используют 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();