Atelier.

atelier · lecții

Lecția 10 25 min începător 3 întrebări quiz

Motoare DC — cum le pornești și le oprești cu ESP32

PWM, driver H-bridge L9110, de ce nu poți conecta motorul direct la pin ESP32. Și cum faci o mașină să meargă înainte/înapoi/stop.

Ce înveți

  • De ce ESP32 nu poate alimenta direct un motor (curent prea mare)
  • Ce face un driver H-bridge — schimbă direcția fără să schimbi cablajele
  • Cum scrii PWM 0-255 pe ESP32 cu `ledcWrite` (sau `analogWrite` pe noile core-uri)
  • Cum testezi un motor singur înainte să-l montezi

De ce nu poți conecta motorul direct

Un motor DC are nevoie de curent mare (sute de miliamperi) ca să se învârtă. Un pin de ESP32 poate da maxim 12 mA — abia destul pentru un LED.

Dacă conectezi motorul direct la pin, arzi pinul. Iremediabil. ESP32 are 30+ pini, dar dacă-l arzi pe ăla, gata cu pinul ăla. La a doua eroare, ai 28.

Soluția: driver H-bridge

Un H-bridge e un circuit cu 4 tranzistori care pot trimite curent prin motor într-o direcție SAU în direcția opusă. Driverul L9110 (sau L298N, sau DRV8833) încapsulează asta într-un modul mic.

ESP32 GPIO  →  L9110 IA, IB  →  H-bridge  →  Motor
   (3.3V, 5mA)   (semnal)         (12V, 500mA)    (învârtire)

Logica L9110

Driverul L9110 are 2 canale (poate controla 2 motoare independent). Fiecare canal are 2 pini de intrare — IA și IB:

IAIBMotor
LOWLOWStop (frână)
HIGHLOWForward (viteză maximă)
LOWHIGHBackward (viteză maximă)
PWMLOWForward la viteză PWM/255
LOWPWMBackward la viteză PWM/255

Cod minim pentru o roată

const int MOTOR_IA = 25;   // ESP32 GPIO → L9110 IA
const int MOTOR_IB = 26;   // ESP32 GPIO → L9110 IB

void setup() {
  pinMode(MOTOR_IA, OUTPUT);
  pinMode(MOTOR_IB, OUTPUT);
}

void forward(int viteza) {  // viteza = 0..255
  analogWrite(MOTOR_IA, viteza);
  digitalWrite(MOTOR_IB, LOW);
}

void backward(int viteza) {
  digitalWrite(MOTOR_IA, LOW);
  analogWrite(MOTOR_IB, viteza);
}

void stop() {
  digitalWrite(MOTOR_IA, LOW);
  digitalWrite(MOTOR_IB, LOW);
}

Pentru CART-K — 4 motoare miniatur

Mini-cart-ul are 4 motoare N20 (cele mai mici motoare cu reductor pe care le poți lipi): câte unul pentru fiecare din cele 4 roți. 4WD complet.

De ce 4 motoare și nu 2?

  • Roata din față fără motor = roată „moartă” care încetinește mașinuța
  • 4WD = mai bun pe podea cu obstacole mici (cabluri, paharul căzut)
  • Mai mult cuplu la pornire — accelerare mai vie
  • Arată ca o mașinuță reală, nu ca un robot cu coadă

Cum legi 4 motoare la un singur driver L9110 cu 2 canale

              CANAL A (stânga)         CANAL B (dreapta)
              ┌──────────────┐         ┌──────────────┐
ESP32 GPIO 4 ─┤IA          OA1├─ Motor stâng-față   ↗ OB1├─ Motor drept-față
ESP32 GPIO 5 ─┤IB          OA2├─ Motor stâng-spate  ↗ OB2├─ Motor drept-spate
              └──────────────┘         └──────────────┘
                  Curent ~600mA            Curent ~600mA
                  (2 N20 în paralel)

Truc: lipești cele 2 motoare de pe aceeași parte (stânga-față + stânga-spate) în paralel — adică firul roșu de la motor 1 și firul roșu de la motor 2 merg împreună la OA1. La fel negre la OA2. Driverul L9110 nu știe că sunt 2 motoare — îi pare un singur motor mai puternic.

Tabelul tank drive (4WD ediție mini)

MișcareCanal A (stânga)Canal B (dreapta)
Înainteforwardforward
Înapoibackwardbackward
Virează stângastopforward
Virează dreaptaforwardstop
Spin pe loc dreaptabackwardforward
Spin pe loc stângaforwardbackward

Spin pe loc = vârtejul de la power-up portocaliu. Cele 2 părți se învârt în direcții opuse → mașinuța se învârte pe loc. Imposibil la o mașină cu direcție clasică Ackermann; ușor la tank drive.

N20 vs TT — cum alegi motorul

N20 (folosit la CART-K)TT yellow (kit standard)
Dimensiune12×10×24mm70×22×18mm
Greutate10g30g
Tensiune3-9V3-6V
ReductorMetalicPlastic
Preț~10 RON~5 RON
Aspect mașinăMini, realRobotic, mare

TT-ul e mai ieftin și mai accesibil, dar N20 face o mașinuță care arată de 5 ori mai mică. Pentru CART-K mini, N20 e singura alegere.

Pas următor

Lecția 12: cum primești comenzi de la telefon prin WiFi → ESP32 → motoare.

După lecția asta, poți

  • Cablezi orice motor DC la driverul L9110 fără să greșești polaritatea
  • Controlezi viteza motorului din cod (nu doar pornit/oprit)
  • Faci o mașină să meargă forward, backward, virează, oprește — cu un cod simplu