Forum: Mikrocontroller und Digitale Elektronik Motor mit Resolver, BLDC Kommutierung


von Daniel H. (picprogger)


Lesenswert?

Hallo,
ich habe einen Motor mit Resolver leider kein Datenblatt.
Ich habe die Rastungen bei einer mech.U/min gezählt und komme auf 36, 
also nehme ich an es sind 18 Magnetpolpaare.

Der Resolver spuckt mir 6 mal 360 Grad bei einer mech.U/min aus.

Ich habe jetzt eine einfache 60 Grad Blockkommutierung dran gehangen und 
der Motor dreht "schön konstant".

Jedoch habe ich das Problem, das der Motor aus dem Stand bei bestimmten 
Stellungen nicht anläuft, so z.B. 38Grad!

Ist die 60 Grad Kommutierung zu grob gewählt oder, an was könnte es 
liegen?

Danke für Eure Unterstützung
Gruß Daniel

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Daniel H. schrieb:

> Ich habe die Rastungen bei einer mech.U/min gezählt und komme auf 36,
> also nehme ich an es sind 18 Magnetpolpaare.

Nein! 36 Nuten bzw. Zähne im Stator. Das sagt erst mal nichts über die 
Pol(paar)zahl der Wicklung aus.
Du musst zwei Stränge bestromen (Gleichstrom) und dann der Rotor drehen. 
So kannst Du die Pole der Wicklung fühlen. Hierbei muss das elektrisch 
erzeugte Drehmoment aber deutlich größer sein als das Nutrastmoment.

Grüßle
Volker

von Daniel H. (picprogger)


Lesenswert?

Volker B. schrieb:

> Du musst zwei Stränge bestromen (Gleichstrom) und dann der Rotor drehen.
> So kannst Du die Pole der Wicklung fühlen. Hierbei muss das elektrisch
> erzeugte Drehmoment aber deutlich größer sein als das Nutrastmoment.

Bei 41V und 4A hat es geklappt!
Der Motor hat demnach 6 Magnetpole also 3 Magnetpolpaare.

Soll also heißen ich muss alle 60 Grad durch 3 Magnetpolpaare 
weiterschalten demnach alle 20 Grad oder kann da was nicht stimmen?

Grüße Daniel

von Daniel H. (picprogger)


Lesenswert?

Also die 20 Grad Kommutierung bringt gar nichts, so läuft er überhaubt 
nicht!
In gewissen Positionen macht der Rotor zwar einen Schritt aber, das war 
es auch.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Daniel H. schrieb:
> Also die 20 Grad Kommutierung bringt gar nichts, so läuft er überhaubt
> nicht!
> In gewissen Positionen macht der Rotor zwar einen Schritt aber, das war
> es auch.

Tut mir leid, aber ohne Informationen kann ich Dir leider nicht 
weiterhelfen. Mit dem Hellsehen hab' ichs leider nicht so...

Wie hast Du die Winkel für die Kommutierung ermittelt?

Grüßle
Volker

von Daniel H. (picprogger)


Lesenswert?

Hi Volker,
ich lese den Resolver mit dem PGA411 EVAL-Board von TI aus.
Dann per if else der jeweiligen Stellung den Step zugeordnet.
1
if(angle >   0 && angle < 60)  bldc_step = 1;              // muss sechs mal wiederholt werden für eine mechanische U/min
2
  else if(angle >  60 && angle < 120)  bldc_step = 2;            
3
  else if(angle >  120 && angle < 180)  bldc_step = 3;
4
  else if(angle >  180 && angle < 240)  bldc_step = 4;
5
  else if(angle >  240 && angle < 300) bldc_step = 5;
6
  else if(angle > 300 && angle < 360) bldc_step = 6;
7
  bldc_move();
Grüße

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Daniel H. schrieb:

>
1
if(angle >   0 && angle < 60)  bldc_step = 1;              // muss 
2
> sechs mal wiederholt werden für eine mechanische U/min
3
>   else if(angle >  60 && angle < 120)  bldc_step = 2;
4
>   else if(angle >  120 && angle < 180)  bldc_step = 3;
5
>   else if(angle >  180 && angle < 240)  bldc_step = 4;
6
>   else if(angle >  240 && angle < 300) bldc_step = 5;
7
>   else if(angle > 300 && angle < 360) bldc_step = 6;
8
>   bldc_move();
9
>

...und worauf bezieht sich Dein Winkel? Damit der Motor das maximale 
Drehmoment entwickelt muss die Durchflutung der bestromten Spulen 
elektrisch senkrecht, also 90°/p (p: Polpaarzahl) auf der 
Rotordurchflutung stehen (und dann sollte das Vorzeichen auch noch zur 
Drehrichtung passen).

Nur zur Information: Der Winkel, der sich einstellt, wenn Du zwei 
Stränge mit Gleichstrom bestromst, entspricht 0° el.

Grüßle
Volker

von Daniel H. (picprogger)


Lesenswert?

>...und worauf bezieht sich Dein Winkel?

das kann ich leider nicht sagen, ich denke auf den Rotor, das findet 
doch alles im Resolver statt.

>Nur zur Information: Der Winkel, der sich einstellt, wenn Du zwei
>Stränge mit Gleichstrom bestromst, entspricht 0° el.

Also muss ich x Grad vorher auf den nächsten Step schalten, um das max. 
Drehmoment zu erhalten, verstehe ich das richtig?

Grüße

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Daniel H. schrieb:
>>...und worauf bezieht sich Dein Winkel?
>
> das kann ich leider nicht sagen, ich denke auf den Rotor, das findet
> doch alles im Resolver statt.

Super Ansatz! Das wird schon alles passen, Augen zu und durch! Lernt man 
das heute an unseren Hochschulen so? Dann gebe ich diesem Land keine 10 
Jahre mehr, bis hier nur noch Hilfsarbeiten für China durchgeführt 
werden! :-(

Kleiner Hinweis: Resolver und Rotor bilden keine feste Einheit! Anstatt 
den Resolver exakt auszurichten, könnte man auch ganz einfach nach der 
Montage den tatsächlichen Winkel messen und den Winkelfehler durch die 
Firmware kompensieren. Preisfrage: Welcher Ansatz wird wohl der 
billigere sein?

Zweite Frage: Auf welche Lage soll man den Resolver justieren? Auf die 
Rotordurchflutung oder auf die Polradspannung? Und wie soll man sich 
entscheiden, wenn einem kein Prof. vorschreibt was "richtig" ist? :-)

> Also muss ich x Grad vorher auf den nächsten Step schalten, um das max.
> Drehmoment zu erhalten, verstehe ich das richtig?

Wobei das x so gewählt werden muss, dass die Mitte des zugehörigen 
Kommutierungsintervalls genau 90°/p vor dem gemessenen Winkel liegt, da 
die Polradspannung der Rotordurchflutung vorauseilt.

Warum wählst Du nicht den pragmatischen Ansatz? Führe so viele 
Kommutierungsschritte durch, dass der Rotor genau eine Umdrehung macht. 
Lass' Dir bei jedem Schritt den gemessenen Rotorwinkel ausgeben und 
notiere diesen. Wenn alle gemessenen Schrittweiten (in guter Näherung) 
gleich sind, stimmt die Beschaltung und die daraus resultierende 
Phasenfolge schon mal. Dann berechnest Du Dir aus den gemessenen Winkeln 
die Schaltzeitpunkte der Kommutierung. Und dann sollte das Motörchen 
drehen, wenn Deine Software nicht zu viel Zeit vertrödelt, was mir meine 
Glaskugel leider derzeit nicht anzeigt, aber die oben gezeigte 
if-else-Kaskade lässt Schlimmes befürchten...

Kurzer Nachtrag: der PGA411 rechnet nicht in Winkelgraden sondern löst 
eine Periode in 12 bzw. 10 Bit auf. Es ist m.E. wenig sinnvoll, zuerst 
Winkelgrad zu berechnen und dann aus diesen die Kommutierungszeitpunkte 
-- und das dann womöglich noch mit Gleitkommazahlen.

Zweiter Nachtrag: Bist Du Dir denn wenigstens sicher, dass der 
Winkelverlauf zu der von Dir für die Kommutierung zugrundegelegten 
Phasenfolge passt? Die geschilderten Phänomene könnten auch aus einer 
falschen Phasenfolge  resultieren.

Grüßle
Volker

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.