Invertiertes Pendel mit Schwungrad

Fussballroboter, Autofabrik...
Modellideas &- presentation - Soccerrobot, Carfactory...
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
FiTe Klapauzius
Beiträge: 34
Registriert: 02 Apr 2021, 21:40
Wohnort: München

Invertiertes Pendel mit Schwungrad

Beitrag von FiTe Klapauzius » 01 Jan 2023, 15:46

Hallo Zusammen,

ich versuche mich gerade daran ein interessantes Projekt, das ich auf YouTube gefunden habe, mit Fischertechnik und FtDuino nachzubilden:
https://www.youtube.com/watch?v=WObG2LoSEwQ&t=248s
Hier mein Modell:
reaction_wheel.jpeg
reaction_wheel.jpeg (68.74 KiB) 1179 mal betrachtet
Die Rückstellung des Pendels erfolgt durch eine Beschleunigung oder Verlangsamung des Schwungrades. Leider klappt es bei mir nicht besonders und ich hoffe auf ein paar Tipps aus der Community.
Der Winkel und die Winkelgeschwindigkeit wird über eine MPU6050 bestimmt ( Auswertung mit Complementary Filter). Das scheint auch ok zu laufen.
Die PWM-Rate des Motors wird über eine Art PID-Regler gestellt. Je nach Einstellungen schaffe ich es, dass das Pendel ein paar Mal um den Nullpunkt wackelt, bis es schließlich wegkippt. Aber richtig gut wird es nie.
Das Problem scheint mir in der Ansteuerung des Motors zu liegen: Die Erhöhung der PWM erzeugt ein bestimmtes Drehmoment die Reduzierung um den selben Wert ein geringeres ( da nicht aktiv abgebremst wird). Das führt zu einer Hysterese.
Zusätzlich gibt es einen Sprung in der Beschleunigung bei Richtungswechsel und durch die minimale PWM bei der der Motor anspringt.
Was ich bräuchte, wären ein paar Tipps, wie ich die Ansteuerung des Motors so modifizieren kann, dass ich möglichst gut die Beschleunigung des Schwungrades vorgeben kann. Kann da jemand von Euch helfen?

Viele Grüße
Burkhard

Benutzeravatar
fishfriend
Beiträge: 1791
Registriert: 26 Nov 2010, 11:45

Re: Invertiertes Pendel mit Schwungrad

Beitrag von fishfriend » 01 Jan 2023, 16:01

Hallo...
Einrad Roboter, also schon zwei, aber nebeneinander. Ich hab noch vor das Projekt fertig zu machen, aber ich komme gerade nicht dazu.

Das Rad dreht sich auch in die andere Richtung, nicht nur in eine.
Ich hatte einen AVR Mega genommen. Mit dem MPU6050 bin ich mir nicht sicher ob das auch der war.
Die PID-Werte zu bestimmen ist aufwändig, aber machbar.
Da gibt es fertige Projekte - wo man "nur" die PID Werte anpassen muss.
Mit freundlichen Grüßen
fishfriend
Holger Howey
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

FiTe Klapauzius
Beiträge: 34
Registriert: 02 Apr 2021, 21:40
Wohnort: München

Re: Invertiertes Pendel mit Schwungrad

Beitrag von FiTe Klapauzius » 02 Jan 2023, 09:57

Der Hinweis mit den Drehrichtungen wäre nicht nötig gewesen. Ich habe mich vielleicht unklar ausgedrückt:
Aktuell wackelt das Modell ein wenig um den Nullpunkt bis es dann wegkippt. Dabei wird die Drehrichtung des "Schwungrades" ständig geändert. Mit viel Fleiß lässt sich vielleicht die Regelung etwas verbessern. Ich befürchte aber, dass es nie richtig gut wird solange ich nicht die Hysterese rausbekomme, die sich aus dem Motorbetrieb ergibt (siehe meine ersten Beitrag).

Aus dem Source-Code von Till Harbaum ( und diversen Threads zu dem Thema) entnehme ich, dass ich den Motor durch Schalten beider Eingänge auf Lo aktiv bremsen kann und diese Bremskraft durch pwm ( lo/lo <-> float/float) modulieren kann. Vielleicht lassen sich gedimmter Motorbetrieb (lo/hi <-> float/float) und gedimmtes Bremsen (lo/lo <-> float/float) auch mischen um noch etwas genaueres Bremsen hinzubekommen?
Evtl. wäre es ein Idee die Stromaufnahme des Motors über einen Hall-Sensor zu überwachen? Die Stromaufgabe scheint recht gut mit dem Motormoment zu korrelieren also könnte man evtl. eine Art Drehmomentregelung zusammenzimmern?

Insgesamt geht es darum das Drehmoment des Motors (Bremsen und Beschleunigen, insbesondere um den Drehrichtungswechsel herum) besser kontrollieren zu können.

Gruß
Burkhard

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1832
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Invertiertes Pendel mit Schwungrad

Beitrag von Dirk Fox » 02 Jan 2023, 10:12

Hallo Burkhard,

eine tolle Projektidee!

Spontan fällt mir ein wichtiger Unterschied zwischen Deinem Modell und dem Modell im Video auf: Dort wird ein Rad benutzt - das erzeugt eine deutlich gleichmäßigere Wirkung als Deine beiden "Flügel". Damit würde ich anfangen - vielleicht genügt das ja schon?

Herzlicher Gruß,
Dirk

FiTe Klapauzius
Beiträge: 34
Registriert: 02 Apr 2021, 21:40
Wohnort: München

Re: Invertiertes Pendel mit Schwungrad

Beitrag von FiTe Klapauzius » 17 Jan 2023, 21:14

Ein Rad anstelle der Flügel würde das Trägheitsmoment erhöhen und das ist erstmal positiv. Eine flache Scheibe würde zudem den Einfluss des Luftwiderstandes reduzieren. Aber so eine Konstruktion würde das Gesamtgewicht erhöhen und damit auch das Moment, dass der Motor aufbringen muss, um den ganzen Arm zu bewegen. Hier bin ich mit der aktuellen Konstruktion schon ziemlich am Limit und habe auch nicht die richtigen Teile.

Der Schlüssel liegt in der Motor-Ansteuerung: Mittlerweile habe ich auf meinem ftDuino die PWM-Motorsteuerung um eine "Slow Decay" - Option erweitert. (Slow Decay bezieht sich auf den Abfall des Stroms in den Wicklungen, nicht auf die Drehzahl). Hierzu gibt es bereits einige Posts von H.A.R.R.Y.. Eine gute Erklärung habe ich außerdem hier gefunden: https://www.ti.com/lit/an/slva321a/slva321a.pdf
Der Effekt ist, dass sich z.B. beim Reduktion des PWM-Faktors von 40/64 auf 30/64 ein ähnliches Drehmoment ergibt wie bei Erhöhung von 30/64 auf 40/64. Das erkauft man sich mit einer etwas niedrigeren Effizienz des Motors.

Mit dieser Methode und einer Art PID-Regelung kann sich das Pendel recht ruhig (und auch lange!) in der Mittelposition halten, sofern keine größeren Störungen kommen. Leider muss "größeren" aktuell noch ziemlich klein geschrieben werden ... anpusten hält das Pendel noch aus.
Den Grund kann man aus den Motorkennlinien ableiten, die ebenfalls von H.A.R.R.Y. bereitgestellt wurden: Das Drehmoment ist proportional zum Strom und dieser hängt wiederum von angelegter Spannung ( etwa 9V * PWM-Faktor) und Drehzahl ab.
Zur Rückstellung des Pendel muss das Drehmoment des Motors geregelt werden - also der Strom. Einzige Regelgröße ist aber die Spannung (über PWM). Wenn der Motor sich kaum dreht ( Pendel ist in Mittelstellung) ist der Fehler nicht groß.

Um hier die richtige Änderung zu bestimmen benötigt man entweder den aktuellen Strom durch den Motor oder die Drehzahl (Stickwort Rück-EMK).
Variante A:
Encoder-Motor (zu langsam) oder Encoder-Motor aufschrauben und das Getriebe durch das des XM-Motors ersetzen. Das scheint zu klappen. Leider passt aber das Encoder-Getriebe nicht auf den XM-Motor wegen kleiner Unterschiede am Motorritzel - der wäre dann erstmal stillgelegt. Und irgendwie gefällt mir die Lösung nicht.
Variante B:
Irgendwie den Strom messen. Das versuche ich gerade mit einem Hall-Sensor. Leider ist das Signal ziemlich verrauscht. Vielleicht wird es besser wenn ich irgendwie synchron zu den PWM-Impulsen den Sensor abfrage.

Falls da sich jemand auskennt wäre ich dankbar...
Elektrotechnik hatte ich eine Vorlesung im Grundstudium vor x Jahren -> praktisch alles weg :D

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1832
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Invertiertes Pendel mit Schwungrad

Beitrag von Dirk Fox » 17 Jan 2023, 22:43

Hallo Burkhard,

das wird ja immer rattenschärfer...
FiTe Klapauzius hat geschrieben:
17 Jan 2023, 21:14
Ein Rad anstelle der Flügel würde das Trägheitsmoment erhöhen und das ist erstmal positiv. Eine flache Scheibe würde zudem den Einfluss des Luftwiderstandes reduzieren. Aber so eine Konstruktion würde das Gesamtgewicht erhöhen und damit auch das Moment, dass der Motor aufbringen muss, um den ganzen Arm zu bewegen.
Statikkreis (ggf. mit eingesetzten Winkelsteinen, um das Gewicht etwas zu erhöhen)? Das wäre eher leicht.
FiTe Klapauzius hat geschrieben:
17 Jan 2023, 21:14
Um hier die richtige Änderung zu bestimmen benötigt man entweder den aktuellen Strom durch den Motor oder die Drehzahl (Stickwort Rück-EMK).
Variante B:
Irgendwie den Strom messen. Das versuche ich gerade mit einem Hall-Sensor. Leider ist das Signal ziemlich verrauscht. Vielleicht wird es besser wenn ich irgendwie synchron zu den PWM-Impulsen den Sensor abfrage.
Ganz naiv gefragt: Natürlich ist ein lineares Verhältnis zwischen Messgröße und Regelgröße einfacher - aber ist das bei einem PID-Regler so schlimm, wenn das nicht ganz linear ist? Wäre es da nicht einfacher, ein wenig an den PID-Parametern "zu drehen", als Zeitverluste durch einen weiteren Sensor hineinzubekommen?

Herzliche Grüße,
Dirk

Antworten