Moin zusammen,
momentan versuche ich einen einfachen BLDC-Motor (siehe Bild im Anhang) sensorlos mit FOC zum Laufen zu bringen. Ziel ist vor allem, dass ich das Thema FOC genauer verstehe. Dazu habe ich mir eine Platine in KiCAD entworfen und produzieren lassen. Ich mache die Strommessung in den Phasen mit einem INA240. Als Mikrocontroller habe ich so ein BluePill-Board (stm32f103c8t6) genutzt. Die SW habe ich mir selbst zusammen programmiert nachdem ich diversen Kram gelesen habe. ;) Die notwendigen Clark-/Park-Transformationen und der SMO zur Winkelbestimmung scheinen auch zu laufen. Id/Iq-Stromregler und der Drehzahlregler arbeiten auch. Zumindest läuft der Motor Closed-Loop sauber, solange die Drehzahl nicht zu hoch wird. Danach scheint die Rechenkapazität vom Controller nicht mehr ausreichend zu sein. Schwierigkeiten habe ich momentan beim Verständnis von Id. Normalerweise soll das ja auf 0 geregelt werden, wenn man nicht im Feldschwächebetrieb unterwegs ist. Sobald ich das mache, stockt der Motor aber und bleibt stehen. Entweder muss ich momentan Id-Soll = Id-Ist setzen, damit der Regler nicht arbeitet oder Id auf einen negativen Wert setzen. Id-Ist oszilliert auch merkwürdig. Einen Verlauf dazu habe ich mal angehängt. Die y-Achse muss ignoriert werden. Das ist nur ein Skalierungsthema. Merkwürdige Sprünge im Winkel sind auch nicht real. Die serielle Schnittstelle liefert nur abschnittsweise Daten.
Hat jemand eine Idee woher die Oszillationen von Id kommen und warum der Wert negativ ist? Habe ich in meiner SW evtl. was vermurkst oder liegt das am Motor? Vielleicht hat ja auch jemand eine gute Quelle zum Nachlesen.







