Подключение шагового двигателя к ESP32
Биполярный шаговый двигатель
Шаговый двигатель к ESP32 подключают через драйвер: вывод платы не может питать обмотки. В симуляторе четыре фазы A+, A−, B+, B− идут на плату напрямую для простоты.
Схема подключения шагового двигателя к ESP32
| Шаговый двигатель | ESP32 |
|---|---|
| A+ | GPIO14 |
| A- | GPIO27 |
| B+ | GPIO26 |
| B- | GPIO25 |
Схема из примера «Шаговый двигатель».
Выводы Шаговый двигатель
| Вывод | Назначение |
|---|---|
| A+ | обмотка A, начало |
| A- | обмотка A, конец |
| B+ | обмотка B, начало |
| B- | обмотка B, конец |
Код для ESP32
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);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- Драйверы A4988 и DRV8825 управляются двумя выводами, STEP и DIR, это проще четырёх фаз и позволяет микрошаг. Для 28BYJ-48 берут ULN2003.
- Питание двигателя отдельное (5–12 В для 28BYJ-48, 8–35 В для NEMA 17), общая земля с ESP32 обязательна.
В железе
В симуляторе обмотки подключены к выводам напрямую — так видна последовательность шагов. В железе так нельзя: обмотке нужны сотни миллиампер, вывод даёт двадцать. Ставят драйвер: A4988 или DRV8825 (контроллер даёт STEP и DIR) для NEMA17, ULN2003 для маленького 28BYJ-48.
Частые ошибки при подключении к ESP32
- Подключить обмотки двигателя прямо к GPIO: плата перегревается, двигатель не вращается.
- Питать двигатель от 3V3: при движении плата перезагружается.
- Обмотки прямо на выводы контроллера — вывод выгорает, двигатель не крутится.
- Перепутаны пары обмоток — двигатель дрожит на месте. Пару находят мультиметром: между выводами одной обмотки — несколько ом.
- Скорость сразу большая — двигатель гудит и не трогается. Нужен разгон (AccelStepper).
- Ток драйвера не выставлен — двигатель и драйвер перегреваются. Подстроечный резистор на A4988 задаёт ток под паспорт двигателя.
Ещё по теме
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595ИК-приёмник (VS1838B)TFT ST7735 1,8″КнопкаПотенциометрПьезопищалкаСветодиодDS18B20Ползунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21DSN65HVD230