Hallo zusammen, ich bastle zur Zeit an einem Servo auf PMSM-Basis zum Antrieb eines Gimbals und suche dazu eine passende Ansteuerung. Im Netz findet man ja sehr viel zur Regelung von Brushless Motoren, allerdings bezieht sich das fast immer auf den Betrieb mit mehreren Umdrehungen, was sich vielleicht nicht direkt übertragen lässt. Mein Versuchsaufbau besteht momentan im Wesentlichen aus dem Brushless Motor (GB2208 von T-Motor, 12N14P) und einem optischen Encoder mit 500 CPR, der durch Flankenauswertung auf 2000 Ticks pro Umdrehung kommt. Der Motor wird über drei TC4452 versorgt, die mit den PWM-Ausgängen eines STM32F103 verbunden sind (Details: http://www.olliw.eu/2013/storm32bgc/). Beim Motor nehme ich an, dass er nach dLRK-Schema gewickelt ist (vgl. http://www.bavaria-direct.co.za/scheme/common/). Die Phasenströme kann ich aktuell leider nicht messen. Vom Motor habe ich einmal die Gegen-EMK mit dem Oszi angeschaut, was einen recht guten Sinus ergab. Nun wird allgemein empfohlen, den Motor in diesem Fall auch mit sinusförmigen Strömen anzusteuern. Daher habe ich dem Motor testweise mal folgende Spannungen vorgegeben, womit sich ein guter Rundlauf einstellt:
(Den Faktor 0.5 habe ich eingefügt, um den möglichen Wertebereich auf die Größe 1 zu normieren, wobei -0.5 einem PWM-Tastgrad von 0% und +0.5 einem Tastgrad von 100% entspricht.) Nun sind die Anforderungen an ein Servo ja nicht unbedingt der perfekte Rundlauf, sondern eher Haltemoment und Positioniergeschwindigkeit (Dynamik). Daher habe ich mir mal die Spannungen über den drei Spulenpaaren angeschaut:
[siehe Plot spulenspannungen.png] Dabei ist mir aufgefallen, dass der verfügbare Wertebereich nicht vollständig abgedeckt wird, d.h. die Amplituden haben den Wert +/- sqrt(3)/2 = +/-0.866, obwohl +/-1 möglich ist. Nehmen wir z.B. den Fall phi=0, für den sich folgende Außenleiterspannungen ergeben:
Damit ergeben sich folgende Spulenspannungen:
Diese können nun mit dem Faktor 2/sqrt(3) auf die größtmögliche Amplitude skaliert werden:
Um diese Spulenspannungen zu erreichen, sind folgende Außenleiterspannungen nötig:
Nun habe ich einmal (L1, L2, L3) und (L1*, L2*, L3*) an den Motor angelegt. In beiden Fällen liegt der "Rastpunkt" an der gleichen Stelle, soweit alles in Ordnung. Dann habe ich einmal die Haltemomente bestimmt, also wie viel Drehmoment nötig ist, bis der Motor in den nächsten Sektor springt. (Darf man in diesem Fall auch von Kippmoment sprechen?) Im Fall von (L1, L2, L3) waren dazu etwa 16 mNm erforderlich, mit den skalierten Größen waren es dann rund 20 mNm, also doch deutlich mehr. Für ein Servo ist der zweite Fall also wahrscheinlich der interessantere. Man könnte nun die allgemeinen Spulenspannungen mit dem Faktor 2/sqrt(3) skalieren und passende Funktionen für die Außenleiterspannungen suchen. Leider gibt es dafür im allgemeinen Fall unendlich viele Lösungen. Eine Möglichkeit habe ich mal angehängt (aussenleiterspannungen_bsp.png). Ich vermute mal, dass diese nicht wirklich optimal ist. Zum einen sind die Steigungen nicht stetig, zum anderen befindet sich das 3-Phasen-System nicht mehr im Gleichgewicht, wie man an der eingezeichneten Summe sehen kann. Oder stellt das beides gar kein Problem dar? Was mich nun interessieren würde: Was haltet ihr von diesem Ansatz? Gibt es vielleicht bessere Strategien? Oder würde es sich lohnen, den Strom zu messen und FOC zu machen?