Zpět na články

ESP32 + ESC + BLDC motor – ovládání brushless motoru

Jak připojit ESC a BLDC (brushless) motor k ESP32 a řídit jeho otáčky pomocí knihovny ESP32Servo.

ESP32 + ESC + BLDC motor – ovládání brushless motoru

Co je ESC a BLDC motor?

BLDC motor (brushless DC – bezkartáčový stejnosměrný motor) je typ motoru, který se používá v dronech, RC autech, letadlech a lodích. Oproti běžnému DC motoru má vyšší účinnost, výkon i životnost, protože nemá uhlíkové kartáče.

BLDC motor ale nelze ovládat přímo – potřebuje ESC (Electronic Speed Controller). ESC je řídicí jednotka, která přijímá signál z ESP32 a podle něj napájí tři fáze motoru ve správném pořadí a časování.

Zajímavé je, že ESC se ovládá stejným signálem jako servo– klasickým PWM pulsem o délce 1000–2000 µs. Proto můžeme použít knihovnu ESP32Servo, stejnou jako pro ovládání serv.

Jak funguje signál pro ESC

Při prvním zapnutí musí být hodnota signálu stejná nebo nižší než minimum 1 milisekunda. Tomu se říká „arming" (aktivace) ESC a motor to potvrdí pípnutím. Pokud je při zapnutí hodnota vyšší (tedy plyn nahoře), ESC motor nespustí dokud plyn nestáhnete na správné minimum. To je bezpečnostní pojistka – motor se nerozjede, pokud omylem necháte plyn nahoře.

  • 1000 µs = motor stojí (minimum / arming)
  • 1500 µs = poloviční otáčky
  • 2000 µs = plné otáčky (maximum)

Potřebné komponenty

  • ESP32
  • BLDC (brushless) motor
  • ESC (Electronic Speed Controller) odpovídající proudu motoru
  • LiPo baterie (podle napětí motoru – např. 3S = 11,1V)
  • Propojovací vodiče
⚠️ Bezpečnost především: Při prvním testu vždy odmontujte vrtuli nebo cokoliv připojeného k hřídeli. Brushless motory mají vysoký kroutící moment a při plných otáčkách mohou způsobit zranění.

Zapojení

ESC má tři strany – vstup napájení, výstup do motoru a řídicí kabel.

Řídicí kabel ESC (servo konektor se třemi vodiči) připojte takto:

  • Signální vodič (obvykle bílý nebo oranžový) na GPIO 13 ESP32
  • Zemnící vodič (černý nebo hnědý) na GND ESP32
  • Prostřední vodič (červený, +5V z BEC) nechte nezapojený, pokud napájíte ESP32 zvlášť přes USB

Napájecí strana ESC (dva silné vodiče, červený a černý) se připojuje k LiPo baterii – červený na +, černý na −.

Výstup ESC do motoru (tři vodiče) se připojuje ke třem vývodům BLDC motoru. Na pořadí těchto tří vodičů nezáleží – brushless motory jsou jako třífázové, takže pořadí vodičů ovlivní pouze směr otáčení. Pokud se motor točí opačně, prohoďte libovolné dva vodiče.

⚠️ Společná zem je nutná: GND ESC musí být propojen s GND ESP32, jinak signál nefunguje. Pokud napájíte ESP32 z BEC výstupu ESC (prostřední vodič), je zem propojena automaticky.
⚠️ Nikdy nenapájejte motor přímo z ESP32 – vždy použijte samostatnou LiPo baterii přes ESC.

Instalace knihovny

V Arduino IDE otevřete Library Manager, vyhledejte ESP32Servo a nainstalujte ji. Tato knihovna umí generovat přesný PWM signál pro serva i ESC na libovolném GPIO pinu ESP32.

Kód 1 – arming a základní ovládání

Nejjednodušší kód, který aktivuje ESC a roztočí motor na nízké otáčky:

servo.ino
1#include <ESP32Servo.h> 2 3Servo esc; 4 5#define ESC_PIN 13 6 7void setup() { 8 Serial.begin(115200); 9 10 // Nastavení PWM pro ESC (50 Hz, standardní pro serva/ESC) 11 esc.setPeriodHertz(50); 12 esc.attach(ESC_PIN, 1000, 2000); // min 1000 µs, max 2000 µs 13 14 // ARMING – pošli minimální signál a počkej 15 Serial.println("Aktivuji ESC (arming)..."); 16 esc.writeMicroseconds(1000); 17 delay(3000); // počkej na potvrzovací pípnutí 18 19 Serial.println("ESC připraven!"); 20} 21 22void loop() { 23 Serial.println("Nízké otáčky"); 24 esc.writeMicroseconds(1200); 25 delay(3000); 26 27 Serial.println("Střední otáčky"); 28 esc.writeMicroseconds(1500); 29 delay(3000); 30 31 Serial.println("Stop"); 32 esc.writeMicroseconds(1000); 33 delay(3000); 34}

Kód 2 – plynulé zrychlení a zpomalení

Postupné rozjíždění a zpomalování motoru (ramp up / ramp down):

servo.ino
1#include <ESP32Servo.h> 2 3Servo esc; 4 5#define ESC_PIN 13 6 7void setup() { 8 Serial.begin(115200); 9 10 esc.setPeriodHertz(50); 11 esc.attach(ESC_PIN, 1000, 2000); 12 13 // Arming 14 Serial.println("Aktivuji ESC..."); 15 esc.writeMicroseconds(1000); 16 delay(3000); 17 Serial.println("ESC připraven!"); 18} 19 20void loop() { 21 // Plynulé zrychlení z 0 na 50 % 22 Serial.println("Zrychluji..."); 23 for (int us = 1000; us <= 1500; us += 10) { 24 esc.writeMicroseconds(us); 25 delay(50); 26 } 27 28 delay(3000); // drž na 50 % 29 30 // Plynulé zpomalení zpět na 0 31 Serial.println("Zpomaluji..."); 32 for (int us = 1500; us >= 1000; us -= 10) { 33 esc.writeMicroseconds(us); 34 delay(50); 35 } 36 37 delay(3000); // stop 38}

Jak to funguje

ESP32 posílá přes knihovnu ESP32Servo PWM signál o frekvenci 50 Hz, kde šířka pulsu (1000–2000 µs) určuje požadované otáčky. ESC tento signál dekóduje a podle něj spíná tři fáze motoru ve správném pořadí a časování – tím vzniká rotující magnetické pole, které roztáčí rotor.

Funkce writeMicroseconds() posílá přesnou šířku pulsu v mikrosekundách, což je přesnější než klasické write() s úhlem. Pro ESC je to ideální, protože pracujeme přímo s délkou pulsu.

Kalibrace ESC (volitelné)

Každý ESC má trochu jiný horní a dolní bod. Pokud motor nereaguje v celém rozsahu potenciometru, proveďte kalibraci: při vypnutém napájení pošlete maximální signál (2000 µs), pak zapněte baterii, počkejte na pípnutí a stáhněte na minimum (1000 µs). ESC si tím zapamatuje krajní hodnoty.

Časté problémy

Motor se neroztočí, jen pípá
→ ESC čeká na arming – ověřte že na začátku posíláte 1000 µs po dobu 3 sekund
→ Zkontrolujte že plyn není při zapnutí nahoře

Motor se točí opačným směrem
→ Prohoďte libovolné dva ze tří vodičů mezi ESC a motorem

ESC pípá v pravidelných intervalech a motor nejede
→ Chybová signalizace – zkontrolujte napětí baterie a připojení
→ Různý počet pípnutí značí různé chyby (napětí mimo rozsah, plyn nahoře)

ESP32 se resetuje při rozjezdu
→ Nenapájejte ESP32 a motor ze stejného zdroje bez dostatečného proudu
→ Použijte samostatné napájení ESP32 přes USB

Motor cukne a zastaví se
→ ESC se „odzbrojí" pokud nedostává signál – posílejte PWM signál kontinuálně, i když jsou otáčky nulové

Možná rozšíření

  • Přidejte potenciometr pro ruční ovládání plynu (viz Kód 3)
  • Kombinujte s ESP-NOW – bezdrátové RC ovládání z druhého ESP32
  • Přidejte MQTT – ovládejte motor přes internet nebo mobilní appku
  • Postavte RC loď nebo auto – ESC + BLDC + servo řízení
  • Kombinujte s MPU-6050 – stabilizace dronu nebo balancujícího robota

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.