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:
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):
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
