Forum: Mikrocontroller und Digitale Elektronik Synchronmotor mit FOC: Wie Phasenspannungen messen, wenn PWM immer anliegt


von Jakob K. (jakl)


Lesenswert?

Hallo zusammen,

ich habe einen Motorcontroller für 3Phasen Synchronmotoren/PMSM/etc. 
entwickelt. Läuft super und ich kann Stromregelung und Sinuskommutierung 
machen.

Essentiell ist dafür natürlich die Erkennung der Rotorposition, das 
mache ich im Moment über einen Encoder.
Ich würde bei höheren Drehzahlen gerne auf sensorlose Positionserkennung 
gehen, einfach weil ich keine Effizienz verliere, wenn der Encoder nicht 
100% linear ist oder Offset hat.

Stand der Technik ist ja, dafür die Phasenspannungen zu messen, da sich 
daraus die Position genauer bestimmen lässt.

Wie kann ich aber die Phasenspannungen messen, wenn jede Phase durch die 
PWM entweder "HIGH" (auf Batteriespannung) oder "LOW" (Ground) ist?
=> Im Gegensatz zur Blockkommutierung, bei der immer eine Phase floatet, 
brauche ich ja für FOC immer einen Strom durch jede Phase.

Der altbekannte Spannungsteiler zwischen Phasen und einem virtuellen 
Sternpunkt misst ja dann "mist".

Bin dankbar für jeden Input!
Jakob

von Achim M. (minifloat)


Lesenswert?

Es gibt da Möglichkeiten.

Eine wäre ein Spannungsteiler, der einen Kondensator speist, um die PWM 
wegzufiltern. Also RC-Glied mit R nach Thevenin.

Eine andere wäre, davon auszugehen, dass die Stromregler ihre Sache 
schon gut machen. Die Ausgangsspannung lässt sich nach der 
Clarke-Inversen, also direkt bevor die Modulation berechnet wird, 
abgreifen. Ich schlage jetzt die Spannungsvektor-zu-Pulsweite-Berechnung 
(Teilen durch Zwischenkreisspannung) dem Modulator zu.

mfg mf

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

Hallo,
ich bin zwar überhaupt noch nicht soweit, einen FOC-Controller ganz zu 
begreifen, aber ich denke, dass die Rotorposition ab einer bestimmten 
Drehzahl mit back-EMF bestimmt werden kann. Das Prinzip dazu gibt es in 
zahlreichen Beispielen von Microchip, Ti und andere.
Gruss Jan

: Bearbeitet durch User
von Jakob K. (jakl)


Lesenswert?

Achim M. schrieb:
> Eine wäre ein Spannungsteiler, der einen Kondensator speist, um die PWM
> wegzufiltern. Also RC-Glied mit R nach Thevenin.

Aber das wird nicht funktionieren. Das was ich nach dem Filter 
rausbekomme ist genau das Duty Cycle der PWM. Diese kenne ich bereits 
(da ich sie ja in der SOftware berechne und mein PWM Register damit 
speise).

Achim M. schrieb:
> Die Ausgangsspannung lässt sich nach der
> Clarke-Inversen, also direkt bevor die Modulation berechnet wird,
> abgreifen.

Für die inverse Park Transformation brauche ich aber den Winkel. Und den 
versuche ich ja zu berechnen. Da beisst sich die Katze in den Schwanz. 
Oder übersehe ich da was?

Jan S. schrieb:
> aber ich denke, dass die Rotorposition mit back-EMF bestimmt
> werden kann.

Das ist genau das, was ich machen will. Geht auch.
Aber wenn du zu jeder Zeit eine Spannung an den Phasen vorgibts, kannst 
du die Phasenspannung nicht messen.

Meine Frage ist daher, ob es einen anderen Weg gibt, diese zu berechnen, 
oder ob ich meine PWM bspw. so umbauen muss, dass es doch einen 
Zeitpunkt gibt, an dem ich messen kann.

von Jan S. (Firma: Eigenbau) (vox_equus)


Lesenswert?

Trotz meinen bescheidenen Kentnissen denke ich, dass die Induktivität 
der Statorspulen die Höhen und Tiefen der Spannung durch PWM etwas zu 
glätten vermag. Bitte korrigieren wenn falsch.
Gruss Jan

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Jakob K. schrieb:

> Meine Frage ist daher, ob es einen anderen Weg gibt, diese zu berechnen,
> oder ob ich meine PWM bspw. so umbauen muss, dass es doch einen
> Zeitpunkt gibt, an dem ich messen kann.

Der Witz ist: Weder, noch.

Es gibt nämlich, sozusagen von Hause aus, immer einen Phasenwinkel, in 
dem es (mindestens) eine Spule gibt, die nicht "bestromt" wird. Genau 
genommen passiert das mindestens 3 Mal pro voller Umdrehung. Hängt halt 
von der Anzahl der Spulen ab. Tipp: Es genügt, eine davon zu messen. 
Jedenfalls nach Ablauf des feedbacklosen Startup. Natürlich: nur, wenn 
der nicht scheitert.

Wenn du das Konzept der Ansteuerung wirklich begriffen hättest, wäre dir 
das alles klar. Und somit natürlich auch klar, wo und wie gemessen 
werden muß.

Bei den frei verfügbaren Sourcen aus 'zig verschiedenen Lösungen wird 
auch genau das bereits umgesetzt. Auch daraus hätte man das natürlich 
entnehmen können.

Wenn man halt einfach nur das Konzept der Sache verstanden hätte...

von Jakob K. (jakl)


Angehängte Dateien:

Lesenswert?

Ob S. schrieb:
> Es gibt nämlich, sozusagen von Hause aus, immer einen Phasenwinkel, in
> dem es (mindestens) eine Spule gibt, die nicht "bestromt" wird. Genau
> genommen passiert das mindestens 3 Mal pro voller Umdrehung. Hängt halt
> von der Anzahl der Spulen ab. Tipp: Es genügt, eine davon zu messen.
> Jedenfalls nach Ablauf des feedbacklosen Startup. Natürlich: nur, wenn
> der nicht scheitert.

Danke für den Input. Ja das ist mir durchaus klar.
Wenn man sich den Sinusförmigen Strom anschaut, gibt es immer wieder mal 
Stellen wo kein Strom fließt.
=> Das heisst aber nicht, dass dort dann die PWM nicht aktiv ist! Siehe 
Bild im Anhang aus Renesas App-Note 78F0714, dort ist sehr deutlich 
dargestellt, dass auch bei 0A Phasenstrom die PWM Aktiv ist und zwar mit 
genau 50% Duty Cycle.

Bist du dir sicher, dass wir vom gleichen Ansteuerungsprinzip sprechen? 
Bei Normaler BLDC Block-Kommutierung stimme ich dir zu.

Ob S. schrieb:
> Bei den frei verfügbaren Sourcen aus 'zig verschiedenen Lösungen wird
> auch genau das bereits umgesetzt. Auch daraus hätte man das natürlich
> entnehmen können.

Ja dann hau doch mal her ;-)

von Wilhelm M. (wimalopaan)


Lesenswert?

Schau mal bei Benjamin Fedder vom VESC-Projekt nach. Er hat auch ein 
paar Videos zu sensorlosem FOC bei 0RPM mittels HFI 
(high-frequency-injection).

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?


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.