Archiv verlassen und diese Seite im Standarddesign anzeigen : BLDC-Modell für Quadrocopter
Ich grüße euch, liebe RoboterNETZler,
im Rahmen der Recherche für meine Semesterarbeit bin ich auf euer Forum gestoßen und hoffe Ihr könnt mir helfen.
Ich möchte ein geeignetes phys. Modell finden, welches es mir ermöglicht, das Verhalten der BLDC-Motoren eines Quadrocopters zu beschreiben.
Das am Lehrstuhl bestehende Motor-Propeller-Modell ist lediglich ein PT1-Glied, welches die Übertragungsfunktion von PWM-Signal zu Motorschub darstellt (Zeitkonstante und Verstärkungsfaktor wurden experimentell ermittelt). Für PWM->Drehmoment wurde nur ein Proportionalglied angenommen.
Ich brauche nun ein Modell, für welches ich die nötigen Modellparameter relativ leicht ermitteln kann, denn für die Modellbaumotoren stehen kaum Kennwerte zur Verfügung und die Motorregler sind Black-Boxes. Trotzdem soll die Winkelgeschwindigkeit und dessen Zeitverhalten in Abhängigkeit des PWM-Signals der Steuerplatine einigermaßen gut beschrieben werden, sodass ich daraus dann Schub, Drehmoment, Gyro-Effekte etc. ableiten kann. Zudem wäre es gut, wenn das Systemverhalten beim "bremsen" mit berücksichtigt wird. Rechenaufwand ist nebensächlich.
Ich steh da ein bisschen auf dem Schlauch, da E-Technik auch nicht unbedingt meine Paradedisziplin ist.
Wie würdet ihr an meiner Stelle vorgehen? Welchen Ansatz könnte ich verfolgen? Habt ihr geeignete Literatur für mich?
Schonmal vielen Dank vorab.
Gruß
hlm
... soll die Winkelgeschwindigkeit und dessen Zeitverhalten in Abhängigkeit des PWM-Signals der Steuerplatine einigermaßen gut beschrieben werden
Da der Regler, wie Du selbst schreibst, eine "black box" ist, wird man an einer Messung nicht vorbeikommen. Sowohl das PWM-Signal als auch die Drehzahl sind einer Messung leicht zugänglich. Zuerst eine statische Messung, anschließend z.B. Sprungantworten aufnehmen und versuchen, ob man das in akzeptabler Weise in ein PT2 Modell umsetzen kann. Ich schreibe bewusst mal Sprungantworten im Plural, da man nicht weiß wie linear der Regler ist. Bei einer auftriebserzeugenden Luftschraube ist der tatsächlich genutzte Drehzahlbereich ja klein, das verbessert die Chancen, dass man auch einen ziemlich nichtlinearen Regler als linear im genutzten Bereich betrachten darf.
Das Ganze gilt dann nur für die gemessene Kombination aus Luftschraube, Motor, Regler und Betriebsspannung. Die Wirkung zusätzlicher Einflüsse wie Luftdruck, relative Feuchte und Temperatur kann man wohl aus der Literatur entnehmen und sehen, ob beim Drehzahlniveau in 3000 m Höhe das Modell immer noch gilt (Das ist dann vielleicht schon die Arbeit für den nächsten Studenten).
Danke für deine Antwort!
Ich habe daraufhin mal ein bisschen recherchiert und bin zu neuen Erkenntnissen gekommen.
Sowohl das PWM-Signal als auch die Drehzahl sind einer Messung leicht zugänglich. Zuerst eine statische Messung, anschließend z.B. Sprungantworten aufnehmen und versuchen, ob man das in akzeptabler Weise in ein PT2 Modell umsetzen kann.
Das hat mein Vorgänger in etwa schon getan. Er hat stationäre Werte für Schub/PWM, sowie eine Sprungantwort des Systems Motor-Propeller gemessen. Diese hat kein erkennbares Überschwingen gezeigt, weshalb ich seine Annahme, das System als PT1 zu beschreiben, indem man die Induktivitäten des Motors als zweiten Energiespeicher vernachlässigt, schonmal für plausibel halte. Ein reines PT2 Modell würde daher glaube ich keine signifikante Verbesserung im Gegensatz zu seinem PT1 bringen.
Was in der Messung bei genauerem Hinsehen eher auffällt, ist, dass der Motor beim Bremsen eine höhere Zeitkonstante hat, als beim Beschleunigen. Das möchte ich gerne in meinem Modell berücksichtigen und daher weg von der Linearisierung und mit (vereinfachten) DGLs in Simulink arbeiten.
Da der Regler, wie Du selbst schreibst, eine "black box" ist, wird man an einer Messung nicht vorbeikommen.
Das ist klar, ich werde auf jeden Fall messen. Das gehört auch zur Aufgabe. Die Frage ist halt, was ich messe (so wenig wie möglich, so viel wie nötig;)).
Mein aktueller Ansatz ist nun folgender:
Ich nehme die Motorgleichungen für brushed DCs und vernachlässige die Induktivität.
Ich habe dann:
U = i*R + U_ind
U_ind = c_m*omega
c_m*i = J*omega + c_rotor*omega^2
Da ich J bereits habe und ich c_rotor sowieso messen will, blieben noch R und c_m als Unbekannte.
Nun meine Fragen: Ist das Zielführend, sprich löst das mein Problem mit dem Zeitverhalten? Oder rufen meine Vereinfachungen da möglicherweise einen noch größeren Fehler hervor? Falls nicht, wie und wie gut kann ich die Größen in der Praxis messen? Bereitet mir eine Parameteranpassung bei so vielen Kennwerten später vielleicht Probleme?
Sorry für den langen Beitrag:rolleyes: Ich freue mich auf eure Antworten!
Mein aktueller Ansatz ist nun folgender:
Ich nehme die Motorgleichungen für brushed DCs und vernachlässige die Induktivität.
Vorausschickend muss ich zugeben, dass ich keine praktische Erfahrung mit BLDC habe, es wäre schön, wenn sich auch ein Praktiker korrigierend in die Diskussion einschalten würde.
Den Ansatz über einen DC-Motor halte ich für zu kurz gegriffen, weil die Eigenschaften des BLDC auch stark von der Ansteuerung beeinflusst wird. Das Verhalten wird sich nur in Teilbereichen linear annähern lassen. Eine kurze Abhandlung über die Funktionsweise der elektronischen Ansteuerung findet man hier (https://www.mikrocontroller.net/articles/Brushless-Controller_f%C3%BCr_Modellbaumotoren).
Kurz gesagt misst der BLDC-Controller den gegenwärtigen Drehwinkel des Läufers und generiert phasenrichtig passende Ständerströme. Die Stromstärke wird über einen Regler (vermutlich P-Regler) geregelt, Sollgröße=von außen vorgegebene Führungsgröße, Istgröße= aktuelle Drehzahl. Um eine bleibende Sollwertabweichung gering zu halten ist die Proportionalitätskonstante nicht zu klein (oder es wäre vielleicht auch ein PI-Regler?).
Dadurch gäbe es allerdings bei großen Drehzahldifferenzen sehr hohe Ströme, die auf Rücksicht auf die Leistungsschalter (MOSFET) über einen zusätzlichen Regler begrenzt werden. Bei hohen Drehzahlen wird es außerdem eine Begrenzung der Ströme durch die Induktivität der Wicklungen geben.
Was in der Messung bei genauerem Hinsehen eher auffällt, ist, dass der Motor beim Bremsen eine höhere Zeitkonstante hat, als beim Beschleunigen.
Ich vermute, dass übliche BLDC-Controller für Elektroflug nur für Einquadrantenbetrieb geeignet sind, aktives Bremsen ist in der Anwendung kaum ein sinnvoller Lastfall. Wenn die Istdrehzahl höher ist als die Solldrehzahl wird man im einfachsten Fall nur den Strom auf Null regeln aber nicht aktiv bremsen.
Peter(TOO)
21.12.2015, 16:35
Das hat mein Vorgänger in etwa schon getan. Er hat stationäre Werte für Schub/PWM, sowie eine Sprungantwort des Systems Motor-Propeller gemessen. Diese hat kein erkennbares Überschwingen gezeigt, weshalb ich seine Annahme, das System als PT1 zu beschreiben, indem man die Induktivitäten des Motors als zweiten Energiespeicher vernachlässigt, schonmal für plausibel halte. Ein reines PT2 Modell würde daher glaube ich keine signifikante Verbesserung im Gegensatz zu seinem PT1 bringen.
Die Frage ist jetzt aber auch, wie alt diese Messungen sind. Das Innenleben der Blackboxen verändert sich dauernd.
Dadurch werden deine Messungen nur für ein bestimmtes Modell der Blackbox gültig sein, ein anderes Modell oder gar ein anderer Hersteller, können ganz andere Übertragungsfunktionen liefern!
Eine Moderne Blackbox müsste mindestens eine Strombegrenzung zum Schutz der Ausgangsstufe haben, evtl. auch noch eine Drehzahlbegrenzung. Wenn eine dieser Schutzschaltungen anspricht, verzerrt dies deine Sprungantwort, deshalb wurden auch mehrere Messungen der Sprungantwort, mit verschiedenen Ausgangsparametern, vorgeschlagen.
Was in der Messung bei genauerem Hinsehen eher auffällt, ist, dass der Motor beim Bremsen eine höhere Zeitkonstante hat, als beim Beschleunigen. Das möchte ich gerne in meinem Modell berücksichtigen und daher weg von der Linearisierung und mit (vereinfachten) DGLs in Simulink arbeiten.
Wie schon geschrieben wurde, dürfte die am Ein-Quadranten-Betrieb liegen. Da bremst dann nur der Luftwiderstand des Propellers und die Reibung in den Lagern.
MfG Peter(TOO)
oberallgeier
21.12.2015, 17:24
.. mein Vorgänger .. hat stationäre Werte für Schub/PWM, sowie eine Sprungantwort des Systems Motor-Propeller gemessen ..Na ja, stationär aber immerhin etwas.
.. Das Ganze gilt dann nur für die gemessene Kombination aus Luftschraube, Motor, Regler und Betriebsspannung ..Dazu kommt natürlich noch der Wirkungsgrad der Luftschraube, der sich mit der Fluggeschwindigkeit ändert, bei (Quadro-) Koptern auch mit der Schräganströmung im normalen Flugbetrieb. Da wird ne Menge Problematik im Ausdruck "stationäre Werte für Schub/PWM" liegen bleiben. Hilft Dir hier zwar nicht weiter ausser als Hinweis, dass Du Dir vielleicht für die Größenordnung der von Dir verwendeten Luftschrauben mal Vergleichswerte zwischen Standschub und Schub-in-Fahrt (insb. bei Auslegungsgeschwindigkeit) ansiehst.
Hallo, vielen Dank und bitte verzeiht mir, dass ich über die Festtage inaktiv war und eure Mühe erst jetzt würdigen kann ;) .
Na ja, stationär aber immerhin etwas.
Dazu kommt natürlich noch der Wirkungsgrad der Luftschraube, der sich mit der Fluggeschwindigkeit ändert, bei (Quadro-) Koptern auch mit der Schräganströmung im normalen Flugbetrieb.
Das wird auch Teil der Arbeit sein. Stichworte Anströmwinkel, Blade Flapping etc.
Dazu benötige ich aber halt ersteinmal ein sinnvolles Modell für den Antrieb, aus dem ich die Winkelgeschwindigkeit bekomme, um daraus dann hinterher den Schub und die Momente (unter Berücksichtigung der transitorischen Bewegung des Systems) abzuleiten.
Nach weiterer Recherche wird es wohl doch ein PT1-Glied, um das Zeitverhalten zu simulieren. Den nichtlinearen Zusammenhang zwischen PWM und RPM (sowie F und M) werde ich dann messen und mit einem Polynom annähern oder so ähnlich. Hatte da diesen Thread gefunden: https://www.roboternetz.de/community/threads/15522-DC-Motor-simulieren-%28Matlab-Simulink%29-%21/page3
Wie schon geschrieben wurde, dürfte die am Ein-Quadranten-Betrieb liegen. Da bremst dann nur der Luftwiderstand des Propellers und die Reibung in den Lagern.
Sowas in etwa habe ich es schon vermutet. Ich meinte mit "bremsen" allgemein erstmal die Verringerung der Drehzahl. Worum es mir geht, ist, dass bei der Drehzahlveringerung eben ein anderes (oder garkein?) Motormoment wirkt, und die Zeitkonstanten und/oder Verstärkungsfaktoren meiner Strecke, die ich für eine positive Sprungfunktion ermittelt habe, nichtmehr gültig sind.
Daher meine Frage: gibt es sinnvolle Möglichkeiten, wie ich dieses Verhalten messen und modellieren kann? Vielleicht auch irgendwie unabhängig von dem Verhalten beim Beschleunigen mittels irgendeiner Flankenerkennung in Simulink ö.Ä.? Sind nur Reibung und Luftwiderstand ausschlaggebend oder vielleicht je nach Drehzahl auch noch induzierte Ströme in den Wicklungen?
Bis dahin schonmal: Danke danke danke!
Peter(TOO)
30.12.2015, 03:19
Hallo,
Sowas in etwa habe ich es schon vermutet. Ich meinte mit "bremsen" allgemein erstmal die Verringerung der Drehzahl. Worum es mir geht, ist, dass bei der Drehzahlveringerung eben ein anderes (oder garkein?) Motormoment wirkt, und die Zeitkonstanten und/oder Verstärkungsfaktoren meiner Strecke, die ich für eine positive Sprungfunktion ermittelt habe, nichtmehr gültig sind.
Daher meine Frage: gibt es sinnvolle Möglichkeiten, wie ich dieses Verhalten messen und modellieren kann? Vielleicht auch irgendwie unabhängig von dem Verhalten beim Beschleunigen mittels irgendeiner Flankenerkennung in Simulink ö.Ä.? Sind nur Reibung und Luftwiderstand ausschlaggebend oder vielleicht je nach Drehzahl auch noch induzierte Ströme in den Wicklungen?
Tja, darauf gibt es keine allgemeine Antwort!
Vom Aufbau her, ist ein BLDC-Motor eine Drehstrom-Synchron-Maschine.
Diesen kann man aktiv bremsen, wenn man die Drehfeld-Frequenz langsamer macht, als den Rotor.
Nun gibt es aber unzählige Kombinationen aus BLDC-Motor und Steuerung/Regelung.
Im einfachsten Fall /Steuerung), verhält sich der BLDC-Motor wie ein normaler DC-Motor und die Drehzahl ergibt sich als Funktion der zugeführten Leistung.
Mit einer Regelung kann man die Leistung oder Drehzahl vorgeben. Wie sich diese Kombination dann verhält, hängt von den Algorithmen der Regelung ab. Da man heute digitale Regelungen verwendet muss das Verhalten dann eben auch nicht linear und symmetrisch sein.
Deshalb habe ich geschrieben, dass du nur einen konkreten Aufbau ausmessen kannst und entsprechend dein Modell auch nur für diesen Aufbau gilt!
OK, die selben Komponenten vom selben Hersteller sollten auch die selbe Charakteristik haben, zumindest innerhalb der angegebenen Toleranzen. Aber schon das Nachfolgemodell kann sich anders verhalten.
Die reale Technik ist nun mal nicht wirklich deterministisch!
Jedes Einzelteil hat nun mal seine Toleranzen. Im besten Fall kompensieren sich diese zu Null und im Schlechtesten zum Maximum.
MfG Peter(TOO)
Hallo,
Tja, darauf gibt es keine allgemeine Antwort!
Vom Aufbau her, ist ein BLDC-Motor eine Drehstrom-Synchron-Maschine.
Diesen kann man aktiv bremsen, wenn man die Drehfeld-Frequenz langsamer macht, als den Rotor.
Nun gibt es aber unzählige Kombinationen aus BLDC-Motor und Steuerung/Regelung.
Im einfachsten Fall /Steuerung), verhält sich der BLDC-Motor wie ein normaler DC-Motor und die Drehzahl ergibt sich als Funktion der zugeführten Leistung.
Mit einer Regelung kann man die Leistung oder Drehzahl vorgeben. Wie sich diese Kombination dann verhält, hängt von den Algorithmen der Regelung ab. Da man heute digitale Regelungen verwendet muss das Verhalten dann eben auch nicht linear und symmetrisch sein.
Danke dafür! Ich komme der Problematik langsam aber sicher auf die Spur...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.