Bürstenloser Motor (BLDC) mit Arduino & ESC steuern: Schritt-für-Schritt
Einführung
In diesem Tutorial lernen Sie, einen bürstenlosen DC-Motor (BLDC) mit Arduino und ESC (Electronic Speed Controller) zu steuern. Für Details zum BLDC-Funktionsprinzip siehe verwandten Artikel oder Video.
Hardware-Übersicht
Verwendeter Outrunner-BLDC:
- KV-Rating: 1000 (Drehzahl pro Volt unbelastet)
- Spannung: 2S–4S LiPo (7,4–14,8 V)
- Benötigter ESC: 30 A
Beispiel: 3S LiPo (11,1 V) → max. 11.100 RPM (1000 × 11,1).
ESC: 3 Phasen-Drähte zum Motor, VCC/GND für Akku. Zusätzliche 3 Drähte: Signal, +5 V (BEC), GND. BEC (Battery Eliminator Circuit) liefert 5 V für Arduino → keine separate Arduino-Stromversorgung nötig.
Steuersignal identisch mit Servo: 50 Hz PWM, Pulsbreite 1–2 ms (1 ms = Min, 2 ms = Max RPM).
Schaltplan
Zusätzlich: Potentiometer an A0 für Drehzahlregelung.
Benötigte Bauteile
- BLDC Motor (z. B. 1000 KV Outrunner)
- 30 A ESC (passend zum Motor)
- LiPo Akku (2S–4S laut Motor)
- Arduino Board
- Potentiometer (10 kΩ)
- Steckbrett & Jumper-Kabel
Arduino Code für BLDC Steuerung
/* Arduino Brushless Motor Control
* by Dejan, https://howtomechatronics.com
*/
#include <Servo.h>
Servo ESC; // Servo-Objekt für ESC
int potValue;
void setup() {
ESC.attach(9, 1000, 2000); // Pin 9, Min/Max Pulsbreite µs
}
void loop() {
potValue = analogRead(A0); // 0–1023
potValue = map(potValue, 0, 1023, 0, 180); // auf 0–180 mappen
ESC.write(potValue); // PWM an ESC senden
}
Erklärung
Servo.hnutzt Timer für präzise 50 Hz PWM (Arduino PWM ist ~490/980 Hz).attach(pin, min, max): Min=1000 µs (1 ms), Max=2000 µs (2 ms).- Potentiometer 0–1023 → map auf 0–180 →
write()sendet proportionale Pulsbreite.
Wichtige Hinweise: Arming & Kalibrierung
Arming (Startfreigabe)
Beim Einschalten muss Signal ≤ Min-Puls (1 ms) anliegen. Motor piept zur Bestätigung. Bei höherem Signal (Gas gegeben) → ESC verweigert Start (Sicherheit). Erst Gas wegnehmen → Start.
ESC Kalibrierung (Endpunkte anpassen)
ESCs haben individuelle Min/Max-Punkte (z. B. 1,2 ms / 1,9 ms). Ohne Kalibrierung: erster Teil des Gasweges wirkungslos.
Kalibrierprozedur:
- Potentiometer auf MAX (oder > Mitte) drehen.
- ESC einschalten (Akku anschließen). Motor piept → neuer Max-Punkt gespeichert.
- 2 Sekunden warten.
- Potentiometer auf gewünschten MIN-Punkt drehen. Motor piept → neuer Min-Punkt gespeichert.
- Fertig: Gasweg nun exakt zwischen neuen Min/Max.
Fazit & Weiterführendes
BLDC-Steuerung mit Arduino & ESC ist so einfach wie Servo-Steuerung (50 Hz PWM). Wichtig: Arming beachten, ESC kalibrieren, passende LiPo-Zahl wählen.
Für kabellose Steuerung: Siehe mein Arduino RC-Sender Tutorial (BLDC per Funk steuern).
Fragen in den Kommentaren. Meine Arduino-Projektsammlung anschauen.
Herstellungsprozess
- Sicheres Arduino RFID-Schloss bauen – Schritt-für-Schritt-Anleitung
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- Arduino Power Control Center: N-FET, P-FET, Relais & RTC Kit
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- Autonomer Linienfolger-Roboter mit Arduino UNO
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Umfassendes Arduino-Trainingskit mit Mega 2560, Sensoren, Motoren & Custom PCB
- Arduino Einsteiger Tutorial #1: Erstes Projekt (Blink)
- BLDC-Motoren (Bürstenlose Gleichstrommotoren) & Automatisierungslösungen
- BLDC-Motoren verstehen: Ein professioneller Leitfaden