Forum: Mikrocontroller und Digitale Elektronik Need Help: PID Regler Ball&Wheel


von A. B. (sfalbuer)


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

von A. B. (sfalbuer)


Lesenswert?

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?

von aSma>> (Gast)


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.

von A. B. (sfalbuer)


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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


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?

von Duennwandiger Troll (Gast)


Lesenswert?

Freu dich ohne Modell und Theorie so weit gekommen zu sein. Ich wuerd 
die Positionsabweichung quadratisch gewichten ... aus dem Bauch heraus.

von aSma>> (Gast)


Lesenswert?

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

von A. B. (sfalbuer)


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.

von A. B. (sfalbuer)


Lesenswert?

Abweichung quadratisch gewichten führt dazu dass der Regler auf dem 
Gipfelpunkt zu träge ist und dann später zu heftig regelt. (Ausprobiert)

von THOR (Gast)


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.

von aSma>> (Gast)


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.

von A. B. (sfalbuer)


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

von A. B. (sfalbuer)


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

von c-nicht-hater (Gast)


Lesenswert?

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

von THOR (Gast)


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.

von A. B. (sfalbuer)


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

von c-nicht-hater (Gast)


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.

von A. B. (sfalbuer)


Lesenswert?

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

von aSma>> (Gast)


Lesenswert?

Dann erstelle doch zwei Regler. Wo ist das Problem?!

Probiere erstmal den PD-T1 aus...

von c-nicht-hater (Gast)


Lesenswert?

A. B. schrieb:
> Ein reiner PD-Regler kann doch nicht
> funktionieren wegen der bleibenden Reglerabweichung?

Kommt drauf an, was geregelt wird.
Raddrehzahl oder Radposition.

von Pandur S. (jetztnicht)


Lesenswert?

Ein kleiner Unterschied zwischen Pendel und Ball ist die Massentraegheit 
des Balles. Der nimmt Rotationsenergie auf und laeft dann noch nach.

von A. B. (sfalbuer)


Lesenswert?

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

von aSma>> (Gast)


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.

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
Noch kein Account? Hier anmelden.