Hi,
Vor allem wie man es am besten realisiert. Und was ich alles falsch gesagt habe.
Ist mir ein bisschen zu aufwendig, da nun zu schauen was alles falsch oder richtig war, aber ich sage mal wie ich an die Sache ran gehen würde - davor sei noch gesagt, dass der Bau von Endstufen nicht unbedignt mein Gebiet ist (mosfets & deren Ansteuerung...) und ich hauptsächlich in der Digitalen Welt lebe:

Als Endstufe brauchst du bekanntlich 6 Mosfets, die wie auch immer mit PWM angesteuert werden. Ich empfehle da auch ein IC, dass die Deadtime automatisch einfügt (zum Vergleich: ich nehme IR2184 - sind für deine Ansprüche allerdings nicht zu empfehlen)

Die Eingänge der Mosfet-Treiber werden so geschaltet, dass nur 3 PWM Kanäle nötig sind (z.b. mit einem Inverter die anderen 3 Signale für die Endstufen nehmen, oder ein Treiber-IC, dass es eh integriert hat...)

Dann brauchst du noch 2 Stromsensoren, die in zwei Motorphasen den Strom messen, den du regeln willst. Bei kleineren Strömen wie sie bei mir vorkommen nehme ich Shunts, bei Strömen wie sie bei dir vorkommen dürften Hallsensoren sinnvoll sein (gibts als fertige Strom-Sensor-ICs oder du bastelst selber welche mit Ferritkern & Hall-Sensor).
Zusätzlich wirst du einen Winkelgeber brauchen, der möglichst genau den Rotor-Winkel verrät - ein einfacher HEDS/HEDx (siehe eBay) sollte schon reichen. Ich befürchte allerdings, dass du einen Absolutgeber brauchen wirst, denn bevor du das erste mal Strom durch den Motor schickst, musst du wissen wo der Rotor sich befindet - sonst gibt es einen unkontrollierten Ruck um 0-60° (je nach Motor & Glück) beim Einschalten (Es gibt auch elektronische Wege das zu messen, aber da kann ich nichts genaueres zu sagen) !!!.

Als Gehirn dürfte ein AVR noch ausreichend sein - mit PICs kenne ich mich nicht so aus, aber PICs sind langsamer soweit ich weiß... ob der reicht kann ich dir nicht garantieren.
Die große Ausnahme sind einige dsPIC DSPs, das sind Digitale Signal Prozessoren, die extra für Motor-Regelung entworfen wurden - damit wäre dann sogar FOC möglich (ist natürlich aufwendiger & C-Compiler kostet glaube ich auch).

In diesem Bild vom Link oben(der übrigends bei mir geht), siehst du wie die Stromregelung dann ablaufen müsste:
Bild hier  

Im Bild ist das Eingangssignal das gewünschte Drehmoment - da du wahrscheinlich allerdings eine Drehzahlregelung haben willst, müsstest du da noch einen PI Regler dazu machen, der Soll & Ist-Drehzahl vergleicht und dessen Ausgangswert der "desired torque" ist.

Du hättest dann also drei PI Regler in deinem AVR, der erste Regelt die Drehzahl nach, indem er das gewünschte Drehmoment einstellt.

Das Drehmoment ergiebt sich aus dem Strom, der durch die Phasen fließt und dem Winkel zwischen Drehfeld und Rotor-Lage!!. Es kann extrem viel Strom fließen und trotzdem hat der Motor 0 Drehmoment - wenn der Strom ein Drehfeld in falscher Winkellage ergibt (deshalb ist der Drehgeber wichtig).
Wenn zwischen dem Elektrischen Feld im Motor (Drehfeld, vom Strom erzeugt) und dem "Magnet vom Rotor" ein 90° Winkel ist, so hat der Motor das größte Drehmoment - bei 0° hat der Motor kein Drehmoment (obwohl Strom fließt).

Der "desired torque" Eingang bestimmt also das Drehmoment, indem es den Winkel zwischen Drehfeld & Rotor ändert. Je nachdem, was die Drehzahlregelung ergibt, wird der Winkel höher oder kleiner (um Strom zu sparen sollte auch der Strom mit dem Winkel niedriger werden - da bin ich mir aber nicht ganz sicher wie es in der Praxis läuft, da ich mich hauptsächlich mit FOC beschäftigt habe).

Nachdem der Winkel nun für das gewünschte Drehmoment angepasst wurde, werden die Ströme berechnet, die im Motor fließen müssen, damit er das Drehmoment erreicht. Dazu wird eine Sinus-Tabelle gespeichert, aus der die Werte für die drei Phasen errechnet werden ( Atmel hat ein paar nette BLDC-Dokumente, aus der du dir den Winkel->Strom-Werte Algorithmus klauen könntest).
Die so berechneten Stromwerte nimmst du als Soll-Wert für deine zwei PI-Strom Regler. (die dritte Leitung muss nicht geregelt werden, denn der Strom in der dritten Leitung hängt nur von den anderen beiden, geregelten Leitungen ab).

Die Strom-Regelung sollte möglichst schnell laufen (am Besten mit der PWM-Frequenz, sodass vor jeder Periode ein Korrektur-Wert angewendet wird).
Die Drehzahl-Regelung muss nicht so schnell sein, je nach Trägheit deines Antriebs... Ich vermute 200 Hz könnten schon reichen.



Sooo, jetzt fällt mir erstmal nichts wichtiges mehr ein und du dürftest einen groben Überblick über die Geschichte haben.


Hier will ich noch mal erwähnen, dass ich kein Profi bin und mich irren kann... vorallem habe ich mich hauptsächlich mit FOC und nicht mit Sinus-Kommutierung beschäftigt. Fehler können also vorhanden sein - Korrektur erwünscht!

MfG Alex