closeThis post has been published 4 years 1 month 19 days ago and may be out of date. Please read it carefully, I'm not responsible for any mistakes.

Allgemeines

Brushless-Motoren (BLDC, Brushless DC Motor) sind bürstenlose Gleichstrommotoren, wobei zwischen Außen- und Innenläufern unterschieden wird. (Outrunner/Inrunner). Erstere haben ein höheres Drehmoment bei niedrigerer Drehzahl, bei Innenläufern ist es umgekehrt. Diese Art von Motor läuft somit leiser und kann höhere Drehzahlen erreichen, weswegen Brushless-Motoren häufig im Modellbau eingesetzt werden. Beispielsweise finden sich bei Quadrocoptern ausschließlich solche als Antrieb, da zudem auch die Leistung pro Masse höher ist und damit auch der Wirkungsgrad. Der wohl größte Vorteil ist der Wegfall von Bürsten/Kohleschleifer, somit können nur die Wellenlager verschleißen.
Bürstenlose Motoren finden aber auch in Alltagsgeräten wie etwa CD/DVD-Spielern, PC-Lüftern und Festplatten Anwendung, wo es entweder auf Laufruhe oder auf konstante Drehzahlen ankommt.
Jeder Schrittmotor in Scannern, Druckern und vielen weiteren Geräten ist auch bürstenlos und besitzt eine hohe Schrittanzahl pro Umdrehung, wodurch der Winkelversatz pro Schritt sehr viel kleiner ist (Größenordnung um die 1.8°).

Zusammenfassend sind die Vorteile dieser Motoren:

  • Laufruhe
  • Höhere Drehzahlen möglich
  • Stellgenauigkeit (Auch ohne ext. Sensorik)
  • Wenig Verschleiß (Nur die Lager)
  • Höherer Wirkungsgrad

Und die Nachteile:

  • Eine spezielle Steuerelektronik wird benötigt (ESC, electronic speed controller)

 

Beispiele

Hier ein paar Beispiele von Brushlessmotoren aus technischen Geräten:

1: Festplattenmotor (3,5″, 7200 U/min) 2: Nema-Schrittmotor 3: CD-Player (Notebook)
4: Videokopf aus 8mm-Camcorder 5: Videorecorder 6: Lüfter

 

Ansteuerung

Die Ansteuerung wird nicht mit einer Gleichspannung bewerkstelligt, deren Intensität die Drehzahl bestimmt, sondern über ein Drehfeld.
(Modellbau)BL-Motoren haben in der Regel 3-4 Anschlüsse, die abwechselnd bestromt werden, jeweils mit 120° Phasenverschiebung.
Die Frequenz dieses Drehfeldes bestimmt die Drehzahl, der maximale Ausgangsstrom kann einfach über PWM geregelt werden.

 

ESC per Arduino geregelt

Erstellt mit Fritzing – Modelle freundlicherweise zur Verfügung gestellt von Evan Boldt.

Der ESC (oben) besitzt 2 Hochstromeingänge für die Versorgung, sowie einen 3-poligen Stecker, an dem die Masse und das Taktsignal (hier orange) der Fernsteueranlage anliegen. Die meisten ESCs haben zudem einen sog. BEC (Battery Eliminator Circuit) integriert (kleines rotes Kabel), wodurch zusätzlich geregelte 5V für weitere Elektronik bereitgestellt wird und auf einen zusätzlichen Spannungswandler verzichtet werden kann.

Hier muss beachtet werden, dass zwar die Masse des ESCs mit der des Arduinos verbunden wird, jedoch nicht die rote 5V-Leitung, sonst kommt es zum Kurzschluss zweier Spannungsquellen! Die Signalleitung wird an dem gewünschten Pin angeschlossen.

Das Taktsignal ist ein einfaches Rechtecksignal mit einer Periodendauer von meist 20 ms, obwohl auch kürzere Zeiten noch möglich sind (und eine entsprechend höhere Aktualisierungsrate). Wichtig ist die Pulsdauer, die zwischen 1 ms und 2 ms liegt, was in 0-100% Aussteuerung resultiert, bei Servos 0-180°, bei ESCs die Drehgeschwindigkeit. Hierbei ist noch sehr wichtig, dass viele ESCs gar nicht erst starten, wenn am Anfang die Aussteuerung 0% beträgt (servo.write(0)), es muss ein kleiner Offset vorgegeben werden. Zudem sind ESCs für Flugmodelle grundsätzlich leichter anzusteuern, da Modi wie Bremsen oder Rückwärtsgang grundsätzlich fehlen.

Nachfolgend ist hier der Code für den Arduino, über servo.write(Wert) kann man die Geschwindigkeit des Motor regeln.

 

Experimente mit Festplattenmotoren

Es lassen sich auch mit solchen BL-Reglern aus dem Modellbau normale Festplattenmotoren ansteuern. Hierbei ist nur zu beachten, dass diese 4 Anschlüsse anstatt 3 haben – Trotzdem haben diese sog. Spindelmotoren auch nur 3 Phasen, die 4. Leitung ist einfach eine Mittelanzapfung und kann unbelegt bleiben.

Standartmäßig drehen Desktop-Festplatten mit 7200 U/min, also 120 U/s, mit einem darauf befestigtem Spiegel lassen sich interessante Laserexperimente durchführen, ein entsprechendes Projekt hatte ich geplant (Laser(-POV)-Projektor), aber mangels Hardware konnte ich es leider noch nicht umsetzen: Der rotierende Spiegel auf dem Festplattenmotor erzeugt eine Linie, mit einem zweiten Spiegel kann man diese noch in Y-Richtung “rastern” und somit Texte oder Pixel anzeigen lassen. Probleme dabei: entsprechend schnelle Galvanometer-Spiegel sind mit mindestens 100€ nicht ganz billig und Lautsprecher sind zu träge.

Die Drehzahl kann mit einem externen BL-Regler auch deutlich überschritten werden, maximal konnte ich etwa 200U/s (12000U/min) bei 14.4V Versorgungsspannung erreichen.

 

[Total: 1    Average: 1/5]

12 Comments

  1. Frank

    Hallo Stefan,
    könntest Du die BAuteile die Du verwendet hast noch angeben – also mit Hersteller und Artikelnummer?
    Funktioniert das so 1zu1 mit einem Festplatten motor?

  2. Milan

    Hallo Stefan
    Dein für mich sehr interessanter Beitrag ist schon etwas älter, aber vielleicht liest Du ja doch noch mit. Ich möchte eine Wickelvorrichtung mit zwei exakt synchron (gegen-)laufenden bldc Motoren bauen. Ich denke mir dass das durch Ansteuerung zweier ESC mit demselben Arduino-Signal möglich sein müsste. Liege ich da richtig? Zudem hätte ich dich noch gerne gefragt, was für eine Größenordnung der Drehwiderstand hat, und ob ich an deinem Arduino-Skript noch Anpassungen vornehmen muss, bin zwar interessiert, aber unerfahren.
    Viele Grüße & Dank!
    Milan

    • Breadboarding

      Breadboarding

      Hallo Milan,
      Danke ebenfalls!

      Also leider ist es so, dass die Brushless-Controller ein Regelsystem darstellen, d.h., es wird eine Soll-Geschwindigkeit über das Pulssignal vorgegeben und die Motorsteuerung versucht diese möglichst lastunabhängig bereitzustellen. Aber da jeder Motor andere Eigenschaften besitzt, ist das allgemein sehr ungenau. was ich mir noch vorstellen könnte, ist die aktuelle Drehgeschwindigkeit per Encoder zu erfassen und dahingehend den ESC zu einer konstanten Geschw. zu verhelfen – aber selbst da hast du für eine synchrone Wickelung zu viel Abweichung..
      Schrittmotoren kann man beispielsweise parallel schalten, wenn die Last an der Welle gering bzw. gleichmäßig auf beide Motoren aufgeteilt ist. Ob das auch bei schnelldrehenden Drehstrommotoren klappt, weiß ich nicht, aber würde mal sagen nein. (und wenn, dann nicht zuverlässig)
      Eventuell kannst du nur einen Motor nehmen und die Rotation der einen Welle über zwei Zahnräder invertieren? Was anderes fällt mir spontan nicht ein, aber so umgehst du das Problem der Synchronisation. :)

      Gruß,
      Stefan

      • Milan

        Hallo Stefan
        Ok, danke!
        Ich hatte die Hoffnung, mit zwei baugleichen Motoren eine elegante Lösung hinzubekommen. Das wäre viel einfacher als die Drehung mechanisch ans andere Ende zu “kopieren”, und ich weiß, dass es so eine Maschine gibt. Ich dachte, die Steuerungsimpulse, also Umschaltung von Wicklung zu Wicklung, entsprächen einer synchronen Kalibrierung. Ich werd’s auf jeden Fall probieren, bestellt hab ich die Teile schon – also eher zwei Motoren am selben ESC. Die Drehmomentanforderung ist eher mäßig, kommt wohl noch eine Untersetzung ins Spiel. Wenn du noch eine Idee hast, vielleicht programmierseitig, wär ich auf jeden Fall interessiert!
        Schöne Grüße aus Freiburg
        Milan

  3. Christof

    Hallo und auch von ein großes Dankeschön für den Artikel.
    Ich habe nur wenig Erfahrung mit der Programierung von Arduino, möchte aber auf der Grundlage von dem Code einen Controller für ein e-Bike zu bauen. Der Strom sollte von Solarzellen kommen und hier sind die Handelsüblichen Controller nicht geeignet.

    Was sollte ich am Code verändern um auf relativ kleine Drehzahlen zu kommen?
    Weil 200 RPS bei einem 28″ Rad ist gefühlt leicht unter Lichtgeschwindigkeit :D

    Danke

    • Breadboarding

      Breadboarding

      Hallo Christof,

      sorry für die späte Rückmeldung!

      Eine kleinere Drehzahl ist so gesehen nicht möglich, da die ESCs nur in einem begrenzten Bereich operieren können, bzw. sind die BL-Motoren aus dem Modellbau sowieso nur für große Drehzahlen konzipiert (Outrunner immer langsamer, als Inrunner). Sprich ohne Übersetzungsgetriebe wirst du nicht auskommen.
      Es gibt spezielle BL-Motoren, die weniger Wicklungen und somit Drehzahl haben, beispielsweise für Kameragimbals, aber für Bikes fehlt dann das Drehmoment.

      Wenig Geräusche und höhere Effizienz bieten natürlich speziell für diesen Zweck ausgelegte Motoren, auf Beides muss bei Modellbaumotoren leider verzichtet werden.

      Schönes Projekt übrigens, ich habe mich letztens auch einige Zeit damit auseinandergesetzt, mein MTB hypothetisch umzurüsten. Bei Fragen gerne melden!

      Gruß,
      Stefan

      • Christof

        Hallo, ich habe diesen Motor:
        Bafang Motor für Front Antrieb SWXK, mit Freilauf, 185 RPM ( U / min) bei 36V in einer 28 Zoll Felge = 24,3 km/h nominal 250 Watt
        Der Motor hat einen 6 Pin- Stecker

        Die drei dicken sind die Phasen
        die drei dünnen für die Geschwindigkeitsinformation,

        und ca. 100 einzelne Solarzellen C50, 5” 125×125 mm, 3,30Wp diese kann ich nach bedarf zusammenlöten.

        was ich brauche ist ein Controller der nicht bei weniger als 30V abschaltet.
        Hast Du eine Idee was man hier machen könnte?

        Grüße Christof

      • Breadboarding

        Breadboarding

        Hallo,

        ah, das ist schon mal ne gute Basis!
        Ich kenne auch aus dem Stegreif keinen kompakten BL-Controller, der in diesem Spannungsbereich arbeitet (nur die für Pedelecs), vielleicht gibt es da etwas auf Ebay in der Richtung? Selber bauen is nicht ganz so trivial, da man die Spulenspannungen messen muss und daraufhin das PWM-Tastverhältnis nachregeln…

        Gruß,
        Stefan

  4. Jonas Klug

    Hallo,

    für verschiedenen Ansterungen für ESCs habe ich beim PWM-Signal verschiedene Frequenzen gemessen (400 Hz und 490 Hz).
    Welche Frequenz sendet der Arduino mit der Servo.h und lässt sich das einstellen oder ist die Frequenz unerheblich für die ESCs ?
    Gruß
    Jonas

    • Breadboarding

      Breadboarding

      Hallo,

      die Arduino PWM-Library stellt für die meisten Boards 2 Frequenzen zur Verfügung (Abhängig vom verwendeten Timer), nämlich 490 sowie 976 Hz.
      Die Servolibrary nutzt die standartisierte PWM-Ansteuerung, wie man es aus dem Modellbaubereich kennt:
      Die Signalflanke geht auf +5V und die Zeit bis zur fallenden Flanke gibt den übertragenen Wert an. (1000µs => 0% < -> 2000µs => 100%)
      Die Frequenz ist relativ egal, da nur noch die Zeit, in der das Signal anschließend auf Massepegel liegt, die Frequenz bestimmen kann.
      Analogservos haben beispielsweise 20ms “Totzeit” nach dem High-Pegel, die digitalen Vertreter werden deutlich schneller aktualisiert,
      alles über 100µs bei ESCs sollte theoretisch funktionieren, hab es aber noch nicht getestet!

      Gruß,
      Stefan

  5. Uwe Kirchhoff

    Hallo,
    vielen Dank für die Mühe, dieses Thema so schön zu erklären. Hast Du eine Ahnung wie man den Regler dazu bringen kann, die Drehrichtung zu wechseln ?
    RC Automodelle können das ja grundsätzlich auch.
    Gruß von der Nordsee
    Uwe

    • Breadboarding

      Stefan

      Hallo,

      Dankeschön für die positive Rückmeldung!
      Die Drehrichtung kann durch das Umkehren zweier Phasen erfolgen, also entweder physisch indem 2 der 3 Kontakte getauscht werden oder
      über eine Verschiebung um +120° und -120° von zwei Phasen (So wird es bei ESCs für Automodelle gehandhabt).
      Diese Funktion übernimmt logischerweise der PWM-Controller, was von außen nur schwer manipulierbar ist, außer man hat die Firmware und kann diese flashen.
      Eine relativ kostengünstige Methode wäre es, die Phasen per Relais (bzw. MOSFETs) zu wechseln.

      Gruß,
      Stefan

Leave Comment

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.