Probleme mit bürstenlosen DC-Motoren bei hohen Geschwindigkeiten

Für ein Projekt verwenden wir einen bürstenlosen Gleichstrommotor (BLDC). Alles funktioniert gut, bis wir versucht haben, hohe Geschwindigkeiten zu erreichen. Ich werde zuerst mein Setup erklären und dann unsere Probleme anhand einiger Grafiken erläutern. Leider habe ich nicht genug Punkte, um alle meine Bilder in separate Links zu stellen, also können sie hier gefunden werden .

1.0-Setup

Im Setup kommt folgende Hardware zum Einsatz:

  • BLDC-Motor: Tiger-Motor U8 (135kV)
  • Bewegungssteuerung: SOMANET DC 1K
  • Encoder: RM08 12-Bit-Absolut-Encoder

Eine Übersicht über den Aufbau findet sich in Bild (1)

Geben Sie hier die Bildbeschreibung ein

1.1 Anforderungen und Parameter

Wir brauchen etwa 4800 [RPM] vom Motor. Der Tiger-Motor hat einen kv-Wert von 135 [RPM/V], der Anschluss an eine 48-V-Versorgung bedeutet, dass er theoretisch bis zu 6500 [RPM] erreichen sollte. Die Spezifikation enthält ein Szenario, in dem es 5000 [RPM] erreicht, während ein Propeller daran angeschlossen ist, sodass 4800 [RPM] ohne Last kein Problem darstellen sollten.

2.0 Problem

Wir kommen nicht einmal in die Nähe der 4800 U / min, ein Diagramm der Motorgeschwindigkeit gegenüber dem Phasenstrom ist in Bild (2) dargestellt. Wir können 2 Probleme aus diesem Diagramm identifizieren.

2.1 Ineffiziente Kommutierung

Als erstes fiel im Test auf, dass bereits ca. 10 [A] benötigt wurden, um bei 3200 [U/min] ohne angeschlossene Last zu drehen. Dies scheint durch ineffiziente Kommutierung verursacht zu werden, wir dachten, dass es zwei Hauptursachen dafür gibt.

2.1.1 Phasenverschiebungsfehler

Möglicherweise liegt ein Fehler im verwendeten Phasenversatz vor, dies führt zu einem linearen Anstieg des erforderlichen Stroms mit der Geschwindigkeit. Dies lässt sich am besten durch eine Feinabstimmung des Offsets bei hoher Geschwindigkeit lösen. Unsere Kurve scheint jedoch nicht linear zu sein, daher scheint dies nicht der Fall zu sein.

2.1.2 Verzögerungsfehler

Es gibt eine gewisse Verzögerung zwischen der Abfrage der Position vom RM08 und dem Anlegen der neuen Spannung. Diese Verzögerung kann dazu führen, dass der Strom mit der Motorgeschwindigkeit exponentiell ansteigt, was in unserem Fall zutrifft.

Durch die Addition aller Verzögerungen fanden wir eine Gesamtverzögerung von ~0,1 ms im System (siehe Bild (3)). Das Drehen mit 3000 U / min = 50 Hz und die Verwendung von 21 Polpaaren bedeutet, dass die elektrische Drehfrequenz 1050 Hz beträgt, dann würde eine Verzögerung von 0,1 ms einen elektrischen Fehler von 37,8 Grad verursachen. Dies verursacht wahrscheinlich die Ineffizienz!

2.2 Kontrolle wird verrückt

Wenn wir versuchen, über ~ 3200 U / min zu gehen, beginnt der Motor viel Strom zu ziehen und macht viel Lärm. Das bedeutet, dass der Motor nicht über 3000 U / min läuft, dies scheint im Moment das dringendste Problem zu sein.

Spannungsabhängigkeit

Normalerweise wird die Motorgeschwindigkeit durch die Gegen-EMK begrenzt, wenn die Gegen-EMK dieses Problem verursachen würde, wäre das Problem spannungsabhängig. Daher wurden einige Messungen bei verschiedenen Spannungspegeln durchgeführt, siehe Bild (4) und 卌.

Der Moment, in dem der Motor nach dem Geschwindigkeitsdurchlauf stoppt, scheint linear mit der Spannung anzusteigen. Ein weiteres interessantes Ergebnis ist, dass der Motor bei 30 V einfach aufhört, dem Geschwindigkeits-Sweep zu folgen, während der Motor bei höheren Spannungen (40 V und 43 V) plötzlich auf eine niedrigere Geschwindigkeit abfällt. Beachten Sie, dass der 46-V-Test vor diesem Moment abgebrochen wurde, da zu hohe Stromspitzen durch das SOMANET (35 A) flossen. Es scheint jedoch unwahrscheinlich, dass die Gegen-EMK das Problem ist, da Tiger selbst 5000 U / min erreichen konnte.

Lösungen

Für das erste Problem dachten wir, wir könnten etwas verwenden wie:

Pcorr = Penc + t_delay * Vel.

Mit:

  • Vel: Winkelgeschwindigkeit
  • t_delay: die Verzögerungskompensationsverstärkung
  • Penc: die Encoder-Position für den Rotor
  • Pcor: die verzögerungskompensierte Position

Dies hat das Problem jedoch überhaupt nicht gerettet. Haben Sie weitere Vorschläge?

Für das zweite Problem fällt uns keine Ursache ein, fällt Ihnen eine ein?

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Ich wette, das Problem liegt im Encoder. Die magnetostriktiven Encoder werden nicht für die Rückmeldung der Servosteuerung verwendet. Sie würden die Position mit Verzögerung ausgeben.
Können Sie die Gegen-EMK-Rotorpositionserkennung verwenden, wenn Sie sich mit mäßiger Geschwindigkeit drehen? Das ist ziemlich normal für BLDC-Treiber, die Propeller drehen, tatsächlich haben die meisten für solche Anwendungen überhaupt keine Hall- oder Encoder-Sensoren. Ihre Stütze könnte groß genug werden, dass das Starten im offenen Regelkreis schwierig sein könnte, aber selbst wenn Sie einen Sensor/Encoder zum Starten verwenden, ist eine Umschaltung mit Geschwindigkeit wahrscheinlich sinnvoll.
Überprüfen Sie die Position des INDEX- und Rotorphasengebers und den Ausgangszustand im Vergleich zum statischen Drehmoment, oder melden Sie Probleme dem Kundendienst: service01@rctigermotor.com, wenn Sie dies nicht wissen
Sie sollten die Vektorstromsteuerung verwenden.
Somanet unterstützt feldorientierte Steuerung (FOC) und sensorlose Kommutierung, aber wir haben keine Ahnung von der Einrichtung. Er "sollte" auch eine Kommunikationsrate von 400 kbs verwenden.
@ChrisStratton Vielleicht hätte ich erklären sollen, dass der Motor nicht für eine Drohne verwendet wird, sondern für ein Exoskelett. Wir haben uns hauptsächlich aus Sicherheitsgründen für einen Encoder entschieden (Back-EMF ist weniger genau für die Bestimmung des Winkels, hauptsächlich bei niedrigen Geschwindigkeiten, wie Sie sagten).
@ProjectM Sie sollten Ihren Positionsgeber Ihrem (anscheinend sehr hohen Übersetzungsverhältnis, wenn Sie diese Drehzahlen wünschen) Untersetzungsantrieb nachschalten und die Gegen-EMK im Hochgeschwindigkeitsbetrieb oder 3 Hallsensoren im Niedriggeschwindigkeitsbetrieb für die eigentliche Kommutierung verwenden. Sie benötigen einen Kommutierungsregler, um den Motor zu betreiben, und einen äußeren Regelkreis, um den Positionsfehler zu schließen.
@GregoryKornblum Wir verwenden tatsächlich die FOC-Steuerung, die eine Form der Vektorsteuerung ist.
@ChrisStratton Ja, wir verwenden ein großes Untersetzungsverhältnis von 100. In unserem Design wird ein weiterer Encoder nach dem Getriebe platziert, dieser Encoder wird verwendet, um den tatsächlichen Gelenkwinkel zu bestimmen. Der andere Encoder wird nur zur Kommutierung verwendet. Der Positionsregler berechnet einen Strom, der an den FOC-Regler gesendet wird, wo die eigentliche Kommutierung stattfindet. Was wäre der Vorteil der Verwendung von Back-EMF- oder 3-Hall-Sensoren? Geschwindigkeit denke ich?
@ TonyStewart.EEsince'75 Was meinst du mit "400 kbs Kommunikationsrate"?
Da Sie bereits einen Positionsgeber an der richtigen Stelle haben, scheint Ihr Problem tatsächlich darin zu bestehen, dass Sie fälschlicherweise einen anderen als Kommutierungssensor verwendet haben. Versuchen Sie, es durch eine Technik zu ersetzen, die normalerweise für die Kommutierung bürstenloser Motoren verwendet wird - was bei den Geschwindigkeiten, die Sie zu erreichen scheinen, wahrscheinlich eine Gegen-EMK sein würde, die Hallsensoren wären das, was Sie in den Betriebsbereichen mit niedrigerer Geschwindigkeit wünschen würden (dh Sie können brauche beides). Auch die Wahl des Untersetzungsverhältnisses sollten Sie vielleicht noch einmal überdenken, im Allgemeinen verwenden Servosysteme ein niedrigeres Übersetzungsverhältnis und eine moderatere Eingangsdrehzahl.
Okay, danke für deinen klaren Beitrag. Wir werden es berücksichtigen. Ich glaube eigentlich nicht, dass der SOMANET-Stack sensorlose Kommutierung unterstützt, Hall-Sensoren werden jedoch unterstützt.
SOMANET IFM Drive DC1K // Sensorlose Kommutierung wird unterstützt doc.synapticon.com/hardware/ifm-drive-dc1K/revision-c4/…
@TonyStewart.EEsince'75 Hmm, das ist seltsam, wir konnten es nicht im Code finden. Ich werde sie darauf ansprechen.
Messen Sie den Gleichstrom des Motors mit statischer Rotorposition, um sicherzustellen, dass Sie mit einem einfachen analogen Amperemeter relativ zur Rückkopplung an der richtigen Rotorposition kommutieren?
Es hört sich nach nicht genügendem Phasenvorlauf an, obwohl es mit der Kommutierung zusammenhängen könnte, wie andere vorgeschlagen haben.

Antworten (2)

Normalerweise wird die Motorgeschwindigkeit durch die Gegen-EMK begrenzt . Nicht!

  • Das ist falsch. eher (V-BEMF)/DCR=I , ist der minimale Leerlaufstrom und somit das Drehmoment wird durch BEMF begrenzt und das maximale Drehmoment ~ 80% RPM/RPMoc oder Leerlaufdrehzahl
  • Die Geschwindigkeit wird durch Kommutierungsfehler, Spannung, Reibung und Temperaturanstieg begrenzt, die durch Leitungsverluste entstehen.
  • Kommutierungsfehler umfassen Klingeln während der Totzeit, unzureichende Totzeit , schlechte Impedanzsteuerung während der Totzeit (RC-Snubber), übermäßiges C mit sehr niedrigem RdsOn, ESR, übermäßiges ESL in Kabeln, schlechtes Hoch-Q-Schalten, **Kommutierungsphasenfehler **
  • Für BLDC-Lüfter, wenn der Hall-Sensor eine winzige negative Phasenverschiebung aufweist, führt dies zu Zittern oder keinem Spin. Wenn positiver Phasenfehler, weniger Drehmoment, aber in Ihrem Fall haben Sie einen Kurzschluss, also überprüfen Sie das Drehmoment gegenüber der statischen Rotorposition bei sehr niedriger Spannung (um Trise zu begrenzen), wenn Sie einen Phasenfehler vermuten, oder tun Sie adj. mit Versuch und Irrtum. Ohne Last (prop) sollte der maximale Strom nur bei 0 U/min maximal sein. Imax = {Vmax/DCR} = 10 x I (maximale Nennleistung) bei voller Drehzahl und der Strom bei Vmax sollte <<10 % von Imax bei Volllast betragen keine externe, laden. Dies ist nur ein Stoßstartstrom. Bei voller Drehzahl sind dies jedoch Reibung, Erregungsleitung und Wirbelstromverluste.

Meine Schlussfolgerung ist also, dass Sie viele Kommutierungsprobleme haben, aber die Lösung wird offensichtlich sein, wenn Sie die Grundursache entdecken.

Wenn ich die Grundursache erraten müsste, würde ich sagen, dass es die voreinstellbare Nullposition für den Absolut-ENcoder ist, der den Hallsensor im Am4096-IC im 12-Bit-RM08S verwendet
Danke für deine Antwort! Ich verstehe nicht wirklich, dass die Geschwindigkeit nicht durch den Back-EMF-Teil begrenzt wird. Ich habe es immer so verstanden, dass eine Spannung proportional zur Geschwindigkeit erzeugt wird, die der Eingangsspannung entgegengesetzt ist (V = deltaB * L * V, L: Spulenlänge). Diese Spannung wird als Gegen-EMK bezeichnet. Wenn Sie also die Geschwindigkeit erhöhen, steigt diese Spannung, bis sie so hoch wie Ihre Eingangsspannung wird. Da zu diesem Zeitpunkt kein Strom mehr zu den Spulen fließen kann, können Sie nicht weiter beschleunigen. Damit wird die maximale Geschwindigkeit erreicht. Bitte korrigieren Sie mich, wenn ich falsch liege, Sie haben ein paar Jahre mehr Erfahrung mit diesem Thema.
Zu deinem vorgeschlagenen Problem. Ich denke, das wird durch Kalibrieren des Motors gelöst. Bevor wir Tests durchführen, ermitteln wir den Phasenversatz zwischen dem RM08 und dem Magnetfeld des Stators. Auf diese Weise stellen wir unsere eigene Nullposition ein. aber vielen dank für deinen beitrag, wir werden uns das mal anschauen.
Die Drehzahl wird durch die Vorwärts-EMK (oder MMF) gesteuert, daher sind Drehzahl / V und Drehmoment begrenzt, da die BEMF die Vorwärts-EMK aufhebt. Daher ist für die meisten Gleichstrommotoren das maximale Drehmoment (und bis zum 10-fachen des Stroms) ab dem Start bei voller Spannung.

Die Ursache stellte sich als recht einfach, aber leider unlösbar heraus.

SOMANET begrenzt das Tastverhältnis des PWM-Signals. Bei 12kHz PWM-Frequenz geht es von 22% auf 78%, bei 15kHz wird sogar schon früher begrenzt. Daher können wir nur 50 % unserer erwarteten Geschwindigkeit erreichen. Sie sagen, es wird in Zukunft verbessert, aber wann genau und wie groß die Verbesserung sein wird, ist noch unklar.

Weißt du, ob das üblich ist oder nur schlechte Technik?