Hallo Ikarus

danke für deinen Schaltplan. Ich habs mittlerweile auch rausgefunden wie ich es machen kann und bin auf dieselbe Lösung gekommen

Die Berechnungen der Dutycycles schaue ich mir grade an. Ich frage mich gerade, ob ich es wirklich wagen soll, die FOC zu implementieren. Das ist nämlich ein Semesterprojekt an meiner FH, und ich muss zuerst alle Konzepte etc. entwickeln, jetzt habe ich noch keine Hardware, wo ich das alles richtig testen kann. Zwar rechnet mein DSP recht locker mit Floatingpoint rum (Takt 160 MHz), aber ich möchte zwei BLDC-Motoren regeln, d.h. es sind insgesamt 4 digitale Regler zu implementieren (je einer für d und q). Dann noch ein überlagerter Drehzahlregler pro Motor, gibt 6 zu implementierende Regelkreise.
Auf der englischen Wikipedia habe ich soeben noch gelesen, dass für eine gescheite feldorientierte Regelung der Regler alle 1ms ausgeführt werden soll - mindestens. Das packt mein Controller zwar schon, aber ob es dann reicht?

Bisher habe ich immer mit Blockkommutierung gearbeitet und habe damit einige Erfahrung; ich wollte aber schon immer mal FOC machen, und da ich in diesem Projekt die Motoren besonders genau regeln möchte, dachte ich das wär eine gute Idee

Ich denke ich werde mal meine Hardware dann so planen, dass ich FOC machen kann, aber erst werde ich Blockkommutierung implementieren und dann wenn die Zeit noch reicht auf feldorientiert wechseln. Hmm.... Okay aber das ist eine andere Baustelle.



EDIT:
habe soeben die Gleichungen in der AN995 angeschaut. Diese kenne ich bereits Da gibt es aber ein Problem:
Zwar stehen da schon Gleichungen für TA und TB, aber da kommt noch der Winkel Psi vor, also der Winkel den der auszugebende Vektor mit der reellen Achse bildet. Nun, Psi kenne ich ja nicht... Ich habe nur d und q, bzw. nach der inversen Park-Transformation alpha und beta. In alpha und beta ist Psi ja implizit gegeben; muss ich da wirklich mit trigonometrischen Funktionen noch den Winkel ausrechnen? Wenn das so ist, erscheint mir dies recht verwegen, auch auf einem DSP. Dazu wäre ja ein arctan() nötig -- der braucht Rechenleistung ohne Ende :-/