professoren_webseiten:rebholz:motorpruefstand_versuch_b_bldc
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
professoren_webseiten:rebholz:motorpruefstand_versuch_b_bldc [2024/11/15 20:18] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | professoren_webseiten:rebholz:motorpruefstand_versuch_b_bldc [2025/03/23 13:38] (aktuell) – [Abschluss] hrebholz | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== 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, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Wie der Name bereits andeutet handelt es sich prinzipiell um Gleichstrommaschinen, | ||
+ | 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, | ||
+ | Die **Blockkommutierung** | ||
+ | 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. | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | ** | ||
+ | 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 [[https:// | ||
+ | \\ | ||
+ | **Motordaten: | ||
+ | Bemessungsspannung: | ||
+ | Bemessungsleistung: | ||
+ | Bemessungsmoment: | ||
+ | Polpaarzahl: | ||
+ | \\ | ||
+ | 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, | ||
+ | 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 [[https:// | ||
+ | Wir schieben oder ziehen also unseren Rotor jeweils um 60° weiter in den nächsten Sektor. | ||
+ | ^ Sektor | ||
+ | | 6 | ||
+ | | 1 | ||
+ | | 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, | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **Aufgabe 1:** \\ | ||
+ | Vervollständigen Sie mit Hilfe der Vorlage die Kommutierungstabelle.\\ | ||
+ | Erweitern Sie dazu die oben gezeigten Sektoren um die fehlenden Positionen.{{ : | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Leistungselektronik ==== | ||
+ | |||
+ | Ein entscheidender Nachteil der BLDC Motoren ist die " | ||
+ | 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 " | ||
+ | \\ | ||
+ | ^ Sektor | ||
+ | | 6 | ||
+ | | 1 | ||
+ | | 2 | ||
+ | | 3 | ||
+ | | 4 | ||
+ | | 5 | ||
+ | \\ | ||
+ | Da wir später im Programmcode binäre Größen verwenden ist es sinnvoll die Schalterstellungen gleich mit " | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **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, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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. \\ | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **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. \\ | ||
+ | <color # | ||
+ | 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.) | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **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, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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, | ||
+ | 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. | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **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 " | ||
+ | Zusammengefasst ziemlich unspektakulär, | ||
+ | ==== 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, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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 " | ||
+ | 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]. | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | **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. | ||
+ | <WRAP center round todo 60%> | ||
+ | **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? | ||
+ | </ | ||
+ | |||
+ | |||