Need Help: PID Regler Ball&Wheel

OP #5145835
Lesenswert?

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
Gast #5145885
Lesenswert?

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.
OP #5145900
Lesenswert?

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
(Firma: matzetronics) #5146030
Lesenswert?

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?
OP #5146196
Lesenswert?

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.
Gast #5146255
Lesenswert?

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.
Gast #5146269
Lesenswert?

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.
OP #5146325
Lesenswert?

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
OP #5146582
Lesenswert?

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
Gast #5146596
Lesenswert?

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.
OP #5146651
Lesenswert?

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
Gast #5146728
Lesenswert?

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.
Gast #5147134
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren