Hallo, ich versuche seit Wochen die Feldorientierte Regelung zu verstehen.Dazu habe ich die Raumzeigermodulation implementiert und habe diese auf einem PMSM getestet und funktioniert endlich. Der Motor dreht sehr ruhig, ruhiger als mit Blockkommutation wenn ich im Open Loop einen konstanten Ud, Uq vorgebe. Jetzt möchte ich den Regelkreis mit der Strommessung vervollständigen. Umrichter Aufbau siehe Anhang. Die Messung der Ia, Ib Phasenströme erfolgt im Nullzeiger 000, bzw. wenn alle Low Side FETs leitend sind. Die abfallende Spannungen am R1 und R2 werden mit einem nichtinvertierenden OPV verstärkt und am uC gemessen. Nun verstehe ich eine Sache nicht. Ia, Ib können wie ich weiss, negativ werden. Wie messe ich dann die negative Ströme? Gruss, Jan
:
Verschoben durch Admin
Jan Dijkstra schrieb: > wenn > alle Low Side FETs leitend sind. In einer richtigen FOC werden nie alle Lowsides gleichzeitig leiten. Genauso wie nie alle Highsides gleichzeitig leiten. Da gibt es also noch Nachholbedarf. Jan Dijkstra schrieb: > Ia, Ib können wie ich weiss, negativ > werden. Nö. Wie soll das auch gehen? Du müsstest schon die Motorspeisung umpolen. Zum Verständnis poste ich mal ein Bild aus AVR447, die den Zustand der Ströme in den 3 Wicklungen bei zwei Durchläufen aller Sektoren zeigt. Unten die Hallsensoren.
:
Bearbeitet durch User
Beitrag #5381815 wurde vom Autor gelöscht.
Beitrag #5381823 wurde vom Autor gelöscht.
Matthias S. schrieb: > Jan Dijkstra schrieb: >> wenn >> alle Low Side FETs leitend sind. > > In einer richtigen FOC werden nie alle Lowsides gleichzeitig leiten. > Genauso wie nie alle Highsides gleichzeitig leiten. Da gibt es also noch > Nachholbedarf. Doch, doch. Wenn alle Low Side FETs leitend sind, sind die High Side FETs natürlich sperrend. > Jan Dijkstra schrieb: >> Ia, Ib können wie ich weiss, negativ >> werden. > Nö. Wie soll das auch gehen? Laut der Formel Ia + Ib + Ic = 0. Angenommen, wenn Ia positiv und betragsmäßig größte ist, müssen Ib und Ic negativ sein. Das ist der Fall im Sektor 1, denke ich.
Die Frage ist, wie viel Blindleistung gezogen wird. Da ein Motor dran hängt, ist ein gewisser Magnetisierungsstrom notwendig, weshalb der Wechselrichter nicht mit cos(phi)=1 läuft. Ergo gibt es eine Phasenverschiebung zwischen Strom und Spannung, so dass der Low Side FET leitend ist, der Strom aber negativ ist, also von Source nach Drain fließt. Der am Shunt gemessene Strom ist natürlich auch negativ. Wie man das Problem lösen kann: Bau einen Offset in deine OP Schaltung ein. Der Offset liegt bei 3,3V/2 und entspricht 0A. Alles >3,3V/2 ist ein positiver Strom, alles <3,3V/2 ist ein negativer Strom. BTW: Wenn du sowohl in 000 als auch in 111 die Strommessung durchführst, kannst du deinen Phasenverlust aufgrund der Totzeiten in der Schaltung (Sampling & Computation delay) reduzieren, falls eine schnelle Regelung benötigt wird. Gruß,
Jan Dijkstra schrieb: > Doch, doch. Wenn alle Low Side FETs leitend sind, sind die High Side > FETs natürlich sperrend. Wie soll das gehen? Wenn alle Lowside FET gleichzeitig leiten, schliesst du alle Spulen gegen Masse kurz. Durch Kurzschlusstrom bremst du damit den Motor durch die Gegen-EMK. Der Zustand kommt real nicht vor. Genauso wenig wie den 000 Zustand gibts den 111 Zustand bei einer korrekten Ansteuerung nicht. Auch beim 111 Zustand würdest du einfach nur alle Spulen kurzschliessen. Lies dich bitte mal da ein, z.B. bei Freescale, Microchip oder auch TI und schau dir nochmal die o.a. Grafik an. Es gibt keinen Zustand, bei dem alle Phasen low sind und auch keine, bei denen alle high sind.
:
Bearbeitet durch User
Mit den Nullzuständen (000 und 111) wird der Betrag des Raumzeigers beeinflusst. Je länger man 000 bzw 111 anwendet, desto kürzer wird der Zeiger. Die Länge des Zeigers hat wiederum Auswirkung auf die Ausnutzung der Zwischenkreisspannung. Je kleiner der Betrag ist, desto geringer die Phasenspannungen. Das ist Äquivalent zum Modulationsgrad bei Sinus PWM. Ich bin kein Antriebstechniker, weiß also nicht, ob mit maximalem Modulationsgrad gefahren wird (bei hohem Modulationsgrad steigen die Oberwellen an). Bei Sinus PWM habe ich einen Modulationsgrad von ca 0.9 im Kopf. Vielleicht mag ein Antriebstechniker ja Stellung beziehen, und mich diesbezüglich aufklären. Gruß,
Matthias S. schrieb: > Wie soll das gehen? Wenn alle Lowside FET gleichzeitig leiten, schliesst > du alle Spulen gegen Masse kurz. Durch Kurzschlusstrom bremst du damit > den Motor durch die Gegen-EMK. Na, erstmal flie0t der Strom weiter. Ist ja eine Induktivität. Erst wenn sich die Energie in der Spule an den Spulenwiderständen aufgebraucht hat und sich die Stromrichtung umkehrt fängt das Bremsen an. Temporär kann also dieser Zustand Sinn machen MfG Klaus
Klaus schrieb: > Temporär kann > also dieser Zustand Sinn machen Wozu denn? Ziel der FOC ist es doch, den Motor drehen zu lassen und nicht, Energie zu verbraten. Lest doch bitte mal in der Literatur erst was über Blockkommutation und dann über SVM, FOC oder FOR. In keiner Antriebsart ausser beim Bremsen werden alle Highsides oder alle Lowsides gleichzeitig durchgeschaltet. Die einzige Anwendung dafür ist der Bremsbetrieb. Jan Dijkstra schrieb: > Jetzt möchte ich den Regelkreis mit der Strommessung > vervollständigen. Wenn dieser Regelkreis allerdings die Geschwindigkeit des Motors regeln soll, ist es statt einer Strommessung hilfreicher, die Geschwindigkeit des Motors zu messen, die bei der FOR sowieso im Kontroller vorliegt. Eine Strommessung ist sinnvoller für Energiebilanz und Fehlererkennung.
Matthias S. schrieb: > Lest doch bitte mal in der Literatur erst Vielleicht könntest du die Referenz sowie die genaue Textstelle nennen, in der wir das nachlesen können. Bis jetzt sind wir 3 Leute hier im Thread, die der Ansicht sind, dass die Nullvektoren bei der Raumzeigermodulation angewendet werden. Raumzeigermodulation ist lediglich das Modulationsverfahren für den 3 Phasenumrichter. Ob am Ausgang ein Motor oder ein Generator oder irgendeine andere 3 phasige Last hängt, ist erstmal nebensächlich. In meiner Literatur (z.B. die im Anhang) werden die Nullvektoren angewandt. Zur Bildung des Referenzzeigers werden die zwei spannungsführenden Zeiger U1 und U2 verwendet, und die Zeit innerhalb einer Schaltperiode umfasst die Zeiten T1, T2 und T0. In der Zeit T0 besteht 000 oder 111. Matthias: Sprichst du wirklich von Raumzeigermodulation, oder vielleicht doch eher von Blockkommutierung? Blockkommutierung ist kein PWM Verfahren. Edit: Aus spra588: "The rest of the period is spent applying the null vector" Gruß,
:
Bearbeitet durch User
Al3ko -. schrieb: > Matthias: > Sprichst du wirklich von Raumzeigermodulation, oder vielleicht doch eher > von Blockkommutierung? Sowohl als auch. Und auch bei der Blockkommutierung werden zu keinem Zeitpunkt alle Lowsides gleichzeitig angeschaltet. Übrigens wird auch dort PWM angewandt, um die Motordrehzahl/Leistung zu steuern. Literatur: Application Note AVR447 Sinusoidal driving of three-phase permanent magnet motor Application Note AVR444 Sensorless control of 3-phase brushless DC motors Application Note AVR495: AC Induction Motor Control with AT90PWM Freescale Semi AN3234: Washing Motor Drive Mir wird aber bei dem Studium von AVR495 klar, worin der Irrtum des TE besteht. Die Zustände 111 und 000 werden als mögliche Konfiguration der 3 Endstufen erwähnt in Fig. 3-2 (Sektor 0 und Sektor 7). Allerdings ist beim Weiterlesen (Fig. 3-3 und Table 3-2) klar, das diese Zustände nicht zum Antrieb benutzt werden, lediglich Sektor 1 bis 6 werden dafür herangezogen, wie auch in allen anderen AppNotes. Das gleiche passiert in meinem FU, der hier beschrieben wird: https://www.mikrocontroller.net/articles/3-Phasen_Frequenzumrichter_mit_AVR Wenn man sich dort die Kontrolltabelle (in VFDTables.h) ansieht, bemerkt man, das es keinen 0,0,0 und auch keinen 255,255,255 Zustand gibt, und zwar unabhängig davon, ob man 'Pure Sine' oder 'Motor Waves' wählt. Hier sieht man eine Animation der Wellenformen: http://www.zum.de/dwu/depotan/apem112.htm
:
Bearbeitet durch User
Alexander schrieb: > Wie man das Problem lösen kann: > Bau einen Offset in deine OP Schaltung ein. Der Offset liegt bei 3,3V/2 > und entspricht 0A. Alles >3,3V/2 ist ein positiver Strom, alles <3,3V/2 > ist ein negativer Strom. Ich habe mich gefragt, wozu der 3.3V am nichtinvertierenden Eingang dienen soll. Jetzt macht es Sinn. > BTW: > Wenn du sowohl in 000 als auch in 111 die Strommessung durchführst, > kannst du deinen Phasenverlust aufgrund der Totzeiten in der Schaltung > (Sampling & Computation delay) reduzieren, falls eine schnelle Regelung > benötigt wird. Wie man auf dem angehängten Bild sieht, kann ich die Ströme nur im Zeiger 111 mit den am Low Side angebrachten Shunts messen.
Matthias S. schrieb: > Klaus schrieb: >> Temporär kann >> also dieser Zustand Sinn machen > > Wozu denn? Ziel der FOC ist es doch, den Motor drehen zu lassen und > nicht, Energie zu verbraten. Der Strom, der die Spule aufgeladen hat, muss ja weiterfließen. Dafür muss man die Low Side Fets gegen Masse kurzschließen. > Lest doch bitte mal in der Literatur erst was über Blockkommutation und > dann über SVM, FOC oder FOR. In keiner Antriebsart ausser beim Bremsen > werden alle Highsides oder alle Lowsides gleichzeitig durchgeschaltet. > Die einzige Anwendung dafür ist der Bremsbetrieb. > > Jan Dijkstra schrieb: >> Jetzt möchte ich den Regelkreis mit der Strommessung >> vervollständigen. > Wenn dieser Regelkreis allerdings die Geschwindigkeit des Motors regeln > soll, ist es statt einer Strommessung hilfreicher, die Geschwindigkeit > des Motors zu messen, die bei der FOR sowieso im Kontroller vorliegt. > Eine Strommessung ist sinnvoller für Energiebilanz und Fehlererkennung. Als Kaskadenregelung ist dieser Prinzip im Regelungstechnik bekannt. Der FOC dient ja innerer Stromregler, der mit einer sehr hohen Regelfrequenz läuft. Außen kommt der Drehzahlregler mit relativ niedrig ausgelegten Regelfrequenz im Einsatz.
Matthias S. schrieb: > Sowohl als auch. Und auch bei der Blockkommutierung werden zu keinem > Zeitpunkt alle Lowsides gleichzeitig angeschaltet. Übrigens wird auch > dort PWM angewandt, um die Motordrehzahl/Leistung zu steuern. > > Literatur: > Application Note AVR447 Sinusoidal driving of three-phase > permanent magnet motor > Application Note AVR444 Sensorless control of 3-phase > brushless DC motors > Application Note AVR495: AC Induction Motor Control with AT90PWM > Freescale Semi AN3234: Washing Motor Drive > > Mir wird aber bei dem Studium von AVR495 klar, worin der Irrtum des TE > besteht. Die Zustände 111 und 000 werden als mögliche Konfiguration der > 3 Endstufen erwähnt in Fig. 3-2 (Sektor 0 und Sektor 7). Allerdings ist > beim Weiterlesen (Fig. 3-3 und Table 3-2) klar, das diese Zustände nicht > zum Antrieb benutzt werden, lediglich Sektor 1 bis 6 werden dafür > herangezogen, wie auch in allen anderen AppNotes. > Das gleiche passiert in meinem FU, der hier beschrieben wird: > https://www.mikrocontroller.net/articles/3-Phasen_Frequenzumrichter_mit_AVR > > Wenn man sich dort die Kontrolltabelle (in VFDTables.h) ansieht, bemerkt > man, das es keinen 0,0,0 und auch keinen 255,255,255 Zustand gibt, und > zwar unabhängig davon, ob man 'Pure Sine' oder 'Motor Waves' wählt. > > Hier sieht man eine Animation der Wellenformen: > http://www.zum.de/dwu/depotan/apem112.htm Du hast deine eigene Applikation nicht verstanden! Wie fährt dein Frequenzumrichter eine Maschine bei 10Hz? Doch nicht bei voller Spannung? Sondern bei 15% oder so, jenach VFDTable. Wie machst du jetzt den 15% langen Spannungsvektor am Ausgang? PWM ja? Was macht diese PWM bei einem Sinus von 15% symetrisch um 50%? richtig Dutys von 35% bis 65%. Wenn jetzt eine sychrone drei phasige PWM auf jeder Phase einen Duty von unter 100% macht werden alle 3 low sides gleich zeitig eingeschaltet.... QED. Und das auch bei deiner Applikation, wenn du mir nicht glaubst schnapp dir n Scope in miss nach. Gruß Alex
Jan Dijkstra, schauen Sie sich https://www.mikrocontroller.net/attachment/360042/REGELUNG1_2004_11_1_UP_MIKROCONTROLLER_NET.png an. Vielleicht hilft Ihnen das weiter. Ströme werden in diesem Fall potentialfrei gemessen. VG F. Bloedow
Friedrich B. schrieb: > Jan Dijkstra, schauen Sie sich > https://www.mikrocontroller.net/attachment/360042/... > an. Vielleicht hilft Ihnen das weiter. Ströme werden in diesem Fall > potentialfrei gemessen. VG F. Bloedow Danke! Sieht sehr interessant aus.
Da viele sogar Tec auf meine Frage geantwortet haben, möchte ich noch eine paar Fragen stellen. Mein Motor hat 3 Hall Sensoren und leider keinen Resolver. Pro elektrische Umdrehung bekomme ich 6 Inkremente. Daraus wird ein Winkel mit Interpolation gebildet. Später möchte ich für die Winkelschätzung einen Sliding Mode Observer einsetzen. Meine Frage ist nun, wie bestimmt man den korrekten Startwinkel mittels Hallsensoren? Die Zustände der Hallsensoren haben selbe Reihenfolge (Gegen Uhrzeigersinn 462315) wie der Spannungszeiger (siehe Anhang). Kann man davon ausgehen, dass der Winkel beim Hallzustand [100] 0 Grad beträgt? und bei [110] 60 Grad. Gruss, Jan
Jan Dijkstra schrieb: > Kann man davon ausgehen, dass der Winkel beim Hallzustand [100] 0 Grad > beträgt? und bei [110] 60 Grad Leider hängt das vom Motor ab. Bei großen Marken wie Maxxon oder Faulhaber steht das im Datenblatt. Bei einem Chinesischen Motor solltest du das aus messen. Also einen Id einstellen bei dem der Motor sicher folgt und dann die Winkel der Zustandsänderung von den Halls in eine Tabelle eintragen. Es gibt auch Motoren bei denen die Halls nur 60° auseinander sind dann haste alle 30° eine Zustandsänderung. Ab und an sind die auch ungleichmäßig eingebaut. Also jenach Motor musst du entscheiden wieviel Aufwand du da reinsteckst. Gruß Alex
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.