RisalDash RisalDash

Гайд · Моторы · Драйверы

Пять моторов, пять задач — выбираем правильно

Каждый движущийся проект начинается с одного вопроса: какой мотор? Честный ответ: реально вы встретите всего пять — серво, шаговый, коллекторный DC, мотор-редуктор TT и бесколлекторный (BLDC), и каждый выигрывает свою задачу. Разбираем, что чем движет, какой драйвер нужен каждому, рабочий код для всех пяти и правила подключения, сохраняющие плату живой.

ГайдМоторыСервоШаговыйBLDCESP32
Пять типов двигателей для Arduino и ESP32: серво, шаговый, DC, редуктор TT и BLDC
МоторУправлениеДрайверСилён вТиповая деталь
Сервоугол 0–180°не нужен (встроен)точные углы, 1 проводSG90 · MG90S · MG996R
Шаговыйточные шагиA4988 / DRV8825 / TMC2208позиционирование без энкодераNEMA 17
Коллекторный DCскорость + направлениеL298N / TB6612FNGбыстрое вращение, дёшевоRS-380/540
Редуктор TTскорость + направлениеL298N / TB6612FNGмомент на низких оборотах — колёсажёлтый TT-мотор
BLDCгаз через ESCESC (обязателен)мощность + КПД 90–95 %outrunner + ESC 30 А

1. Серво — угол по одному проводу

Серво содержит мотор, редуктор и замкнутое управление в одном корпусе: послали угол — он доехал и держит. Манипуляторы, поворот камер, защёлки замков, тяги RC-моделей. SG90 питается от 5 В — но больше одного (или что-то крупнее) питайте от отдельного 5 В источника, не от пина платы, с общей землёй:

Серво SG90 подключено к ESP32: 5V, GND и PWM-пин
Три провода — весь интерфейс это один PWM-пин. Собрано в BoardLab.
#include <ESP32Servo.h>          // Arduino UNO: #include <Servo.h>
Servo arm;
arm.attach(5);                    // one PWM pin is the whole interface
arm.write(90);                    // go to 90 degrees — that's it

2. Шаговый — точная позиция без энкодера

Шаговик движется фиксированными шагами (1.8° у NEMA 17), поэтому знает, где находится, без обратной связи — потому на них ездят 3D-принтеры, ЧПУ и камера-слайдеры. Ему всегда нужен драйвер (A4988/DRV8825; TMC2208 — тихий), отдельное питание мотора 8–35 В и общая земля с платой. Микрошаг (MS1–MS3) сглаживает ход:

#include <AccelStepper.h>        // smooth accel/decel — the go-to library
AccelStepper motor(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
motor.setMaxSpeed(800);           // steps/s
motor.setAcceleration(400);
motor.moveTo(2000);               // absolute position in steps
// loop(): motor.run();           // call every loop — non-blocking

3 и 4. Коллекторный DC и редуктор TT — один драйвер, разная передача

Голый коллекторный мотор крутится быстро при малом моменте; жёлтая версия с редуктором TT меняет скорость на момент (30–300 об/мин) — ровно то, что нужно колёсам, поэтому все бюджетные робо-машинки ездят на TT. Управляются оба одинаково через H-мост: два пина задают направление, PWM на ENA — скорость. L298N — классика; TB6612FNG делает то же холоднее:

// Brushed DC / TT gear motor via L298N: direction on IN1/IN2, speed on ENA (PWM).
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);           // swap the two to reverse
analogWrite(ENA, 180);            // 0..255 — more duty, more speed

5. BLDC — уровень мощности

У бесколлекторников нет щёток — нечему искрить и изнашиваться, КПД 90–95 %, мощность серьёзная — дроны, электросамокаты, RC-самолёты. Плата за это: они трёхфазные и обязаны работать через ESC. Приятный сюрприз — код: ESC слушает те же импульсы 1000–2000 мкс, что и серво, и всегда армируйте на минимальном газе:

// A BLDC talks to its ESC with the same 1000-2000 us pulse a servo uses.
#include <ESP32Servo.h>
Servo esc;
esc.attach(9, 1000, 2000);        // min/max pulse in microseconds
esc.writeMicroseconds(1000);      // ARM at minimum first — always!
delay(3000);
esc.writeMicroseconds(1300);      // ~30 % throttle

⚠ Подбирайте ток ESC и KV мотора под нагрузку и сверяйте совместимость с батареей — 3S LiPo — обычная стартовая точка.

Управляйте ими с дашборда

Все пять сводятся к «задать число из UI»: слайдер — угол серво или скорость DC, number — позиция шаговика, джойстик / d-pad — двухмоторный робот — всё это готовые виджеты RisalDash, управление с телефона через собственный Wi-Fi платы, и каждый — ещё и MCP-tool для ИИ-агента. Шаблоны GarageDoor, CNCMachine и Printer3D показывают моторные UI целиком.

Правила, спасающие платы

Никогда не питайте мотор от пина 3.3/5 В — у мотора своё питание, у платы своё, общая только земля. Голым DC-моторам — flyback-защита (на платах драйверов она есть). А если плата перезагружается при старте мотора — это brownout; вот лечение.

Набросайте подключение мотора до пайки — и рулите им с телефона.