Control a brushless motor with an ESC using an Arduino

FunduinoLast updated on

Einen starken Modellbau-Motor über einen Fahrtregler steuern

Brushless-Motoren aus dem Modellbau sind klein, leicht und erstaunlich kräftig. Direkt an eine Spannungsquelle anschließen lässt sich so ein Motor aber nicht – dazwischen gehört ein ESC, ein elektronischer Fahrtregler.

In dieser Anleitung steuerst du einen solchen Motor mit dem Arduino an und regelst seine Drehzahl über ein Potentiometer. Der Trick dabei: Für den Arduino verhält sich ein ESC wie ein ganz gewöhnlicher Servo.

Elektrische Turbine mit Mantelpropeller für den Modellbau
Die Turbine (EDF) mit dem Brushless-Motor im Inneren

Warum ein Brushless-Motor einen ESC braucht

In diesem Beispiel steuerst du ein Gebläse an – eine starke elektrische Turbine, in deren Inneren ein Brushless-Motor sitzt. Im Handel heißen solche Turbinen EDF (Electric Ducted Fan) oder Mantelpropeller. Im Modellbau treiben sie Flugmodelle oder Hovercrafts an.

Brushless-Motoren haben eine Besonderheit bei der Spannungsversorgung: Sie brauchen Wechselstrom und ziehen in der Regel sehr viel Strom. Deshalb schließt du sie nicht direkt an eine Spannungsquelle an. Dazwischen gehört ein elektronisches Modul, das den passenden Wechselstrom erzeugt – der ESC (Electronic Speed Controller, auf Deutsch elektronischer Fahrtregler).

Der Strom, den der ESC ausgibt, bestimmt die Drehzahl des Motors. Welche Drehzahl das sein soll, sagt ihm der Arduino über ein Steuersignal.

Elektrische Turbine mit Mantelpropeller für den Modellbau
Die Turbine (EDF) mit dem Brushless-Motor im Inneren

Verkabelung

Die Energie kommt über die beiden dicken Leitungen des ESC – rot und schwarz – aus der Spannungsquelle. Aus dem ESC führen drei weitere, dünne Leitungen in einem gemeinsamen Dreierstecker heraus:

  • Rot (+) und Schwarz (−) versorgen den Mikrocontroller mit Strom. Die 5 Volt dafür erzeugt ein Spannungswandler im ESC.
  • Weiß bringt das Steuersignal vom Arduino zum ESC – im Sketch von Pin 8.

Das Potentiometer, mit dem du die Drehzahl vorgibst, kommt an den analogen Eingang A0.

Sicherheit: Ein Brushless-Motor dreht sehr schnell und sehr kräftig an. Befestige die Turbine vor dem ersten Versuch so, dass sie nicht wegrutschen oder abheben kann, halte Finger, Kabel und lose Gegenstände fern und trage eine Schutzbrille. Stelle das Potentiometer auf null, bevor du die Spannungsversorgung anschließst – viele Fahrtregler geben den Motor sonst gar nicht erst frei.

Turbine mit Brushless-Motor und daneben der ESC-Fahrtregler
Links die Turbine mit dem Brushless-Motor, rechts der in Schrumpfschlauch eingeschweißte ESC

Den ESC ansteuern

Weil die ESC-Technik aus dem Modellbau stammt, wird ein ESC genauso angesteuert wie ein Servo – über ein PWM-Signal (Pulsweitenmodulation). Genau deshalb kommt im Sketch die Servobibliothek zum Einsatz: Mit ihr erzeugt der Arduino das passende Signal in wenigen Zeilen.

Der Sketch liest den Drehregler aus, rechnet den Wert von 0 bis 1023 auf 0 bis 180 um und schickt ihn an den ESC.

Drehzahl über ein Potentiometer steuern
// Hinzufügen der Servobibliothek. Sie wird verwendet, weil ein ESC aus
// elektrischer Sicht genauso angesteuert wird wie ein Servo.
#include <Servo.h>

// Der ESC (Electronic Speed Controller, elektronischer Fahrtregler) wird als
// Objekt mit dem Namen "ESC" festgelegt.
Servo ESC;

int Drehregler;       // Ausgabewert des Drehreglers
int Geschwindigkeit;  // Ansteuerungswert am ESC

void setup()
{
  // Die drei Werte bedeuten Pin, minimale und maximale Pulsweite in Mikrosekunden.
  // 1000 und 2000 sind Standardwerte, die zu den meisten Fahrtreglern passen.
  // Funktioniert es damit nicht, schau die Werte deines ESC im Datenblatt nach.
  ESC.attach(8, 1000, 2000);
}

void loop()
{
  // Liest den Wert des Potentiometers am analogen Pin A0 aus. Er liegt zwischen 0 und 1023.
  Drehregler = analogRead(A0);

  // Der map-Befehl rechnet den Messwert in einen Wert zwischen 0 und 180 um,
  // den der ESC verarbeiten kann.
  Geschwindigkeit = map(Drehregler, 0, 1023, 0, 180);

  // Der Wert geht an den ESC, der den Motor entsprechend ansteuert.
  ESC.write(Geschwindigkeit);
}
Rate the instructions

Comments

Ask a question or share an experience

Contact us if something doesn’t work. Please include your board and the error message.

We review every comment before publication. Your email address remains with us.