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

Скоро на моём канале в 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-5V с драйвером на ULN2003

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

Четырех фазный шаговый двигатель 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();

 

Подписывайтесь на канал и вы не пропустите новинки.

 
 
Вложенные файлы.
Скетч. Библиотеки.