Forum: Mikrocontroller und Digitale Elektronik Vektorregelung / FOC mit Hobby uC


von Robert M. (molle_ghc)


Lesenswert?

Hallo,

ich habe mich etwas in das Thema Vektorregelung eingelesen und man 
findet ja viele Informationen zu den theoretischen Grundlagen der 
Vektorregelung. Ich bin am überlegen, ob ich so etwas mal als Bastel 
Projekt für einen BLDC Motor umsetzen. Wenn jetzt die Frage kommt, für 
welchen Einsatzzweck und warum nicht U/f? Es ist einfach Interesse an 
dieser Regelung.

Bezüglich praktischer Umsetzung habe ich jetzt nicht so viel gefunden. 
In den Application Notes werden häufig Anwendungen mit darauf 
spezialisierten Controllern oder speziellen SDK, z. B. STM. Was ich noch 
gefunden habe ist, dass die FOC viel Rechenpower erfordert, wenn sie in 
Software umgesetzt hat und es deswegen dedizierte Controller gibt.
Ich habe jetzt aber kaum Informationen oder DIY Seiten gefunden, wo eine 
Vektorregelung mit einem Standard Controller, als der für Hobbyzwecke 
geeignet ist, umgesetzt wurde und beschrieben wird.

Deswegen die Frage, hat jemand von euch schon mal eine Vektorregelung 
für einen BLDC mit einem Standard Controller, z. B. STM32F103C8 oder AVR 
umgesetzt? Idealerweise sensorlos.

Falls das keinen Sinn macht, woran hapert es? ADC Speed? PWM Speed? 
Rechenpower?

Grüße,
Robert

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


Lesenswert?

Robert M. schrieb:
> Deswegen die Frage, hat jemand von euch schon mal eine Vektorregelung
> für einen BLDC mit einem Standard Controller, z. B. STM32F103C8 oder AVR
> umgesetzt?

Aber sicher. Mega88, XMega192 und STM32F100. Allerdings haben unsere 
Motoren Sensoren.
Das Prinzip wird in Application Note AVR447 von Microchip/Atmel 
beschrieben. Es wird also nicht trigonometrisch gerechnet, sondern mit 
Tabelle gearbeitet.   Ein paar dieser Chips haben recht brauchbare 
Hardware Unterstützung wie die AWEX des XMega oder die Advanced Timer 
bei STM32. Nur der kleine Mega88 muss halt alle Timer opfern.

von Motorroller (Gast)


Lesenswert?

Ich hab das mit nem S12X mal gemacht. 16Bit Rechner, 48MHz.

Also STM32 schafft das locker.

Du schreibst doch selbst, dass Du das SDK für STM32 gefunden hast, 
deshalb versteht ich die Frage noch nicht ganz. Das wäre doch genau das 
passende für Dich.

von Al3ko -. (al3ko)


Lesenswert?

Robert M. schrieb:
> Deswegen die Frage, hat jemand von euch schon mal eine Vektorregelung
> für einen BLDC mit einem Standard Controller, z. B. STM32F103C8 oder AVR
> umgesetzt? Idealerweise sensorlos

Mit dem STM32F103C8 sehe ich keine Probleme, eine FOC zu implementieren.

Rechnerei:
Clarke - Park Transformation,
2x PI Regler,
Inverse Clarke - Park Transformation

Die PWM kannst du sogar mit dem internen PWM Modul des STM32F103C8 
generieren.

Gruß,

: Bearbeitet durch User
von Robert M. (molle_ghc)


Lesenswert?

Danke schon mal für die Antworten und Hinweise.

Matthias: Kann es aber sein, dass in der AVR447 die Blockkommutierung 
und nicht die Vektorregelung beschrieben wird?

Motorroller :
>Du schreibst doch selbst, dass Du das SDK für STM32 gefunden hast,
>deshalb versteht ich die Frage noch nicht ganz. Das wäre doch genau das
>passende für Dich.

Wundert mich halt, warum es dafür extra eines SDK benötigt....

Ansonsten würde ich mir mal so einen STM32f103c8t6 bestellen und mal 
Ausschau halten nach nem Motor und überlegen, ob ich die LE selber löte 
oder nen fertigen Treiber finde.

Grüße,
Robert

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


Lesenswert?

Robert M. schrieb:
> Kann es aber sein, dass in der AVR447 die Blockkommutierung
> und nicht die Vektorregelung beschrieben wird?
Nö.
Der Titel der Application Note lautet:"AVR447: Sinusoidal driving of 
three-phase permanent magnet motor using ATmega48/88/168"

von John P. (brushlesspower)


Lesenswert?

Robert M. schrieb:
> Wundert mich halt, warum es dafür extra eines SDK benötigt....

ST's Motor SDK beinhaltet 2 Dinge

- Bibliotheken für den ganzen Motor Control Code (Park/Clark/config 
usw.)
- und eine grafische oberfläche um deine ganzen Motor/Hardware parameter 
einzugeben. Auf dieser grundlage wird dann der Code entsprechend 
angepasst.

Du kannst aber auch nur die Lib nehmen ohne die SDK. Ist aber 
umständlich weil da keiner durchsieht.

von MiMa (Gast)


Lesenswert?

In Instaspin von TI wurde genau das umgesetzt. Ist zwar kein 
Bastelprojekt aber dafür gut dokumentiert.

von vcbnvc (Gast)


Lesenswert?

ein weiteres Projekt:
https://github.com/vedderb/bldc/

von Nils P. (ert)


Lesenswert?

Robert M. schrieb:

> ... dass die FOC viel Rechenpower erfordert,...


Die FOC braucht nicht viel Leistung... Das Problem ist eine schnelle 
drei Phasen-PWM mit einer guten Auflösung.

Bei meinem 160MHz F4 Stm32 hatte ich ~12Bit PWM bei 18kHz (wenn ich mich 
richtig erinnere :-) )

Der STM hat gute Features für PMSM. Die (PWM-) mittenzentrierte 
Strommessung direkt via DMA ist geilo, denke aber das kann jeder 
aktuelle Cortex F4 mit ein bisl Wumms.

Greez Ert

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.