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:
| IA | IB | Motor |
|---|---|---|
| LOW | LOW | Stop (frână) |
| HIGH | LOW | Forward (viteză maximă) |
| LOW | HIGH | Backward (viteză maximă) |
| PWM | LOW | Forward la viteză PWM/255 |
| LOW | PWM | Backward 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șcare | Canal A (stânga) | Canal B (dreapta) |
|---|---|---|
| Înainte | forward | forward |
| Înapoi | backward | backward |
| Virează stânga | stop | forward |
| Virează dreapta | forward | stop |
| Spin pe loc dreapta | backward | forward |
| Spin pe loc stânga | forward | backward |
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) | |
|---|---|---|
| Dimensiune | 12×10×24mm | 70×22×18mm |
| Greutate | 10g | 30g |
| Tensiune | 3-9V | 3-6V |
| Reductor | Metalic | Plastic |
| Preț | ~10 RON | ~5 RON |
| Aspect mașină | Mini, real | Robotic, 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