Шаговый мотор 28BYJ-48
1
2
3
4
5
6
IN1
IN2
IN3
IN4
-
+
- Первая обмотка
- Вторая обмотка
- Третья обмотка
- Четвертая обмотка
- Общий вывод (GND)
- Питание (+5V ... +12V)
  • Для управления работой шагового мотора используется драйвер ULN2003. Драйвер имеет четыре вывода для управления каждой обмоткой мотора и два вывода для питания.
  • В отличии от сервомоторов шаговые моторы дешевле, не имеют обратной связи и в целом более просты в эксплуатации. При повышении нагрузки или слишком большом ускорении возможно проскальзывание и накопление ошибки позиционирования.
  • Одна из основных характеристик шагового мотора - количество шагов на полный оборот вала. В нашем случае - это 2048.
  • Существует большое количество готовых библиотек для управления шаговым двигателем: <Stepper.h>, <Stepper_28BYJ_48.h> . В примере будет рассмотрено использование библиотеки <AccelStepper.h>.
Типовая схема подключения
Методы библиотеки AccelStepper
Стандартная библиотека управления шаговыми моторами <AccelStepper.h>.
AccelStepper mystepper (mode, IN1, IN2, IN3, IN4); - создание объекта класса. mode=4 - полношаговый, mode=8 - полушаговый.
.setMaxSpeed (maxSpeed); - установка максимальной скорости.
.setAcceleration(acc); - установка ускорения в шагах в секунду
.moveTo (targetPosition); - переместиться в абсолютно указанное положение. Само движение запускается функцией run ().
.move (distance); - переместиться в относительно указанное положение. Значение distance может быть больше или меньше нуля.
.currentPosition (); - возвращает текущее абсолютное положение.
.distanceToGo (); - расстояние до указанного положения. Может использоваться для проверки, достиг ли моторчик указанной конечной точки.
.run (); - начать движение. Для продолжения движения двигателя следует вызывать функцию повторно.
.runToPosition (); - начать движение и подождать когда двигатель достигнет указанной точки.
.setSpeed (stepsPerSecond); - Установить скорость в шагах за секунду. Сам процесс запускается функцией runSpeed ().
.runSpeed (); - начать движение.
Больше информации в документации к библиотеке.
Пример кода
// подключение библиотеки
#include <AccelStepper.h>
// создаем экземпляр AccelStepper
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
AccelStepper s28BYJ(8, IN1, IN3, IN2, IN4);

void setup(){
  s28BYJ.setMaxSpeed(1000.0);
  s28BYJ.setAcceleration(200.0);
  s28BYJ.setSpeed(200);
  s28BYJ.moveTo(4000);
}

void loop(){
  // Изменяем направление, если пройдено заданное число шагов
  if(s28BYJ.distanceToGo()==0)
    s28BYJ.moveTo(-s28BYJ.currentPosition());
  s28BYJ.run();
}