Was wäre eine geeignete Motorsteuerung für diesen BLDC?

Ich möchte einige Stepper durch einen BLDC ersetzen, um einen reibungsloseren Betrieb und eine höhere Geschwindigkeit zu erzielen. Der BLDC-Motor, den wir verwenden möchten, ist dieser.

Es ist ein kleiner 2-Achsen-Roboter, der eine genaue Positionssteuerung erfordert, aber ich möchte nach Möglichkeit auch eine Geschwindigkeitssteuerung haben (anstatt nur eine Schritt- und Richtungseingabe). Die maximale Motordrehzahl liegt wahrscheinlich unter 100 U/min. Der Motor ist sensorlos und ich habe einige sensorlose Controller wie diesen gefunden , aber sie enthalten keine Positionssteuerung. Der Encoder an diesem Motor ist sowieso SPI, also bezweifle ich, dass ich einen solchen Controller finden werde.

Es wird bereits einen anderen Prozessor (RPi-basiert) geben, auf dem die Hauptanwendung läuft, aber er ist nicht in der Lage, die Hochgeschwindigkeitsanforderungen dieser Echtzeit-Motorsteuerung zu erfüllen, sodass ein weiterer externer Controller erforderlich ist. Ich dachte mir, dass eine Motorsteuerung wie die obige mit einer kleinen MCU zum Schließen des Positionsregelkreises funktionieren könnte, aber warum dann nicht einfach die MCU das Ganze erledigen lassen (abgesehen von der erforderlichen zusätzlichen Firmware-Entwicklung). Ich habe mir den PIC18F2431 angesehen, der ein Motor-Feedback-Modul enthält.

In diesem Fall würde ich wahrscheinlich UART oder SPI verwenden, um Bewegungsprofile zu senden und Positions- und Statusrückmeldungen an/von der MCU zu erhalten.

Irgendwelche anderen Optionen oder Faktoren, die ich berücksichtigen sollte?

Antworten (1)

Für niedrige Drehzahlen oder statische Positionierung können Sie keinen normalen sensorlosen Regler verwenden, da das Gegen-EMK-Signal zu schwach ist. Ihr Motor verfügt jedoch über einen eingebauten 14-Bit-Encoder, der den absoluten Rotorwinkel misst, wodurch das Design der Steuerung vereinfacht wird.

Ein PIC18F2431 sollte die Arbeit erledigen, da er über PWM-Ausgänge verfügt, die zum Antreiben eines 3-Phasen-BLDC-Motors (über eine 3-Phasen-FET-Brücke) geeignet sind. Der Encoder wird über SPI ausgelesen. Sie würden das Motion-Control-Modul nicht benötigen, da der Encoder bereits die erforderlichen Informationen bereitstellt. Die Firmware würde einem bürstenlosen Gimbal-Controller ähneln, mit dem Zusatz einer Winkelgeschwindigkeitssteuerung.

Beachten Sie, dass bürstenlose Kardanmotoren einen hohen Wicklungswiderstand haben, was im Vergleich zu einem herkömmlichen Motor zu einer geringen Ausgangsleistung und einem schlechten Wirkungsgrad führt. Sie werden normalerweise mit niedrigen PWM-Verhältnissen betrieben, um eine Überhitzung der Wicklungen zu vermeiden.

Danke @Bruce, guter Punkt zur Gegen-EMK bei niedriger Geschwindigkeit. Der Encoder würde also für Position und Kommutierung verwendet? Kann ich davon ausgehen, dass die Position physikalisch irgendwie auf die Wicklungen bezogen wäre? Im Datenblatt ist mir aufgefallen, dass der Encoder genullt werden kann. Ich mache mir nur Sorgen darüber, dass die Position des Encoders relativ zu den Wicklungen willkürlich ist.
Hoffentlich wurde der Sensor bereits mit der richtigen Nullposition programmiert. Wenn nicht, müssen Sie es möglicherweise vor dem ersten Gebrauch kalibrieren.
Bruce, hast du irgendwelche Gedanken darüber, wie diese Kalibrierung durchgeführt werden würde? Wäre es so etwas wie das Einstellen der Nullreferenz, um das maximale Drehmoment zu erreichen?
Führen Sie Strom durch 2 Phasen, um einen bestimmten Winkel einzustellen, oder drehen Sie den Motor und vergleichen Sie die Nulldurchgänge der Gegen-EMK mit den Sensorwerten. quantumdevices.wordpress.com/2010/03/17/…
Großartig, danke. Die erste Methode scheint jetzt naheliegend, hätte daran denken sollen.