Elektronische Geschwindigkeitsregelungskonzepte

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:

  • Kann ein Servomotor (bürstenloser Gleichstrom) ESC zulassen?
  • Akzeptiert ein Servomotor Steuereingaben wie "Drehen mit 100 U / min"?
  • Bietet ein Servomotor eine Ausgabe mit der Aufschrift "Ich bin jetzt bei 80 U / min"?
  • 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?
  • die weniger präzisen Fragen, die im Text oben enthalten sind.
Wenn Sie auf einen ESC verzichten und einen Mikrocontroller verwenden, einige diskrete Leistungsgeräte, die vom Mikrocontroller angetrieben werden, um den Motor anzutreiben, eine Art Rückkopplungsmechanismus vom Motor, um den Mikrocontroller über seine Geschwindigkeit zu informieren, und dann eine raffinierte Software schreiben, die Sie mitbringen können Alles zusammen, Sie haben sich im Grunde einen ESC gebaut :-)
@RJR Danke für die Bestätigung dessen, was ich seit dem Posten der Frage gelernt habe. Insbesondere durch die älteste Antwort unten habe ich gelernt, dass die Servo-Idee strittig ist, dass alle bürstenlosen Motoren eine Positions- / Geschwindigkeitsausgabe bieten, dass ein ESC ein raffiniertes Programm ausführt, was auch eine Motorsteuerung tut.
@necromancer - Ein ESC ist ein Motorcontroller. Die meisten RC-Motorsteuerungen bieten nicht viel Zugriff auf ihren internen Zustand, aber sie haben diesen Zustand.
@ConnorWolf ja, das sollten sie irgendwo in großen blinkenden Buchstaben sagen. Ich bin versucht, eine Motorsteuerung als ein zufriedenstellenderes erstes Projekt zu programmieren, als einen Quadcopter zu programmieren, ohne aus erster Hand mit dem Motor zu kommunizieren.
@necromancer - Das Erstellen einer ernsthaften Motorsteuerung kann ziemlich schwierig sein, da das elektronische Design, das zum richtigen Schalten des zum Antreiben eines Motors (bürstenlos oder auf andere Weise) erforderlichen Stroms erforderlich ist, nicht trivial ist. Es könnte besser sein, am Reverse-Engineering eines vorgefertigten ESC zu arbeiten und einfach Ihre eigene Firmware dafür zu schreiben. Erwarten Sie in jedem Fall, dass Sie unterwegs viele Stromgeräte in die Luft jagen werden.

Antworten (2)

Erstens gibt es mehrere Definitionsfehler in Ihren Annahmen:

  1. Nein, es gibt keine Möglichkeit, einen ESC vollständig abzuschaffen, da der größte Teil dessen, was der ESC tut, darin besteht, das kleine Signal vom Empfänger zu nehmen und dieses in ein viel größeres Signal umzuwandeln, das die Spulen im Motor tatsächlich mit Strom versorgen kann. Die meisten Motoren benötigen weit mehr Strom als der Mikrocontroller liefern kann.
  2. Sogar Bürstenmotoren benötigen eigentlich ESCs. Ein ESC ist im Grunde ein spezialisierter Verstärkertyp (bürstenlose Modelle erfordern mehr lokale Komplexität). Schauen Sie sich vielleicht die Wikipedia-Seite zu ESCs an, um mehr Klarheit zu erhalten.
  3. Brushless ESCs kennen die Rotorposition und -geschwindigkeit mit ziemlich hoher Präzision. Das Problem ist, dass es bei typischen "Hobby"-Level-ESCs keine Möglichkeit gibt, auf diese Informationen zuzugreifen . Um jedoch einen bürstenlosen Motor richtig zu kommutieren, muss die Steuerung wissen, „wo“ in der Drehung sich der Rotor des Motors befindet, damit sie bestimmen kann, welche Spule erregt werden soll.
  4. Wenn Sie "Servomotor" sagen, was meinen Sie genau ? Meinst du die kleinen gekapselten "RC Model" Servos? Das sind keine Servomotoren , sondern eigentlich kleine in sich geschlossene Servosysteme . Weitere Informationen finden Sie in der Wikipedia-Definition eines Servomotors .

Also zusammenfassend:

  • can a servo (brushless dc) motor allow doing away with ESC?
    Erstens gibt es so etwas wie einen „bürstenlosen Gleichstrommotor“ nicht . Motoren sind grundsätzlich Wechselstromgeräte . "DC"-Motoren wandeln den Gleichstrom tatsächlich intern über die Bürsten in Wechselstrom um. Ein bürstenloser Motor ersetzt lediglich die internen Bürsten durch Festkörperelektronik.
  • does a servo motor accept control inputs such as "revolve at 100rpm"?
    Nein. Ein Servosystem kann solche Steuereingaben akzeptieren, aber es würde dies mit einem Motor, einem ESC / Motortreiber, einem Mechanismus zum Zurücklesen der Motordrehzahl und einem Mikrocontroller / einer Schaltung zum Steuern der Eingabe zum Motor tun Fahrer als Reaktion auf Messwerte von der Tachometer/Geschwindigkeitsmessschnittstelle.
  • does a servo motor offer an output saying "i am at 80rpm now"?
    Auch hier nein, aber ein Servosystem könnte eine solche Schnittstelle bieten.
  • does a servo motor at 80rpm go to 81rpm faster if it is requested to revolve at 100rpm versus at 81rpm?
    Dies hängt etwas von der Konfiguration des Servosystems ab, aber meistens wahrscheinlich . Ein geeignetes System mit geschlossenem Regelkreis muss die Zeit berücksichtigen, die erforderlich ist, um die Geschwindigkeitsänderung zu stoppen, die innerhalb der Zeit für die Geschwindigkeitsänderung von 80–81 U/min und nicht innerhalb der Zeit für die Geschwindigkeitsänderung von 80–100 U/min liegt.
    Stellen Sie es sich wie eine körperliche Bewegung vor. Wenn Sie 10 Fuß laufen und anhalten, würde es länger dauern, als auf 10 Fuß zu laufen und mit voller Laufgeschwindigkeit fortzufahren? Ja, denn Sie müssen mit dem Anhalten beginnen, bevor Sie am Ziel ankommen, da unendliches Beschleunigen und Verzögern physikalisch unmöglich ist.
  • the less precise questions implicit in the text above.
    Bitte klären Sie

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

+1 Vielen Dank für Ihre ausgezeichnete Antwort. Ich verdaue es langsam und lese die Links, die Sie gegeben haben.
@necromancer - Eines der Hauptprobleme hier ist, dass die Gemeinschaft der funkgesteuerten Modelle die vorhandene Terminologie für Steuersysteme übernommen und sie irgendwie verschmutzt hat, indem sie sie in falschen/unterschiedlichen Kontexten verwendet, was zu viel Verwirrung führt.

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.).

BLDC-Stromwellenformen

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.