Moin! ich habe mir zum Spaß ein Rad gebaut auf dem ein Ball balanciert werden soll. So wie hier in etwa: https://www.youtube.com/watch?v=mWpDjthLrGQ Die Regelschleife wird mit 1200Hz durchlaufen und ich versuche das ganze mit einem PID Regler zum laufen zu bekommen. Es funktioniert auch schon halbwegs, mein Hauptproblem ist aber dass der Ball dazu neigt nach rechts oder links (langsam) abzudriften bis der Motor auf voller Drehzahl ist und der Ball sich davon macht. Ich weiß, die Fehlerbeschreibung ist etwas vage, aber hat Jemand einen Tip wie sich so ein Regelsystem grundsätzlich einstellen lässt? Gruss A.B
Also wenn der Ball langsam von seiner Soll-Position wegrollt liegt es ja nahe den I-Anteil zu erhöhen da der ja über die Zeit die Differenz addiert. Leider fängt das ganze ding hart an zu Schwingen wenn ich den i-Anteil erhöhe. Ist das normal?
Hast du ein Modell erstellt, was du simulieren kannst? Wie kommst du auf 1200hz? Ist dein Sensor so schnell? Für instabile Systeme sind PID-Regler oftmals zu langsam. Da behilft man sich mittels Zustandsregelung. Der Ball scheint kein Schlupf zu haben. Wenn die Stellgröße am Maximum ist, dann müsste ein schnellerer Motor her.
moin! Nein ich habe kein Modell erstellt. Ich dachte es lässt sich sowas empirisch ermitteln. Ich habe mir bei eBay einen Lasertriangulationssensor gekauft. Der misst mit 2600Hz, versenden über RS422 tut er mit 1400Hz. Allerdings frage ich mich natürlich wie viel Bewegung ein Motor zwischen zwei Zyklen bei so einer Frequenz überhaupt ausrichten kann. Schnell genug sollte der Motor sein. Der Ball läuft langsam weg. Der Motor müsste sozusagen den Ball frühzeitig wieder "zurückholen". Das passiert aber nicht sondern der Error wird immer größer und das Rad immer schneller.. bis eben Hopfen und Malz verloren ist und der Ball runter fällt. Gruss A.B
A. B. schrieb: > versenden über RS422 tut er mit 1400Hz. Was meinst du damit? Ist das eine Baudrate von 14000? Es ist sicher nur sinnvoll, einen neuen Regelzyklus zu starten, wenn du einen kompletten Datensatz vom Sensor hast. Überschwingen deutet mir im Übrigen auf zu viel D Faktor oder zu wenig I hin. Kannst du die Faktoren im Betrieb editieren?
Freu dich ohne Modell und Theorie so weit gekommen zu sein. Ich wuerd die Positionsabweichung quadratisch gewichten ... aus dem Bauch heraus.
@Matthias S Instabile Strecke regelt man am besten ohne I-Anteil, da sonst der Regler zu langsam ist. Ggf. I-Anteil nahe der Sollposition dazuschalten.
Moin! Ich hab noch mal nachgerechnet (Formel im Datenblatt des Sensors..) Ich komme sogar auf 2,5kHz, allerdings habe ich den Sensor so eingestellt dass er intern die werte mittelt. (Ich kann noch wählen zwischen: Gleitender Mittelwert, rekursiv und Median. Aha. Noch mehr Parameter. Egal) Was bedeutetet instabile Regelstrecke? Dass die Reglerabweichung gegen unendlich geht wenn nicht nachgeregelt wird? Ich kann den Regler on-the-fly parametrieren was schon mal ein Vorteil ist. Wie soll denn mein Problem - also dass mit der Zeit die Abweichung immer größer wird - ohne I-Anteil gelöst werden? Schwingen kommt wie gesagt mit dem I-Anteil.
Abweichung quadratisch gewichten führt dazu dass der Regler auf dem Gipfelpunkt zu träge ist und dann später zu heftig regelt. (Ausprobiert)
A. B. schrieb: > Was bedeutetet instabile Regelstrecke? Dass die Reglerabweichung gegen > unendlich geht wenn nicht nachgeregelt wird? So kann mans formulieren, ja. Imho kommt man bei dem Problem mit nem normalen PID nicht sehr weit. Ich würde da vielleicht ne Kaskadenregelung machen. Innerer Regler: PD, regelt Position des Rades Äußerer Regler: PI, regelt Position des Balls Damit hat man die Schwingneigung etwas minimiert weil der Äußere Regler etwas weniger Totzeit sieht. Die Regelstrecke zu modellieren ist auf jeden Fall zielführend.
A. B. schrieb: > Was bedeutetet instabile Regelstrecke? Dass die Reglerabweichung gegen > unendlich geht wenn nicht nachgeregelt wird? Ja. > Wie soll denn mein Problem - also dass mit der Zeit die Abweichung immer > größer wird - ohne I-Anteil gelöst werden? Schwingen kommt wie gesagt > mit dem I-Anteil. Probiere es aus mit einen PD-T1 Regler.
Moin! Ich regel momentan nicht die Position sondern nur die Geschwindigkeit des Rades. Ich habe mir bei Youtube selbstbalancierende Roboter angesehen (Segwayprinzip) die ebenfalls in Arduino mit ein paar Zeilen programmiert wurden. Hierbei werden auch Relativ triviale PID Regler verwendet, ich habe den Code daher übernommen. Meine Anwendung ist doch prinzipiell gleich? Instabile Lageregelung und als Steilgröße wird die Motorgeschwidgkeit genommen. Gruss A.B
Tja also der Regler funktioniert eigentlich sehr gut. Wenn ich den Ball langsam von der Seite in das Messfeld des Sensor schiebe Dreht das Rad die Kugel zackig auf den Scheitelpunkt und bleibt dort auch stehen. Wenn dann jedoch einmal der Ball zu sehr in Schieflache gerät dann passiert eben das beschriebene. Irgendeinen Trick scheint es zu geben! Gruss A.B
A. B. schrieb: > Irgendeinen Trick scheint es zu geben! Irgendetwas läuft in den Anschlag. Entweder der Regler, oder ein Teil des Reglers, oder das Stellglied (bzw dessen Ansteuerung. PWM?).
A. B. schrieb: > Ich habe mir bei Youtube selbstbalancierende Roboter > angesehen (Segwayprinzip) die ebenfalls in Arduino mit ein paar Zeilen > programmiert wurden. Hierbei werden auch Relativ triviale PID Regler > verwendet, ich habe den Code daher übernommen. Meine Anwendung ist doch > prinzipiell gleich? Invertiertes Pendel und dein Ball sind regelungstechnisch recht unterschiedlich. A. B. schrieb: > Irgendeinen Trick scheint es zu geben! Der Trick nennt sich Regelungstechnik: - Regelstrecke modellieren - Reglerentwurf - Reglerfeintuning Was du bisher gemacht hast ist nen PID Regler nach Gefühl einstellen. Das nennt sich Ziegler Nichols oder Chien Reswick Hrones. Damit kommt man häufig ziemlich weit, aber perfekt wirds halt nicht.
Klar, irgendwann ist der Motor am Drehzahlende. Aber dann ist es eh schon zu spät. Wie gesagt, der Ball läuft langsam zur Seite während das Rad immer schneller wird. Genau, mit Ziegler Nichols habe ich mich schon beschäftigt, das ist ja recht einfach. Wo genau ist der Unterschied zwischen dem invertierten Pendel und meinem Ball? (Finde meinen Denkfehler nicht) Gruss A.B
A. B. schrieb: > Klar, irgendwann ist der Motor am Drehzahlende. Aber dann ist es eh > schon zu spät. Wie gesagt, der Ball läuft langsam zur Seite während das > Rad immer schneller wird. Genau, mit Ziegler Nichols habe ich mich schon > beschäftigt, das ist ja recht einfach. > > Wo genau ist der Unterschied zwischen dem invertierten Pendel und meinem > Ball? > (Finde meinen Denkfehler nicht) Dein Regler ist ganz einfach nur zu langsam. Eventuell ist der P-Anteil zu gering. (Nachstellzeit). Oder der D-Anteil ist zu gering (Vorhaltzeit). Oder eine Kombination daraus. Erhöhe den P-Anteil und verringere den I-Anteil, wenn es anfängt zu schwingen.
Wenn ich den P-Anteil hochstelle dann gibt es auch Schwingungen. Dann mit dem D-Anteil nachziehen? Ein reiner PD-Regler kann doch nicht funktionieren wegen der bleibenden Reglerabweichung? Gruss A.B
Dann erstelle doch zwei Regler. Wo ist das Problem?! Probiere erstmal den PD-T1 aus...
A. B. schrieb: > Ein reiner PD-Regler kann doch nicht > funktionieren wegen der bleibenden Reglerabweichung? Kommt drauf an, was geregelt wird. Raddrehzahl oder Radposition.
Ein kleiner Unterschied zwischen Pendel und Ball ist die Massentraegheit des Balles. Der nimmt Rotationsenergie auf und laeft dann noch nach.
Moin! Ich habe mal probiert zu verstehen was das PDT1 bedeutet. Also ein System welches mit einer zeitlichen Verzögerung auf einen Anstieg der Stellgröße reagiert? Aber was ist der Unterschied zu einem PD-Regler? Gruss A.B
A. B. schrieb: > Ich habe mal probiert zu verstehen was das PDT1 bedeutet. Also ein > System welches mit einer zeitlichen Verzögerung auf einen Anstieg der > Stellgröße reagiert? Ja. > Aber was ist der Unterschied zu einem PD-Regler? Es ist noch ein Tiefpass 1. Ordnung implementiert. Dadurch schwingt dein System nicht so sehr, aufgrund der hohen Abtastrate. Siehe auch die Sprungantwort. Zu Einstellregeln wird immer wieder Aström zitiert, also T1 in Abhängigkeit von D-Anteil.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.