Ich bin ein Programmierer, der noch nie mit Elektronik gearbeitet hat. Ich lerne die Konzepte und hoffe, einen Quadcopter zu bauen, dessen Steuerungssoftware vollständig von mir geschrieben wurde. Motorsteuerung scheint der wichtigste Teil zu sein.
Stimmt es, dass der typische bürstenlose Gleichstrommotor und ESC (Electronic Speed Control) die Geschwindigkeit nur ungefähr regeln können? Das liegt daran, dass der ESC nur eine sehr ungefähre Vorstellung davon zu haben scheint, wie schnell der Motor dreht. Dies funktioniert immer noch für einen PID-Regler (Proportional Integral Derivative), da er indirektes Feedback von beispielsweise einem Gyroskop erhält, ob der Motor schnell genug läuft, und so dem ESC mitteilen kann, dass er sich "noch schneller" oder "noch langsamer" drehen soll, und Das ist gut genug.
Ist mein Verständnis im obigen Absatz richtig?
Wenn ja, frage ich mich, ob ein Servomotor, der über seine aktuelle Drehzahl informieren kann, helfen könnte, das ESC vollständig abzuschaffen? Ich denke, wenn der Mikrocontroller eine Eingabe über Motordrehzahlen empfangen und eine Ausgabe senden kann, die eine bestimmte Geschwindigkeit anfordert, würde er den ESC nicht benötigen. Aber ich bin mir nicht sicher, wie Servomotoren funktionieren - was passiert unmittelbar, nachdem Sie 100 U / min angefordert haben, wenn sie sagen, sie waren bei 80 U / min?
Da sie die nicht sofort anpassen können, sollte der Mikrocontroller andere Motoren sofort anpassen, um die Tatsache zu berücksichtigen, dass noch nicht alle Motoren auf 100 U / min laufen? Bedeutet das, dass der Mikrocontroller nur sehr kleine Deltas von der aktuell gemessenen Geschwindigkeit anfordern sollte, damit die Dauer der Abweichung vom Sollzustand vernachlässigbar ist?
Im letzteren Modell, bei dem nur sehr kleine Deltas von der aktuell gemessenen Geschwindigkeit angefordert werden, scheint der Algorithmus nicht wirklich PID zu sein, da es keine Möglichkeit gibt, die Beschleunigung zu steuern? Aber kann es sein, dass die Anforderung, dass der Servo von 80 U / min auf 100 U / min geht, dazu führt, dass er 81 U / min viel schneller erreicht, als die Anforderung, dass er von 80 U / min auf 81 U / min geht?
Ich habe das Gefühl, so wenig zu wissen, dass ich es nicht genauer sagen kann, aber ich hoffe, dass dies eine Vorstellung von den Konzepten gibt, die ich zu verarbeiten kämpfe.
Zusammenfassend lauten die Fragen:
Erstens gibt es mehrere Definitionsfehler in Ihren Annahmen:
Also zusammenfassend:
can a servo (brushless dc) motor allow doing away with ESC?
does a servo motor accept control inputs such as "revolve at 100rpm"?
does a servo motor offer an output saying "i am at 80rpm now"?
does a servo motor at 80rpm go to 81rpm faster if it is requested to revolve at 100rpm versus at 81rpm?
the less precise questions implicit in the text above.
Realistisch gesehen gibt es zahlreiche einschränkende Faktoren in der Genauigkeit eines Steuersystems (wie z. B. eines PID-basierten Steuerkreises). Selbst wenn Sie eine direkte Rückmeldung der Drehzahl eines Motors haben, ist die Fähigkeit des Regelkreises, Geschwindigkeitsfehler zu korrigieren, durch das verfügbare Drehmoment, die Rotorträgheit, die Bandbreite der Steuerelektronik und die Genauigkeit der Messung begrenzt Schnittstelle.
Weiterführende Literatur: http://en.wikipedia.org/wiki/Servomechanism
Stimmt es, dass der typische bürstenlose Gleichstrommotor und ESC (Electronic Speed Control) die Geschwindigkeit nur ungefähr regeln können?
Nein. Bürstenlose Gleichstrommotoren (BLDC) sind eine Art Synchronmotor (genauer gesagt sind sie Permanentmagnet-Synchronmotoren (PMSM)) und Synchronmotoren erfordern, dass das Magnetfeld des Stators und das Magnetfeld des Rotors "synchron" sind ." Praktisch bedeutet dies, dass der durch die Spulen fließende Strom davon abhängt, in welcher Position sich der Rotor befindet. Das Bild unten zeigt die Stromwellenformen für die Phasen A, B und C für einen BLDC-Motor. Sie werden feststellen, dass immer nur 2 Phasen eingeschaltet sind. Wann eine bestimmte Phase ein- oder ausgeschaltet wird, wird durch die Position des Rotors ausgelöst. Je besser Sie die Rotorposition erfassen, desto besser läuft Ihr Motor (effizienter, mehr Drehmoment usw.).
Bei Hobbymotoren ist es ziemlich üblich, die sensorlose Rotorpositionserkennung zu verwenden. Dies funktioniert im Allgemeinen, indem die nicht eingeschaltete Phase betrachtet und die Wellenform dieser Phase verwendet wird, um die Rotorposition zu bestimmen. Andere Motoren haben Hall-Effekt-Sensoren oder Encoder, die die Rotorposition bestimmen. Sensorlose Positionserkennung ist oft gut genug, wenn es nur um die Geschwindigkeitsregelung geht. Wenn Sie eine Positionssteuerung (oft als "Servo" bezeichnet) benötigen, müssen Sie einen Encoder verwenden.
Wenn ja, frage ich mich, ob ein Servomotor, der über seine aktuelle Drehzahl informieren kann, helfen könnte, das ESC vollständig abzuschaffen?
Beachten Sie, dass die grundlegendste Funktion eines ESC oder einer bürstenlosen Steuerung darin besteht, die Spulen in der richtigen Reihenfolge zur richtigen Zeit mit Strom zu versorgen. Mit anderen Worten, die grundlegendste Funktion besteht darin, den Motor zu kommutieren. Dies ist das Minimum, das erforderlich ist, damit ein BLDC-Motor richtig funktioniert. Also nein, ganz auf ESC kann man nicht verzichten.
... was passiert unmittelbar nachdem Sie 100 U / min angefordert haben, wenn Sie sagen, sie waren bei 80 U / min?
Es hängt davon ab, ob. Ein sehr einfaches Open-Loop-System könnte einfach so kalibriert werden, dass 12 V = X U / min, 6 V = X / 2 U / min usw. In diesem Fall entspricht das Befehlen von 100 U / min dem Erhöhen der Spannung auf eine bereits bekannte Spannung Y geben Sie 100 U / min. Ein System mit geschlossenem Regelkreis könnte die Rotorposition verwenden, um die Änderung der Rotorposition im Laufe der Zeit zu betrachten, um die Geschwindigkeit zu bestimmen, und dann die Spannung anpassen, bis die neue Geschwindigkeit 100 U/min beträgt. In jedem Fall muss die Spannung erhöht werden.
geht ein Servomotor mit 80 U/min schneller auf 81 U/min, wenn er aufgefordert wird, sich mit 100 U/min statt mit 81 U/min zu drehen?
Dies ist unmöglich zu sagen, es sei denn, Sie haben eine bestimmte Steuerung im Sinn. Bei einer gegebenen Last bestimmt das Drehmoment, wie schnell die Welle beschleunigt. Je mehr Drehmoment Ihr Motor bereitstellen kann, desto schneller beschleunigt er. Bei BLDC-Motoren ist das Drehmoment proportional zum Strom. Unter der Annahme der gleichen Last und der Annahme, dass Sie die gleiche Strommenge bereitstellen, sollten sie in der gleichen Zeit 81 U / min erreichen.
Akzeptiert ein Servomotor Steuereingaben wie "Drehen mit 100 U / min"?
Wie oben erwähnt, bezieht sich "Servomotor" häufig auf Motoren / Steuerungen, die zur Positionssteuerung verwendet werden. Der Befehl "mit 100 U/min drehen" würde eher in einem Motor-/Steuerungssystem zu sehen sein, das zur Geschwindigkeitssteuerung verwendet wird. Viele Servomotor-/Steuerungssysteme können die Geschwindigkeit steuern, aber nicht alle sind dafür eingerichtet.
Ich werde noch etwas zur Terminologie sagen, weil Connor Wolf etwas erwähnt hat. Es gibt keinen Industriestandard für die Terminologie für bürstenlose Motoren. Ich habe nicht weniger als die folgenden Akronyme/Begriffe für bürstenlose Motoren gesehen: BLDC (bürstenloser Gleichstrom), BLAC (bürstenloser Wechselstrom), PMSM (Permanentmagnet-Synchronmotor oder Permanentmagnet-Servomotor), BPM (bürstenloser Permanentmagnet), SMPMSM ( oberflächenmontierter Permanentmagnet-Synchronmotor), IPM (Innen-Permanentmagnetmotor) usw. BLDC, BLAC und PMSM sind meiner Erfahrung nach die häufigsten.
BLDC bezieht sich meistens auf Motoren, die für eine trapezförmige Gegen-EMK ausgelegt sind und mit einer 6-stufigen (trapezförmigen) Steuerung betrieben werden sollen (dies ist die Art der Steuerung, die in meiner obigen Antwort erwähnt wurde). BLAC bezieht sich meistens auf Motoren, die für eine sinusförmige Gegen-EMK ausgelegt sind und mit einer sinusförmigen Steuerung betrieben werden sollen (d. h. die Steuerung liefert dem Motor einen sinusförmigen Strom und nicht die Wellenformen im obigen Bild). "Servo"-Motoren sind oft BLAC-Motoren. Meiner Meinung nach gibt es kaum einen Unterschied zwischen einem BLDC- und einem BLAC-Motor und sie sollten als derselbe Motortyp betrachtet werden. Motoren mit trapezförmiger Gegen-EMK können mit sinusförmigen Steuerungen betrieben werden und umgekehrt. Es hängt alles davon ab, was Sie mit ihnen zu tun versuchen. Meine bevorzugte Terminologie für diese beiden Motortypen ist PMSM (Permanentmagnet-Synchronmotor). Aber auch hier gibt es keinen Industriestandard, also ist meine Präferenz genau das, eine Präferenz.
RJR
Nekromant
Connor Wolf
Nekromant
Connor Wolf