Versuch B: Motorprüfstand BLDC

Einleitung

Bürstenlose Gleichstrommaschinen oder BLDC-Motoren (Brushless DC) sind aus unserem täglichen Leben nicht mehr wegzudenken. Durch ihre gute Regelbarkeit und Effizienz sind sie neben den ganzen Spielzeugen (E-Bikes, Hoverboard, Drohnen usw.) mittlerweile auch in Staubsaugern, Akkuschraubern und Waschmaschinen zu finden.

Wie der Name bereits andeutet handelt es sich prinzipiell um Gleichstrommaschinen, das bedeutet wir benötigen stets eine Gleichstromversorgung. Das reicht alleine aber nicht aus. Zusätzlich benötigen wir eine Elektronik welches den mechanischen Teil der Kommutierung (Bürsten und Lamellen) jetzt elektronisch erledigt. Mit den Bürsten entfällt ein wartungsintensives Bauelement (vielleicht haben sie ja auch schon einmal die Bürsten ihrer Bohrmaschine getauscht) welches zusätzlich mit dem Funkenfeuer für starke elektromagnetische Emissionen sorgt. Egal ob mechanische oder elektronische Kommutierung, beide Mechanismen haben die Aufgabe die Feldlinien so zueinander zu positionieren, dass sich stets ein (positives) Moment ausbilden kann.
Die meisten BLDC Motoren sind auf dem Rotor mit Permanentmagneten versehen, das Statorfeld wird dann durch außenliegende Elektromagneten bzw. Feldwindungen generiert. Ein großer Vorteil der BLDC Motoren ist, dass sich auch der inverse Aufbau realisieren lässt. Das bedeutet, die Permanentmagnete sind auf dem äußeren Rotor angebracht wobei die Spulen im Inneren angebracht sind. Wir sprechen dann von einem Außenläufer oder entsprechend Innenläufer. Außenläufer generieren durch den großen Abstand zur Achse höhere Drehmomente als Innenläufer. Ihr typischer Einsatzbereich sind Radnabenmotoren für Pedelecs bzw. elektrisch angetriebene Räder aller Art. In der Abbildung rechts ist der prinzipielle Aufbau eines BLDC Motors als Innenläufer dargestellt.
Drei um 120° versetzte Feldwindungen erzeugen ein umlaufendes magnetisches Feld, welches den Rotor in Bewegung setzt. Vom Prinzip exakt in der Weise, wie wir alle in Kindheitstagen versucht haben zwei Magneten durch schieben abzustoßen oder wenn wir die Magneten einander anziehen lassen. Am magnetischen Fluß des Rotors, generiert durch die Permanentmagnete, können wir nichts ändern. Unser Freiheitsgrad beschränkt sich daher auf die Generierung des Ständerfeldes, durch die Ansteuerung der drei Feldwindungen U, V und W. Das Know-How der Motoransteuerung liegt genau in der Art der Ansteuerung.
Die Blockkommutierung unterteilt den Motorumfang in sechs äquivalente Sektoren. Bei einer zweipoligen Maschine erhalten wir Sektoren mit einem Winkel von 60°. Innerhalb eines Sektors sind jeweils zwei Feldspulen aktiv womit wir eine konstante Erregung erhalten. Wechselt jetzt der Rotor in den nächsten Sektor schalten wir um zum nächsten Spulenpaar und drücken oder ziehen somit den Rotor jeweils eine Position weiter. Je stärker das Erregerfeld, desto mehr Drehmoment wird generiert, desto schneller läuft der gesamte Vorgang ab. Der Motor und damit seine n(M) Kennlinie verhält sich analog einer herkömmlichen Gleichstrommaschine. Durch das Anbringen von mehr als zwei Polen auf dem Rotor lässt sich die Sektorweite reduzieren. Da das Erregerfeld allerdings durch die Sektoren nur diskrete Zustände (6, 12, usw.) annehmen kann ergibt sich ein nicht zu vernachlässigender Drehmomentenrippel an der Welle welches sich besonders bei geringen Drehzahlen bemerkbar machen kann.
Dieses Problem löst eine Feldorientierte Regelung (FOC Field Oriented Control). Die FOC stellt im Gegensatz zur Blockkommutierung nicht nur diskrete Zustände der Feldvektoren ein, sondern ermöglicht eine stufenlose, sozusagen analoge, Ausrichtung des Feldvektors. Mann kann sich die Anregung analog dem Drehfeld einer Asynchronmaschine vorstellen bei dem das Drehfeld durch einen dreiphasigen Wechselspannungsanschluss generiert wird. Bei der FOC Regelung wird das Drehfeld durch einen Umrichter (einer Leistungselektronik) generiert mit variabler Frequenz und Amplitude. Typischerweise sprechen wir bei BLDC Motoren mit FOC-Regelung von Synchronmaschinen. Eine klare Abgrenzung zwischen Synchronmaschinen und BLDC Motoren ist kaum möglich. Es sei denn, wir sprechen von großen Kraftwerksgeneratoren zur Energieerzeugung. Diese sind stets als fremderregte Synchronmaschinen ausgeführt.

Typischer Sprachgebrauch: Synchronmaschine = BLDC-Motoren mit FOC-Regelung BLDC-Motoren typischerweise mit Blockkommutierung

Ziele des Versuchs

Die n(M) Kennlinie des Motors und damit sein charakteristisches Verhalten ist uns bereits von der Gleichstrommaschine bekannt. Die Herausforderung besteht darin den BLDC Motor mit der richtigen Kommutierungssequenz anzusteuern. I Unser Versuchsobjekt ist ein BLDC Motor der Firma PMDM Minebea.
Motordaten: Bemessungsspannung: 24V
Bemessungsleistung: 100W
Bemessungsmoment: ca. 0,3Nm
Polpaarzahl: 4
Die Abbildung zeigt unseren Versuchsmotor und dessen Verschaltung der Statorwindungen in Sternschaltung.

Kommutierungstabelle

Damit sich der Rotor in die nächste Position bewegt ändern wir das durch die Spulen eingeprägte magnetische Feld. Der Rotor wird dann entsprechend durch eine Spule abgestoßen, durch die zweite Spule angezogen. Spulen welche sich direkt über dem Rotorfeld (Nord oder Südpol des Rotormagneten) befinden werden nicht angesteuert. Die Kräfte würden nur auf die Achse drücken (oder an der Achse ziehen), aber nichts zum Dremmoment beitragen.
Am Einfachsten nähert man sich der Thematik indem man den Umfang des Motors in Sektoren einteilt. In unserer einfachsten Variante, mit zwei Polen auf dem Rotor, erhalten wir sechs Sektoren mit jeweils 60° Ausschnitten.

Obige Abbildung zeigt einen Ausschnitt aus der Kommutierungsreihenfolge für Rechtslauf des Motors. Die Sektorbezeichnung ist frei wählbar und beginnt hier mit Sektor 1 wenn der Nordpol nach unten zeigt (Bild in der Mitte). Für jeden Sektor müssen wir uns jetzt überlegen wie die Windungen zu bestromen sind, damit sich eine kontinuierliche Drehung ergibt. Im Bild sind bereits zwei der sechs Schritte vorgegeben. Die Strompfeile an den Statorwindungen U, V, W bestimmen die Richtung des magnetischen Feldes. Ein positiver Strom (Strom fließt am +-Terminal in die Windung) erzeugt einen Nordpol am innenliegenden Teil der Windung, ein negativer Strom entsprechend einen Südpol, siehe Rechte-Hand-Regel, Rechte-Faust oder Korkenzieherregel.
Wir schieben oder ziehen also unseren Rotor jeweils um 60° weiter in den nächsten Sektor.

Sektor	U	V	W
6	pos	neg
1	pos	neg
2
3
4
5

Sind alle Sektoren einmal durchlaufen ergibt sich eine volle Umdrehung unseres Rotors. Sind wie in unserem Beispiel zwei Pole auf dem Rotor angebracht entspricht eine mechanische Umdrehung einer elektrischen Umdrehung. Meist werden mehrere Pole auf dem Rotor angebracht wodurch sowohl das Drehmoment erhöht werden kann als auch der Drehmomentrippel reduziert wird. Aus der elektrischen Sichtweise wird der Motor sozusagen doppelt über dem Umfang aufgebaut mit zwei Poolpaaren auf dem Rotor. Dadurch entspricht eine elektrische Umdrehung nur noch eine halbe mechanische Umdrehung des Rotors.

Es fällt auf, dass stets eine Windung einen positiven Strom, eine Windung einen negativen Strom führt. Daher wird die überwiegende Anzahl an BLDC Motoren im Stator in Stern verschalten, siehe obiges Bild neben dem Motor. Die Strompfeile zeigen den Strom um von Sektor 6 in Sektor 1 zu fahren, also U-Windung mit positivem Strom, W-Windung mit negativem Strom.

Aufgabe 1: Vervollständigen Sie mit Hilfe der Vorlage die Kommutierungstabelle. Erweitern Sie dazu die oben gezeigten Sektoren um die fehlenden Positionen.sektorkommutierung.pdf

Leistungselektronik

Ein entscheidender Nachteil der BLDC Motoren ist die „künstliche“ bzw. externe Kommutierung bzw. die Implementierung unserer Kommutierungstabelle. Bei einer Gleichstrommaschine nimmt uns die Arbeit der Kommutator auf mechanische Weise ab, zum Betrieb ist nur eine Gleichspannung anzulegen. Wir benötigen also eine elektronische Schaltung welche in der Lage ist die Windungsanschlüsse auf verschiedene Potenziale zu bringen. Um diese Aufgabe zu erledigen bekommt jede Windung ihre eigene Halbbrückenschaltung. Manchmal auch als Mosfet Totem-Pole (Marterpfahl aufgrund der übereinanderliegenden Mosfets) bezeichnet. Jede Halbbrücke besteht aus zwei Mosfets welche wir als elektronische Schalter betreiben, dadurch kann die Spule entweder auf +-Potential über den High-Side Mosfet (oberer Mosfet) gezogen werden, oder alternative auf Masse über den Low-Side Mosfet. In der nachfolgenden Abbildung sind die Ströme eingezeichnet damit sich der Rotor von Sektor 6 in Richtung Sektor 1 bewegt. Dazu müssen die Schalter AH und CL geschlossen werden.

Pro Brückenzweig darf natürlich immer nur ein Schalter, entweder AH oder AL geschlossen sein. Andernfalls würden wir einen harten Kurzschluss der Eingangsspannung erhalten. In der Leistungselektronik spricht man in diesem Fall von einem „heißen Zweig“. Wir können jetzt unsere Sektortabelle um die Schaltzustände erweitern:

Sektor	U	V	W	AH	AL	BH	BL	CH	CL
6	pos	neg	1	0	0	0	0	1
1	pos	neg
2
3
4
5

Da wir später im Programmcode binäre Größen verwenden ist es sinnvoll die Schalterstellungen gleich mit „1“ für geschlossen und „0“ für offen zu bezeichnen.

Aufgabe 2: Vervollständigen sie die Kommutierungstabelle um die einzustellenden Schalterpositionen.

Hardwareaufbau

Bevor wir die Leistungselektronik ansteuern schauen wir uns kurz den Gesamtaufbau an. Die Hardware besteht aus den zuvor besprochenen Halbbrücken und einem Mikrocontroller der für uns die Ansteuerung und Überwachung sowie die Kommunikation zum Steuer-PC übernimmt. Unsere Schnittstelle zum System ist Matlab-Simulink. Über den USB-Anschluss tauschen wir Signale mit dem Mikrocontroller aus bzw. übermitteln die gewünschten Schalterpositionen. Der Controller sorgt dann für deren Umsetzung und überwacht den korrekten Ablauf. Für hohe Drehzahlen ist es allerdings nicht mehr möglich die Kommutierung vom Steuer-PC aus vorzugeben. Die Übertragung ist einfach zu träge. Daher schalten wir gegen Ende des Versuchs um auf die alleinige Steuerung auf dem µC, so wie es auch im realen Einsatz umgesetzt wird. Lediglich die Geschwindigkeitsregelung, deren Dynamik von uns frei wählbar ist kann auf dem Steuer-PC verbleiben. Aufgrund der Datenübertragun zur Hardware ist sie natürlich auch nur endlich schnell!

Die Programmierung unserer Schalterstellungen erfolgt sehr komfortabel in Matlab-Simulink. Zur Einstellung der richtigen Schalterstellungen befüllen wir eine Switch-Case Anweisung mit dem notwendigen binären Muster, passend zum aktuellen Sektor. Achten Sie auf die korrekte Schreibweise des Patternvektors in der Form [AH AL BH BL CH CL] wie im Beispiel für unseren bereits bekannten Sektor 6 dargestellt.

In der Simulink-Vorlage finden Sie neben dem Kommunikationsblock auch die Vorlage der Switch-Case Anweisung.

Aufgabe 3: Vervollständigen Sie die Switch-Case Anweisung und prüfen Sie alle Einstellungen indem Sie den Rotor eine volle Umdrehung durchfahren lassen. Was fällt Ihnen dabei auf? Warum erfolgt keine 360° Drehung obwohl alle Sektoren einmal angefahren wurden? Hinweis: Der Motor freut sich über eine Pause wenn er gerade nichts zu tun hat. Fügen Sie bitte einen siebten Zustand ein bei dem Sie alle Brücken deaktivieren. In der Leistungselektronik wird diese Einstellung als Nullvektor bezeichnet. Bitte starten und beenden Sie die Versuche mit dieser Einstellung

Hinweis: Starten Sie Simulink über den Button Run und senden Sie die verschiedenen Sektoreinstellungen zum Mikrocontroller.
Achtung: Da sich der Motor nicht dreht und damit keine Gegenspannung aufbaut wird der Motor ohne Gegenmaßnahmen einen sehr hohen Strom aufnehmen und ggf. zerstört. Mit viel Pech entmagnetisieren wir die Rotormagnete. Erhöhen Sie daher bitte vorsichtig den Duty-Cycle der Elektronik. Achten Sie darauf, dass der abgegebene Strom am Netzteil einen Strom von ca. 1A nicht überschreitet. Bei einer Spannung von 24V nimmt der Motor eine Verlustleistung von 24W auf! Die Spannung am Motor berechnet sich sehr einfach als Duty x Zwischenkreisspannung. Also Duty x 24V.

Er dreht sich

Mit den diskreten Zuständen haben wir den Motor wie einen Schrittmotor angesteuert. Verschiedene Winkelpositionen oder Muster abzufahren ist jetzt nur noch eine Fleißaufgabe in der Programmierung. Lassen wir jetzt allerdings den Motor kontinuierlich drehen. Die einfachste Möglichkeit besteht darin einfach die Sektoren automatisch hochzuzählen wie zum Bespiel mit folgender Anordnung.

Über die Sample-Time lässt sich einstellen wie lange der Rotor in einem Sektor verbleibt. Aber welcher Zusammenhang besteht zur am Motor angelegten Spannung? Um dies herauszufinden gibt es die Möglichkeit den Duty-Cycle der Mosfets zu variieren. Dadurch wird ein PWM-Muster ausgegeben und die am Motor anliegende Spannung berechnet sich zu Duty x Eingangsspannung. (Hinweis: Zum Schutz des Motors wird der maximal einstellbare Duty-Cycle durch Simulink auf 15% begrenzt.)

Aufgabe 4: Lassen Sie den Motor mit geringer Umlaufgeschwindigkeit (z.B. Sample-Time = 0,5) laufen und variieren Sie die Spannung am Motor über den Duty-Cycle. Was fällt Ihnen auf? Wie ist der Zusammenhang zwischen Drehzahl und anliegender Spannung? Macht es Sinn den Motor in dieser Betriebsart zu betreiben? Welche Parameter werden durch die Spannung beeinflusst? Versuchen Sie dazu den Motor von Hand abzubremsen.

Hallsensoren

Wie gesehen läuft die Sache noch nicht so richtig rund. Die Ursache liegt darin, dass nur der Steuer-PC entscheidet zu welchem Zeitpunkt eine Kommutierung stattfindet. Viel besser und für einen ruhigeren Lauf ist es natürlich wenn wir die Kommutierung einleiten sobald der Motor den nächsten Sektor erreicht hat. Der Rotor gibt dann vor zu welchem Zeitpunkt die Schalterpositionen geändert werden. Dadurch erreichen wir, dass sich der Motor verhält wie eine klassische Gleichstrommaschine. Er dreht sich kontinuierlich und fährt nicht ruckartig den nächsten Zustand an. Je größer das von außen anliegende Moment, desto länger dauert es bis der nächste Sektor erreicht ist. Daher erhalten wir das identische Verhalten einer Gleichstrommaschine.
Da wir in einen neuen Sektor eintreten sobald das Rotorfeld die Sektorgrenze überschreitet, müssen wir genau diesen Zustand erkennen. Hall-Sensoren (Funktionsprinzip) sind in der Lage magnetische Felder zu detektieren und geben uns mit Hilfe von Logikpegeln Rückmeldung über einen anliegenden Pol. Vereinfacht lassen sich die Hallsensoren direkt unterhalb der Spulen darstellen wie in folgender Abbildung. Oft werden allerdings dazu zusätzliche kleine Hilfsmagnete verwendet welche an der Stirnseite des Rotors angebracht sind.

Jeder Sektor besitzt somit seine eindeutige Hall-Signatur. Im gezeigten Beispiel besitzt Sektor 1 den Hall-Code 011 in der Reihenfolge A-B-C Sensor. Es ist allerdings nicht selbstverständlich, dass die Sensoren in dieser Reihenfolge herausgeführt sind. Weiterhin können natürlich auch Sensoren eingesetzt werden welche einen aktiven Low-Pegel verwenden.
Wir haben uns dem BLDC Motor bisher genähert über die verschiedenen Sektoren in welchen sich der Rotor befinden kann. Der Mikrocontroller arbeitet allerdings in umgekehrter Reihenfolge. Wechselt ein Hall-Sensor seinen Status wird aus den Hallinformationen der aktuelle Sektor ermittelt in dem sich der Rotor befindet. Über die uns bekannte Switch-Case Anweisung werden die Halbleiterschalter dann so gestellt, dass sich der Rotor weiterdreht.

Aufgabe 5: Erweitern Sie die Sektortabelle um die zu erwartenden Hall-Signale bzw. den Hall-Code. Verwenden Sie die Notation A-B-C wobei eine 1 einem dem Sensor zugewandten Nordpol entspricht.

Leider ist die Übertragung vom Mikrocontroller zu Simulink zu langsam um die Kommutierung in Abhängigkeit der Hallsignale zu ändern, womit wir dazu in den „Automatikmodus“ wechseln müssen. Geben Sie in Simulink an der Kommunikationsschnittstelle am Label Automatik eine 1 vor wodurch die hallbasierte Programmsteuerung im Mikrocontroller aktiviert wird. Bei jedem Wechsel der Hallssignale wird ein Interrupt ausgelöst welche über eine Switch-Case Anweisung die korrekte Schalterposition ausgibt. Exakt identisch wie von Ihnen bisher ermittelt, jetzt lediglich direkt auf dem Mikrocontroller. Über die Variable Duty können sie die Motorspannung vorgeben. Der Port Drehzahl gibt die aktuell gültige Drehzahl aus. Bitte beachten Sie, dass die Drehzahl ermittelt wird über den zeitliche Abstand der Hallpegel. Falls der Rotor steht verbleibt die Anzeige auf dem letzten gültigen Wert.
Zusammengefasst ziemlich unspektakulär, wenn es denn mal läuft. Das Geheimnis den Motor richtig, das bedeutet ohne Stottern, anzusteuern liegt in der korrekten Kommutierungstabelle und natürlich auch in der richtigen Verwendung der Signale. In vielen Fällen erhalten Sie lediglich einen Motor mit drei Phasenanschlüssen und fünf Signalleitungen zu den Hallsensoren. Mit etwas Glück sind zwei der Leitungen zu den Hallsignalen beschriftet als Versorgungsspannung für die Hallsensoren. Die Phasenzuordnung als auch die Reihenfolge der Hallsignale müssen Sie ggf. selber herausfinden ….

Er stottert ....

Falls ein BLDC Motor stottert, liegt das meist daran, dass die Phasenanschlüsse oder die Hallsignale vertauscht sind. In unserem Fall kennen wir die Phasenanschlüsse, jedoch nicht die Zuordnung der Hallsignale. Über ein einfaches Experiment lässt sich die Zuordnung allerdings schnell herausfinden. Dazu erweitern wir unsere Switch-Case Anweisung um die Fälle 8, 9 und 10. In den Zuständen 8, 9, 10 bringen wir den Rotor exakt in die magnetische Achse des Statorfeldes, wir arretieren sozusagen den Rotor in den Sektoren 1, 3 oder 5. Dazu wird je eine Spule positiv bestromt, die restlichen beiden auf Masse gezogen. So können wir auch bei unbekannter Phasenzuordnung uns die Reihenfolge der Anschlüsse herleiten.

Beginnen wir mit der Suche nach dem Hallsensor mit der Bezeichnung A, also HA. Dazu prägen wir einen positiven Strom in die Spule U ein. Dadurch wird der Südpol des Rotors direkt unter der Statorspule U arretiert. Der Motor befindet sich in seinem „Happy-State“, also im Gleichgewicht (Nordpol Stator und Südpol Rotor ziehen sich an). Da sich der Motor in Sternschaltung befindet müssen wir dafür sorgen, dass der Strom durch die beiden verbleibenden Windungen V und W zu gleichen Teilen abfließt. Dazu legen wir einfach die Windungsenden der Spulen auf Masse. Die vektorielle Addition aller erzeugten magnetischen Flüsse zeigt nun exakt in die Achse des Statorfeldes der Windung U. Der Nordpol des Rotors wird somit direkt in den Sektor 1 ausgerichtet.
Geben die Hall-Sensoren einen High-Pegel aus bei erkanntem Nordpol erkennen wir das Hallsignal A ganz einfach daran, dass dieser Wert nicht gesetzt ist (im Bild links, grün markierte Null). Die dazugehörige Schalterstellung für diesen Versuch entspricht [1 0 0 1 0 1].

Aufgabe 6: a) Erweitern Sie die Switch-Case Anweisung um die Fälle 7, 8, 9 und 10 und finden Sie heraus welche Signal den Hallsensoren A, B und C zuzuordnen ist. b) Lassen Sie den Motor sehr langsam laufen und beobachten Sie die Hallsignale entlang eines Umlaufs. Machen Sie einen Screenshot für Ihre Ausarbeitung.

Hinweis:
Da die aktuelle Hall-Position vom Mikrocontroller an den PC übertragen wird ist eine lückenlose Übertragung nur für sehr kleine Geschwindigkeiten möglich.

Um den Motor zu bremsen ohne dass ein Strom fließen muss können wir die Motorwindungen kurzschließen.

Aufgabe 7: Erweitern Sie die Switch-Case Anweisung so, dass alle Windungen kurzgeschlossen werden. Versuchen Sie den Motor von Hand zu drehen. Vergleichen Sie den neuen Zustand mit dem Nullvektor. Was fällt Ihnen dabei auf und wodurch lässt sich das Verhalten erklären?

Abschluss

Ich würde mich über ein kurzes Feedback zur zweiten Versuchsaufgabe freuen. Bitte beantworten Sie mir optional folgende Fragen:

Wie sinnvoll fanden Sie den Versuch: Bitte eine Angabe in Schulnoten (1-6)

Wie lange haben Sie zur Bearbeitung der Aufgaben benötigt (in Stunden)

Was Ihnen sonst so einfällt zum Versuch ….