Forum: Analoge Elektronik und Schaltungstechnik FOC Strommessung


von Jan Dijkstra (Gast)


Angehängte Dateien:

Lesenswert?

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
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

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.
von Jan Dijkstra (Gast)


Lesenswert?

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.

von Alexander (Gast)


Lesenswert?

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ß,

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
von Al3ko -. (al3ko)


Lesenswert?

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ß,

von Klaus (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Al3ko -. (al3ko)



Lesenswert?

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
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
von Jan Dijkstra (Gast)


Lesenswert?

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.

von Jan Dijkstra (Gast)


Lesenswert?

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.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

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

von Jan Dijkstra (Gast)


Lesenswert?

wow Tec

von Friedrich B. (Gast)


Lesenswert?

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

von Jan Dijkstra (Gast)


Lesenswert?

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.

von Jan Dijkstra (Gast)


Angehängte Dateien:

Lesenswert?

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

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

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

von Jan Dijkstra (Gast)


Lesenswert?

Alles klar. Danke Tec!

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
Noch kein Account? Hier anmelden.