Подключение шагового двигателя к Arduino

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

Шаговый двигатель к Arduino подключают через драйвер: вывод платы тянет единицы-десятки миллиампер, а обмотке нужны сотни. Для 28BYJ-48 берут плату с ULN2003, для NEMA 17 — A4988 или DRV8825.

Схема подключения шагового двигателя к Arduino

Шаговый двигательArduino Uno
A+D8
A-D9
B+D10
B-D11

Схема из примера «Arduino Uno: шаговый двигатель без библиотеки».

Arduino Uno: шаговый двигатель без библиотеки

Открыть пример целиком

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

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

Код для Arduino

// Шаговый двигатель: четыре фазы, полный шаг.
//
// Выводы платы не умеют питать обмотки. В симуляторе фазы идут
// на плату напрямую ради наглядности; в железе между ними стоит драйвер
// (ULN2003 для 28BYJ-48, L298N, A4988).
//
// Две обмотки под током одновременно дают больший момент, чем одна.

const int PINS[4] = {8, 9, 10, 11};

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);
}

Скетч можно править и запускать в симуляторе без платы и установки среды.

Что учесть на Arduino

В железе

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

Частые ошибки при подключении к Arduino

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