Главная → Моторы и приводы

Шаговый двигатель 28BYJ-48 с драйвером ULN2003: обзор и подключение

19 сентября 2026 · Моторы и приводы

Шаговый двигатель 28BYJ-48 и плата драйвера ULN2003 с проводами на рабочем столе

Если нужно повернуть вал строго на заданный угол — шторка, задвижка, дозатор корма — берите шаговый мотор. Самый доступный вариант из наборов Arduino — 28BYJ-48: редукторный мотор с платкой драйвера ULN2003 в комплекте. Пара стоит втрое дешевле сервопривода, а точность выше: 4096 полушагов на оборот, то есть 0,088° на полушаг.

Обратная сторона — скорость: внутри редуктор 1:64, реально выжать 7–15 об/мин. Зато позиционирование точное. Разбираем паспорт, подключение и почему без ULN2003 мотор включать нельзя.

Что внутри и что говорит паспорт

28BYJ-48 — униполярный четырёхфазный шаговый мотор: четыре обмотки с общей точкой (красный провод), примерно 82 мА на фазу при 5 В. Диаметр корпуса 28 мм, наружу выходят пять проводов. Редуктор 1:64: ротор шагает по 5,625°, вал — в 64 раза меньше, по 0,088°. Запись «stride angle 5.625°/64» в паспорте — угол ротора и передаточное число, а не угол вала.

Параметр Значение (datasheet 28BYJ-48, 5 В)
Номинальное напряжение 5 В DC
Число фаз 4
Передаточное отношение 1/64
Угол шага 5,625°/64 (0,088° на валу)
Сопротивление обмотки 50 Ом ±7 % (25 °C)
Частота (номинал) 100 Гц
Частота втягивания, без нагрузки > 600 Гц
Частота выпадения, без нагрузки > 1000 Гц
Момент втягивания > 34,3 мН·м (120 Гц)
Момент самопозиции (удержание) > 34,3 мН·м
Момент трения 600–1200 gf·см
Pull in torque 300 gf·см
Нагрев < 40 K (120 Гц)
Шум < 35 дБ (120 Гц, без нагрузки, 10 см)
Сопротивление изоляции > 10 МОм (500 В)
Класс изоляции A

Ток фазы считается прямо из паспорта: 5 В на обмотку 50 Ом даёт потолок 100 мА, за вычетом падения на ключе ULN2003 — около 82 мА на канал. Включённая обмотка рассеивает 0,41 Вт, поэтому тёплый корпус — норма, а обжигающий — признак того, что мотор забыли обесточить.

ULN2003: почему без него нельзя

Пин микроконтроллера выдаёт 20–40 мА — обмотке мало, порт выгорит. ULN2003A — семь Дарлингтон-ключей с открытым коллектором: единица на входе — выход подтягивается к GND и замыкает обмотку. Красный провод сидит на +5 В, фазы закорачиваются на землю по очереди. Выбросы самоиндукции гасят встроенные защитные диоды, внешние элементы не нужны.

Параметр Значение (datasheet TI ULN2003A)
Каналов 7 Дарлингтонов
Ток канала до 500 мА (600 мА пик)
Выходное напряжение 50 В
VCE(sat) при 100 мА 0,9–1,1 В
Вход TTL/CMOS 5 В и 3,3 В
Защитные диоды на каждом выходе

Запас по току шестикратный: 82 мА фактических против 500 мА лимита. Четыре фазы занимают четыре канала из семи, остальные свободны.

Подключение к Arduino и ESP32

Разъём мотора вставляется в гнездо платы ULN2003 (ключ не даст перепутать), от платы к контроллеру идут шесть проводов: четыре входа, земля и плюс питания.

Arduino UNO / ESP32         Плата ULN2003
-------------------         -------------
D8  / GPIO25   --------->  IN1
D9  / GPIO26   --------->  IN2
D10 / GPIO27   --------->  IN3
D11 / GPIO14   --------->  IN4
GND            --------->  GND (минус)
5 В            --------->  «+» (5–12 В)

Плюс на плате — общий провод мотора (красный), минус — земля. Питание — от 5 В Arduino или отдельного блока: от 3,3-вольтовой шины ESP32 мотор не поедет, катушкам нужны честные 5 В по 82 мА на фазу. Земли контроллера и драйвера соединяются всегда.

Код: полный шаг, полушаг и сколько это оборотов

Классическая таблица полушага — восемь состояний четырёх фаз. Пауза между шагами задаёт скорость: 2 мс — около 7 об/мин, 1 мс — предельные 15.

// Пины в порядке фаз A, B, C, D
// Arduino UNO: 8, 9, 10, 11
// ESP32:       25, 26, 27, 14
const uint8_t PINS[4] = {8, 9, 10, 11};

// Таблица полушага: состояния пинов A, B, C, D
const uint8_t HALFSTEP[8] = {
  0b1000,  // A
  0b1100,  // A + B
  0b0100,  // B
  0b0110,  // B + C
  0b0010,  // C
  0b0011,  // C + D
  0b0001,  // D
  0b1001   // D + A
};

const unsigned int STEPS_PER_REV = 4096; // 5,625°/64

void halfStep(int dir, unsigned int steps, int pauseMs) {
  static int phase = 0;
  for (unsigned int i = 0; i < steps; i++) {
    phase = (phase + dir + 8) % 8;
    for (int p = 0; p < 4; p++)
      digitalWrite(PINS[p], (HALFSTEP[phase] >> (3 - p)) & 1);
    delay(pauseMs);                    // 2 мс ~ 7 об/мин
  }
}

void motorOff() {                      // снять ток с обмоток
  for (int p = 0; p < 4; p++) digitalWrite(PINS[p], LOW);
}

void setup() {
  for (int p = 0; p < 4; p++) pinMode(PINS[p], OUTPUT);
}

void loop() {
  halfStep(+1, STEPS_PER_REV, 2);      // оборот вправо
  delay(500);
  halfStep(-1, STEPS_PER_REV / 4, 2);  // четверть обратно
  motorOff();
  delay(3000);
}

Для ESP32 поменяйте пины на {25, 26, 27, 14}: логика та же, 3,3 В на входах ULN2003A достаточно. Крутится не туда — смените знак dir или порядок пинов.

Сколько выдержит: скорость и момент

Паспортные частоты означают: без потери шагов мотор стартует до 600 полушагов в секунду (около 9 об/мин), срыв наступает после 1000 Гц (15 об/мин). Надёжный режим — 2–3 мс на полушаг. Момент втягивания и удержание — больше 34,3 мН·м при 120 Гц: застопоренный вал держит нагрузку сам. Тугой хруст при вращении рукой — момент трения 600–1200 gf·см. Если мотор гудит под нагрузкой — снизьте скорость: выше 120 Гц момент падает.

Частые ошибки

Итог: 28BYJ-48 с ULN2003 — самый дешёвый способ точного позиционирования. Когда нужен угол по сигналу без счёта шагов — ближе сервопривод; просто включать и выключать нагрузку — проще реле из обзора реле на 1, 2 и 4 канала. А в умной розетке на ESP32 то же реле уже переключается из браузера.

Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.

Читайте дальше

Контроллеры

Плата STM32 Blue Pill на STM32F103C8T6: обзор и подключение

Что это за плата Blue Pill — народное название дешёвой отладочной платы на STM32F103C8T6: плитка ~53×23 мм с шагом выводов 2,54 мм,…

Читать обзор →
Дисплеи

Цветной TFT-дисплей 1.8″ на ST7735: обзор и подключение

Экран 16×2 показывает только готовые символы из своей прошивки. Этот модуль — другой жанр: 128×160 = 20 480 пикселей, и каждый закрашивается…

Читать обзор →
Готовые проекты

Умная розетка на ESP32 и реле: делаем сами, управляем из браузера

Что это за проект Делаем розетку, которую включают и выключают из браузера. Внутри — плата на ESP32-WROOM-32 и реле Songle SRD-05VDC-SL-C. Логика…

Читать обзор →