Steuerung der Bürstenmotordrehzahl mit variabler Last mit PWM

Ich erwäge, einen Bürstenmotortreiber mit einer H-Brücke und PWM zu fahren. Ich möchte die Motordrehzahl unabhängig von der Motorlast grob steuern (stellen Sie sich einen kleinen Roboter vor, der Hügel erklimmt/absteigt).

Da ich weiß, dass, wenn Sie einen Bürstenmotor mit einem Konstantspannungsnetzteil betreiben, er sich immer mit ungefähr der gleichen Geschwindigkeit dreht, wobei der aufgenommene Strom die Last widerspiegelt (umgekehrt, fahren Sie ihn mit einem Konstantstromnetzteil und dem Motordrehzahl und -spannung variieren je nach Last).

Wenn man das oben Gesagte kennt, scheint es einfach, über einen A/D eine Rückmeldung zu erhalten, um die an den Motor angelegte Spannung zu lesen und die PWM per Software optimieren zu lassen, um die Spannung am Motor entsprechend der geforderten Geschwindigkeit einzustellen.

Ich würde einen LC in der Schaltung benötigen, da ich die Spannung mit PWM-Rauschen nicht lesen könnte.

Macht das oben Sinn?

Deine Frage ist nicht richtig formuliert. Bearbeiten Sie es also bitte, damit andere es in Zukunft durchsuchen können. Was Sie eigentlich sagen wollen, ist, dass die Motordrehzahl proportional zur Gegen-EMK (BEMF) ist. Sie möchten die BEMF messen, damit Sie die PWM so einstellen können, dass die BEMF konstant gehalten wird, wodurch eine konstante Motordrehzahl aufrechterhalten wird. Aber wie machen Sie das, wenn die BEMF die an den Motorklemmen gemessene Spannung ist, Sie aber gleichzeitig auch eine Antriebsspannung an die Motorklemmen anlegen? Wenn der Motor im Leerlauf war, könnten Sie die BEMF messen, aber er läuft nicht aus.
@DKNguyen Das ist nicht das, was er zu sagen versucht, aber vielleicht sollte er es fragen ...
@BruceAbbott He, vielleicht. Wie auch immer, was er wörtlich sagt, ist falsch und funktioniert nicht. Was er wörtlich sagt, ist, dass er seinen PWM-Motortreiber in einen Spannungsregler für den Motor verwandeln möchte, um unter Last eine konstante Geschwindigkeit aufrechtzuerhalten, außer dass dies nicht der Fall ist. Es stellt nur sicher, dass an seinem Motor eine konstante Spannung anliegt, wenn sich die Batteriespannung ändert. Aber was ich gesagt habe, kommt seiner Idee am nächsten, die funktionieren wird.
Übrigens, wenn Sie nur Schwankungen der Versorgungsspannung kompensieren möchten, messen Sie diese und passen Sie das PWM-Verhältnis entsprechend an.
Ja, ich schlage einen schlampigen Spannungsregler vor. Nein, ich sprach nicht von BEMF. Dies ist ein echtes KIS-Projekt.

Antworten (3)

Ihre Idee ist falsch und wird nicht funktionieren. Aber es gibt eine sehr ähnliche Idee, die funktionieren wird.

" ein bürstenbehafteter Motor mit einer Konstantspannungsversorgung dreht sich immer ungefähr mit der gleichen Geschwindigkeit " Nein. Wenn Sie ihn stark belasten, wird er stark langsamer.

Ihre Idee besteht darin, im Grunde die durchschnittliche Spannung an den Motorklemmen zu überwachen und die PWM so einzustellen, dass eine konstante durchschnittliche Spannung an den Motor angelegt wird, um eine konstante Drehzahl mit Drehmoment aufrechtzuerhalten (dies würde auch die Überwachung der Batteriespannung erfordern). Dies wird jedoch keine konstante Geschwindigkeit mit Drehmoment aufrechterhalten. Es wird nur ein Verhältnis zwischen der Batteriespannung und der an den Motor angelegten Durchschnittsspannung beibehalten, wenn die Batteriespannung abnimmt, wenn sie entleert wird. Wenn dies Ihr Ziel ist, ist es auch einfacher, die Batteriespannung direkt zu messen und die PWM entsprechend anzupassen. Keine Notwendigkeit, die unordentliche Spannung an den Motorklemmen zu messen. Die Motordrehzahl ändert sich jedoch immer noch, wenn sich das Drehmoment ändert.


Was Sie wirklich wollen, ist, die Gegen-EMK (BEMF) des Motors zu messen und die PWM anzupassen, um die BEMF konstant zu halten. Die BEMF ist die Spannung, die ein Motor im Leerlauf erzeugt. Mit anderen Worten, dies ist die Spannung, die der Motor erzeugt, wenn er rückwärts angetrieben wird und als Generator fungiert. Aber jetzt ist die Frage, wie messen Sie die Spannung über dem Motor, während er im Leerlauf ist, wenn Sie ihn mit einer PWM-Wellenform antreiben, damit er nicht im Leerlauf ist?

Nun, erstens möchten Sie die Motorklemmenspannung nicht kontinuierlich unkontrolliert abtasten, während PWM stattfindet, da die Ansteuerspannung (wenn die Schalter geschlossen sind und Strom durch den Motor senden) mit der BEMF-Spannung gemischt wird (wenn die Schalter sind offen und es fließt kein Strom durch den Motor)

Wenn Sie die BEMF beim PWMen des Motors abtasten möchten, müssen Sie die Abtastung durchführen, wenn Sie wissen, dass beide HI-Seitenschalter offen sind, damit der Motor nicht angetrieben wird, aber Sie möchten, dass ein LO-Seitenschalter geschlossen ist, damit Sie es sind Messung gegen GND.

Ihre MCU kann Ihrem PWM-Timer erlauben, ADC-Abtastungen auszulösen, sodass Sie sie direkt abtasten und ignorieren können, wenn der Motorstrom nicht durch den Motor gezwungen wird, und ihn zu allen anderen Zeiten ignorieren. Benötigt möglicherweise eine RC-Filterung, aber nicht so etwas wie einen LC.

Wenn Sie dies nicht tun können, gibt es weniger elegante Problemumgehungen, wie z. Im schlimmsten Fall könnten Sie das PWM-Signal von einem Ausgangspin direkt zurück in einen Interrupt-Pin speisen.

.. Da ich hw pwm verwende, könnte ich es einfach deaktivieren, die Spannung messen und die pwm anpassen, wenn ich die pwm wieder einschalte. Selbst wenn nur mit einer Rate von 200 ms, bringt mich das wahrscheinlich ins Stadion.
@TomCumming Das wäre sehr grob, aber es könnte funktionieren. Wenn Sie jedoch HW-PWM haben, können Sie wahrscheinlich Interrupts daraus erzeugen oder sogar den ADC davon auslösen.

Da ich weiß, dass, wenn Sie einen Bürstenmotor mit einem Konstantspannungsnetzteil betreiben, er sich immer mit ungefähr der gleichen Geschwindigkeit dreht,

Ungefähr die gleiche Geschwindigkeit, aber nicht die gleiche. Wenn Sie den Motor stärker belasten, sinkt seine Drehzahl linear bis zum Stillstand auf Null. Dies wird durch die Innenwiderstände des Motors (Bürsten, Ankerwicklungen usw.) verursacht, die die effektive Antriebsspannung reduzieren. Alle anderen Reihenwiderstände in der Schaltung (z. B. Batterieinnenwiderstand, Controller-Schaltgerät und Rücklaufdiodenwiderstände) haben einen ähnlichen Effekt.

Es gibt mehrere Möglichkeiten, diesen Effekt zu kompensieren. Eine besteht darin, die Gegen-EMK während der PWM-Ausschaltperiode zu messen und sie in einer Rückkopplungsschleife zu steuern, wie von DKNguyen vorgeschlagen. Eine Variation davon ist die Verwendung eines optischen oder Hall-Effekt-Sensors, der die Geschwindigkeit direkt misst.

Eine andere Möglichkeit besteht darin, den Strom zu messen und die PWM proportional zu erhöhen, um einen „negativen Widerstand“ zu erzeugen, der die positiven Widerstände in der Schaltung aufhebt. Der Widerstand kann nicht vollständig aufgehoben werden, da die Geschwindigkeit instabil wird, wenn die Summe negativ wird, aber er kann die Geschwindigkeitsvariation stark reduzieren, ohne dass eine ausgefallene Gegen-EMK-Messung und eine vollständige PID- Schleife erforderlich sind. Dieses Verfahren wird häufig in Kassettenrecorder- und Plattenspielermotoren verwendet.

Wie wählen Sie Ihren Referenzstrom und Arbeitszyklus für die negative Widerstandsmethode aus?
Beim Antreiben eines DC-Bürstenmotors mit übermäßig negativem Widerstand erhöht sich die Motordrehzahl tatsächlich, wenn Sie eine mechanische Last anwenden. Sehr merkwürdig. Ich hätte gedacht, Stabilität wäre auch ein Problem, aber es scheint brav zu sein. Es ist eine Art Feed-Forward-Methode im Vergleich zu einer Feedback-Methode. Es funktioniert sehr gut.
@glen_geek Es hängt von der Last ab. Normalerweise wird ein stabiler Arbeitspunkt erreicht, wo die steigende Lastdrehzahl/Drehmoment-Kurve die fallende Motordrehzahl/Drehmoment-Kurve kreuzt, aber bei negativem Widerstand steigt die Motorkurve auch an, so dass sich die beiden Kurven kaum oder nie kreuzen und dann ist der Betriebspunkt instabil. Aber selbst wenn es "stabil" ist (dh nicht mit voller Geschwindigkeit oszilliert oder einklinkt), ist es empfindlicher gegenüber Lastschwankungen - das Gegenteil von dem, was Sie wollen. Erschwerend kommt hinzu, dass der Motorwiderstand selbst nicht sehr stabil ist.
Ich verstehe, dass es nicht viel einfacher ist, als BEMF zu verwenden. Das Messen des Stroms würde einen niederohmigen Widerstand in Reihe erfordern, ich würde immer noch den LC usw. benötigen.
Mit BEMF könnte ich die Anzahl meiner Teile reduzieren, aber das Auslösen des Adc, wenn es nicht pwm ist, ist ein Problem.
Ich bin auf die Idee gekommen, Spannung zu verwenden, als ich BLDC-Motoren untersuchte, die auf U/min/V spezifiziert sind. Ich habe meine Theorie auch mit einem einstellbaren Netzteil getestet und die Last mit meinen Fingern angepasst.
"Ich verstehe, dass es nicht viel einfacher ist, als BEMF zu verwenden. Das Messen des Stroms würde einen niederohmigen Widerstand in Reihe erfordern, ich würde immer noch den LC usw. benötigen" - beide haben ihre Probleme . Wenn Sie eine Strombegrenzung wünschen, benötigen Sie diesen Shunt bereits. Wenn Sie eine externe Sample-and-Hold-Schaltung (direkt vom PWM-Impuls gesteuert) verwenden, um die Gegen-EMK-Spannung während der PWM-Einschaltzeit zu halten, kann der ADC sie asynchron lesen. Dadurch wird die PWM beseitigt, aber das Signal ist aufgrund der Welligkeit des Generatorausgangs und des Bürstenrauschens immer noch verrauscht.

Zusammenfassend lässt sich sagen, dass meine ursprüngliche Idee (mit einem groben Konstantspannungsnetzteil) aufgrund des Widerstands im Stromkreis und im Motor nicht funktioniert.

Die Verwendung von BEMF könnte die Anzahl der Teile tatsächlich reduzieren (ein Ziel, das ich ursprünglich hätte nennen sollen) und würde tatsächlich funktionieren.

Vielen Dank an DKNguyen und Bruce Abbott für Ihre durchdachten und gründlichen Antworten.