Шаговый двигатель: подключение к ESP32 и Arduino

Биполярный шаговый двигатель

Поворачивается точными шагами — 200 на оборот у типичного NEMA17. Для 3D-принтеров, ЧПУ и поворотных механизмов.

Как работает

У биполярного шагового двигателя две обмотки — A и B. Подавая ток на них по очереди и в нужном направлении, вал поворачивают на один шаг: типично 1,8°, то есть 200 шагов на оборот. Скорость задаёт частота шагов, направление — порядок.

Библиотеки: Stepper (встроенная, простая) и AccelStepper — с разгоном и торможением, без которых двигатель на больших скоростях пропускает шаги.

Выводы

ВыводНазначение
A+обмотка A, начало
A-обмотка A, конец
B+обмотка B, начало
B-обмотка B, конец

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

Шаговый двигательESP32
A+GPIO14
A-GPIO27
B+GPIO26
B-GPIO25

Схема из примера «Шаговый двигатель».

Шаговый двигатель

Открыть пример целиком
Код скетча
const int PINS[4] = {14, 27, 26, 25};

// Полношаговая последовательность: две обмотки под током одновременно.
const int SEQ[4][4] = {
  {1, 1, 0, 0},
  {0, 1, 1, 0},
  {0, 0, 1, 1},
  {1, 0, 0, 1},
};

void step(int phase) {
  for (int i = 0; i < 4; i++) digitalWrite(PINS[i], SEQ[phase][i]);
}

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

void loop() {
  for (int i = 0; i < 200; i++) { step(i % 4); delay(5); }   // оборот вперёд
  delay(500);
  for (int i = 200; i > 0; i--) { step(i % 4); delay(5); }   // и назад
  delay(500);
}

В железе

В симуляторе обмотки подключены к выводам напрямую — так видна последовательность шагов. В железе так нельзя: обмотке нужны сотни миллиампер, вывод даёт двадцать. Ставят драйвер: A4988 или DRV8825 (контроллер даёт STEP и DIR) для NEMA17, ULN2003 для маленького 28BYJ-48.

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

Другие детали