Hi, Ich habe einen Motor Controller mit FOC und ich versuche zu verstehen, warum der Motor in eine Richtung besser dreht als in die andere, wie man auf dem Bild oben entnehmen kann. In eine Richtung entstehen starke Id und Iq Spitzen, was sich durch ein Rumpeln am Motor bemerkbar macht. Wenn ich zwei Phasen tausche, dann dreht der Motor in die andere Richtung schlechter, es liegt also nicht am Motor und auch nicht am Drehgeber. Was mir natürlich als erstes in den Sinn kam, ist der Offset-Winkel des Drehgebers und dies scheint in der Tat einen enormen Einfluss zu haben. Ich kalibriere diesen Winkel, indem ich eine Spannung in vd-Richtung einspeise, der Motor richtet sich also mit der d-Achse an und somit ist der Offset Winkel 0 rad. Wenn ich den Manuell ein bisschen verschiebe, dann bekomme ich es hin, dass der Motor in beide Richtungen gleich gut dreht, ABER das Drehmoment ist nicht mehr so stark (in beide Richtungen) wie vorher. Ich frage mich also, warum der Controller gerade im max Torque/Amp. Betrieb solche Probleme bereitet. Jemand eine Idee, was da sonst noch los sein könnte?
:
Verschoben durch Moderator
Moin, wie viel Strom nimmst du zum Ausrichten des Rotors mit Vd? Der wird sich aller Wahrscheinlichkeit nach nicht sauber ausrichten, sei es wegen eines Rastmomentes oder wegen externer Drehmomente. Wenn du den Winkel jetzt hindängelst das er in beide Richtungen das selbe Verhalten zeigt hast du den korrekten Winkel getroffen. Das der Antrieb jetzt mit nur einem Iq Strom nicht so viel Moment produziert wie mit einem verdrehten Winkel und damit einem Iq und einem wahrscheinlich negativen Id ist recht logisch wenn dein Antrieb eine IPM ist. Also ein signifikanter Teil des Moments aus der Reluktanz kommt. Grundsätzlich ist der Winkeloffset bei dem beide Richtungen gleich gut gehen ist der richtigere. Der Controller muss jetzt eine Regelstategie wie MTPA(maximum torque per amp.) unterstützen oder du stellst einen Drehzahl abhängigen Id ein, wenn du darauf Zugriff hast.
Hoi Alexander, Danke für deine Antwort. Zum Ausrichten nehme ich 1A, das sollte bei einem kleineren 50W Motor PMSM reichen. Ich kann Id sowie Iq einstellen, jedoch dachte ich, im MTPA stellt man Id=0 ein, erst beim Field Weakening nimmt man einen negativen Id, um höhere Drehzahlen zu erreichen?
Id = 0 ist nur für Oberflächen Magnete am Rotor richtig. Sobald die Magnete ein bisschen vergraben sind hast du reluktanz Moment das proportional zu -Id*Iq ist.
Hmm ok, nimmt man da einen Feed Forward Term oder sollte man da irgend einen Observer mit Regler implementieren?
www.ti.com/lit/an/spracf3/spracf3.pdf Ein feedforward reicht. Siehe Beschreibung von Ti
Ich habe das nun schon eine Weile gefixt, jedoch habe ich nun ein anderes Problem, zumindest scheint es so. Wenn ich einen Iq Strom vorgebe, dann wird in eine Richtung der Id Strom sehr groß, in die andere Richtung ist es kein Problem. Es kann hier nicht am elektrischen Offset Winkel liegen, diesen habe ich schon x-fach um versucht zu tunen (Durchswipen), jedoch hat sich das Problem nie beseitigt. Das ganze tritt auch erst ab einer gewissen Geschwindigkeit auf, so 2800rpm. Bei beiden Richtungen wird aber der Iq Strom negativ, jemand eine Idee, warum? Grüsse Bert
Moin, Hast du zu den Id/Iq Kurven auch Vd/Vq? Ich würde vermuten dass die Strom Regler nicht korrekt arbeiten.
Alex B. schrieb: > www.ti.com/lit/an/spracf3/spracf3.pdf ... in besagtem Paper steht, daß Ld größer Lq sein muß, damit ein positives Reluktanzmoment erzeugt wird (bei Id < 0 und Iq > 0) Ist es nicht genau andersrum - also Lq > Ld - oder mach ich einen Denkfehler?
Druckfehler. Wobei das ganze Maschinen abhängig ist. Es gibt auch Maschinen bei denen Ld>Lq ist. Dann bist du aber bei Synchronen Reluktanz Maschinen und nicht bei PMSM.
... danke für die Bestätigung! Druckfehler! ... kein Denkfehler! :-)
Jop die Formel stimmt ja. Und die Leute bei to sind auch nur Menschen
... der Widerspruch zum Text hat mich halt etwas verunsichert. So stimmt die Welt wieder.
Was oft nicht beachtet wird. Es lässt sich beim BLDC Motor, besonders wenn er Sensoren hat, die Drehrichtung nicht einfach durch Umpolen der Phasen ändern. Dabei entstehen Effekte wie Du sie beobachtet hast. Die Drehrichtungsumkehr muss vom Kommutierungsprogramm gemacht werden.
Ok, ich konnte das mit dem loggen von Vq und Vd jetzt noch umbauen. Wie man sieht, wie man sieht, bleibt Vd für beide Iq negativ, während Vq entsprechend ändert.
Steffen W. schrieb: > Was oft nicht beachtet wird. Es lässt sich beim BLDC Motor, besonders > wenn er Sensoren hat, die Drehrichtung nicht einfach durch Umpolen der > Phasen ändern. Dabei entstehen Effekte wie Du sie beobachtet hast. Die > Drehrichtungsumkehr muss vom Kommutierungsprogramm gemacht werden. Denkst du das ist hier das Problem? Für mich sieht es irgendwie eher aus, als würde Vd nicht korrekt geregelt. Wenn ich aber den Motor festhalte (Bild), dann kann er Id null regeln.
:
Bearbeitet durch User
Das ist doch schon mal aufschlussreich. Deine Regler arbeiten also ganz gut wenn der Motor sich nicht dreht. Und wenn der Motor im Leerlauf ist arbeiten sie nicht sauber. Bei der 1. Messung war der Motor am Ende bei Leerlaufdrehzahl? Bzw. War Vq am Spannungsmaximum? Hast du die Stromregler entkoppelt und die Gegenspannung vorgesteuert? Falls nicht lies dir mal durch wie man die Stromregler für PMSM auslegt und aufbaut.
Alex B. schrieb: > Bei der 1. Messung war der Motor am Ende bei Leerlaufdrehzahl? Bzw. War > Vq am Spannungsmaximum? Genau, der Motor war am Spannungsmaximum und Leerlaufdrehzahl. Aber in beiden Richtungen war das der Fall, wobei aber nur in eine Richtung Id Probleme macht. Alex B. schrieb: > Hast du die Stromregler entkoppelt und die Gegenspannung vorgesteuert? > Falls nicht lies dir mal durch wie man die Stromregler für PMSM auslegt > und aufbaut. Das hingegen habe ich nicht. Ich werde mir das mal noch anschauen, danke. Hast du evtl. ein Paper das diese Thema gerade abdeckt? Grüsse Bert
:
Bearbeitet durch User
Ich verweise da gern auf TIs "Teaching old motors new tricks" https://training.ti.com/teaching-old-motors-new-tricks-part-3-space-vector-modulation-field-weakening-d-q-axis-decoupling?context=1137615-31562-31459 Für dich ist speziell das d-q axis decoupling interessant. Gruß Alex
Danke, ich schau mir das mal an und versuche es zu implementieren.
Bert S. schrieb: > Wenn ich zwei Phasen tausche, dann dreht der Motor in die andere > Richtung schlechter, es liegt also nicht am Motor und auch nicht am > Drehgeber. Wenn du Mal die Phasen lässt, wie sie sind, stattdessen für Iq einen negativen Wert vorgibst? Phasen tauschen kann dir elektrisch einen gehörigen Fehlwinkel bescheren. Bert S. schrieb: > Ich kalibriere diesen Winkel, indem ich eine Spannung in vd-Richtung > einspeise, der Motor richtet sich also mit der d-Achse an und somit ist > der Offset Winkel 0 rad. Wenn dein Motor einen Kamelhöcker-förmigen Verlauf der BEMF aufweist, was auf das Feld der Magnete schließen lässt, weißt du denn in welchem der beiden Kamelhöcker dein Motor hängt? Zum Kalibrieren des Offsets zwischen Motor und Geber daher Vorwärts und Rückwärts eine Ganzzahl an Umdrehungen drehen, während du den Offset zwischen elektrischem Vorsteuerwinkel und gemessenen Winkel aufsummierst. Der elektrische Vorsteuerwinkel muss dazu mehrere Umdrehungen erfassen können und vor der Differenzbildung durch die Polpaarzahl geteilt werden. Modulo 360 nicht vergessen, aber das geht auch indem man den mechanischen Winkel auf ein int16_t abbildet. Die Summe dann durch die Anzahl der Rotationen teilen und das ist dein Offset in elektrisch. Achtung, je Richtung dem Motor ½ Umdrehung zum einpendeln gönnen, da also noch nicht summieren.
motorlegastheniker schrieb: > . Die Summe dann durch die Anzahl der Rotationen teilen und das ist dein > Offset in elektrisch. Offset in mechanischem Winkel natürlich. Sorry.
motorlegastheniker schrieb: > Wenn du Mal die Phasen lässt, wie sie sind, stattdessen für Iq einen > negativen Wert vorgibst? > Phasen tauschen kann dir elektrisch einen gehörigen Fehlwinkel > bescheren. Also nach dem Phasentauschen wird natürlich der elektrische Winkel neu berechnet.
motorlegastheniker schrieb: > Wenn dein Motor einen Kamelhöcker-förmigen Verlauf der BEMF aufweist, > was auf das Feld der Magnete schließen lässt, weißt du denn in welchem > der beiden Kamelhöcker dein Motor hängt? > > Zum Kalibrieren des Offsets zwischen Motor und Geber daher Vorwärts und > Rückwärts eine Ganzzahl an Umdrehungen drehen, während du den Offset > zwischen elektrischem Vorsteuerwinkel und gemessenen Winkel > aufsummierst. Der elektrische Vorsteuerwinkel muss dazu mehrere > Umdrehungen erfassen können und vor der Differenzbildung durch die > Polpaarzahl geteilt werden. Modulo 360 nicht vergessen, aber das geht > auch indem man den mechanischen Winkel auf ein int16_t abbildet. Die > Summe dann durch die Anzahl der Rotationen teilen und das ist dein > Offset in elektrisch. > Achtung, je Richtung dem Motor ½ Umdrehung zum einpendeln gönnen, da > also noch nicht summieren. Ok, dass muss ich auch nochmal probieren, aber ich habe auch versucht den Winkel zu tunen, indem ich über einen Schieber den Offset direkt verändern kann (+- 45° mechanischer Winekl), konnte aber keine Position finden, wo der Motor gut in die "schlechte" Richtung dreht. Auch würde der Motor bei schlechtem elektrischen Offset Winkel wohl Id nicht gleich gut in beide Richtungen im Stillstehen unterdrücken können, oder?
:
Bearbeitet durch User
Bert S. schrieb: > Auch würde der Motor bei schlechtem elektrischen Offset Winkel wohl Id > nicht gleich gut in beide Richtungen im Stillstehen unterdrücken können, > oder? Da hast du recht, die Kamelhöcker sind nie gleich groß und zudem auch je elektrischer Umdrehung noch unterschiedlich. Durch Drehen in beide Richtungen bekommt man das aber ziemlich gut rausgemittelt. Bert S. schrieb: > konnte aber keine Position finden, wo der Motor gut in die "schlechte" > Richtung dreht. Was passiert denn, wenn du die gute Richtung lässt und die Richtung deines q-Vektors umdrehst? Wenn du einen darüber gelegten Geschwindigkeitsregler hast, muss der eben positive als auch negative Geschwindigkeit verarbeiten können. Übrigens. Wenn du zwei Phasen tauscht, ist die elektrische Drehrichtung umgedreht. Dein Sensorsignal musst du dann aber auch dazu umdrehen, es empfiehlt sich, beides aufeinander abzustimmen. Abhängig von gewünschter mechanischer Richtung musst du halt die Drehzahlvorgabe positiv oder negativ einspeisen.
Noch was zu dem hier Bert S. schrieb: > Id nicht gleich gut in beide Richtungen im Stillstehen unterdrücken > können Ich hatte mal in einer Applikation einen Drehzahlregler, der aus Sicht der gewünschten Drehrichtung kein negatives Moment aufbringen sollte, also nach unten auf 0 begrenzt. Im Feldschwächbereich ist durch Fehlerwinkel ein gewollter großer D-Anteil zu einem tatsächlichen das so großen D-Anteil und kleinem Q-Anteil, Q positiv, geworden. Beim Eintritt in die tiefe Feldschwächung (am Phasenstromlimit) gab es dann einen Drehzahlabflug nach oben :(
Alex B. schrieb: > Für dich ist speziell das d-q axis decoupling interessant. Habe das mal noch implementiert, aber leider auch keine Besserung.
motorlegastheniker schrieb: > Was passiert denn, wenn du die gute Richtung lässt und die Richtung > deines q-Vektors umdrehst? Wenn du einen darüber gelegten > Geschwindigkeitsregler hast, muss der eben positive als auch negative > Geschwindigkeit verarbeiten können. Der Geschwindigkeitsregler kann positive und negative Geschwindigkeiten. Id bleibt auch unterdrückt in eine Richtung, bis etwa 3000 rpm, dann kommt es zur Resonanz und der Motor schwingt. motorlegastheniker schrieb: > Übrigens. Wenn du zwei Phasen tauscht, ist die elektrische Drehrichtung > umgedreht. Dein Sensorsignal musst du dann aber auch dazu umdrehen, es > empfiehlt sich, beides aufeinander abzustimmen. Abhängig von gewünschter > mechanischer Richtung musst du halt die Drehzahlvorgabe positiv oder > negativ einspeisen. Genau, das mache ich auch so.
Welche Filter hast du auf der Strommessung? Kompensiert du den aus der Gruppenlaufzeit resultierenden Winkel Fehler deiner Strommessung?
Bert S. schrieb: > Alex B. schrieb: >> Hast du die Stromregler entkoppelt und die Gegenspannung vorgesteuert? >> Falls nicht lies dir mal durch wie man die Stromregler für PMSM auslegt >> und aufbaut. > > Das hingegen habe ich nicht. Ich werde mir das mal noch anschauen, > danke. Hast du evtl. ein Paper das diese Thema gerade abdeckt? Gegenspannung vorsteuern kann man machen, ist aber nicht unbedingt gut für Dynamik, da bei positiven Lastsprüngen mit einem Drehzahleinbruch die Vorsteuerung zurückgenommen wird und der qRegler noch mehr nachlegen muss. Der Winkel der Vorsteuerspannung stimmt bei Nutzung von Reluktanzmoment bei kleinen Drehzahlen nicht ganz, in der Feldschwächung ist das dann nochmal ne andere Hausnummer. Oder sehe ich das falsch?
Deshalb steuert man basierend auf den Sollwerten vor. Wenn die istwerte als Grundlage für die Vorsteuerung genommen werden entstehen ganz leicht mitkopplungen wie die die du mit dem Lastsprung beschrieben hast. Man sollte aber allzu massive sollwertsprünge in der Drehzahl unterbinden. Da man die Stromspitzen nicht in den Griff bekommt. Das kommt sehr stark auf die Applikation an. Bei einem Umrichter der in Positionsregelung von einer Bahnplanung die Sollwerte für Drehzahl und Drehmoment erhältlich kann man diese sofort durch Steuern und dann kann der Regler anfangen fragen zustellen.
Alex B. schrieb: > Welche Filter hast du auf der Strommessung? Kompensiert du den aus der > Gruppenlaufzeit resultierenden Winkel Fehler deiner Strommessung? Ein normales Averaging. Habe auch schon versucht dort mal ein künstliches Delay einzuführen, jedoch hat auch das keine Veränderung gebracht.
Ich habe noch herausgefunden, dass der Motor Delta connected ist, muss ich da bei FOC etwas berücksichtigen?
Ich meinte in Hardware! Delta musst du nicht beachten.
Mit den 400kHz Bandbreite des INA bist du bei ca. 10us Gruppenlaufzeit. Bei deinen 3000rpm reden wir von 50Hz und Mal 8 Pole angenommen bist du bei 200Hz elektrisch. Was bei 10us weniger als 1° ist. Das sollte also kein Problem sein. Wie Samplest du die Stromsignale? Vor allem wie lang? Kommt es ggf zu Störungen darauf bei hoher Aussteuerung der Brücke?
Alex B. schrieb: > Wie Samplest du die Stromsignale? Vor allem wie lang? Kommt es ggf zu > Störungen darauf bei hoher Aussteuerung der Brücke? Ich verwende den DMA mit einem circular buffer, wobei die Buffer Grösse für ia und ib 20 Samples ist. Diese average ich dann. Die Messung ist auf 3 cycles eingestellt für ein sample, also die minimale hold Zeit. Der ADC läuft mit 25MHz, also brauchen die 20 Samples 2.4us. Störungen kann ich sonst keine erkennen. Ich habe auch schon auf 300 Samples erhöht, um zu sehen, ob es einen unterschied macht. Aber es scheint kein Problem zu sein.
:
Bearbeitet durch User
Ok was ist mit deinem Geber? Was verwendest du da? Hat der ggf ein problem?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.