Forum: Mikrocontroller und Digitale Elektronik interaktiver PID Regler


von Willy R. (bolorkhuu_d)



Lesenswert?

Hallo Leute!
ich bin auf der Suche nach einem guten interaktiven PID Regler und einen 
guten Regelalgorithmus für einen inversen Pendel Robotor. Mit meinem 
normalen PID Regler komme ich nicht voran, der den Winkel als PWM 
regelt. Ich weiss nicht genau ob ich die Motordrehzahl oder 
Motorgeschwindigkeit regeln soll. Danke!

von Kalman (Gast)


Lesenswert?

Wo siehst du den Unterschied zwischen Motordrehzahl und 
Motorgeschwindigkeit?

von Michael (Gast)


Lesenswert?

Willy Rokey schrieb:
> interaktiven PID Regler

Was meinst du mit "interaktiv"?

von Floh (Gast)


Lesenswert?

Haben die Motoren genug Drehmoment für den Roboter? Die sehen so klein 
aus. Du betreibst den Roboter mit einem 9V-Block?

von MyName (Gast)


Lesenswert?

...und vor allem,wie erfasst Du Deine 
Winkel,Positionen,Geschwindigkeiten?
Also welche Sensoren und Verfahren?
Etwas mehr Input!

von Alexander V. (knecke)


Lesenswert?

Dein Ziel sollte ein Winkelregler sein.

Stromregler -> Drehzahlregler -> Lage-/Winkelregler

Je nachdem wie qualitativ hochwertig dein Drehzahlregler/Winkelregler 
ist kann man auch den Stromregler weglassen.

von Willy R. (bolorkhuu_d)


Lesenswert?

Motordrehzahl mit Encoder, Geschwindigkeit PWM , darin besteht der 
Unterschied.

Von interaktiven PID Regler habe ich gehört, aber wie die aussieht keine 
Ahnung.

Die Motoren werden mit ca. 15 V betrieben, 9V Block dient für die 
Controller und Bluetooth Stromversorgung. Die Motoren sind dafür genug 
stark und schnell.

Winkel erfasse ich mit Hilfe Kalman Filter aus dem 
Winkelgeschwindigkeitssensor (Gyro) und Beschleunigungssensor. Drehzahl 
aus dem Encoder.

Wie kriege ich die entsprechende Drehzahl die ich für den Winkelregler 
benötige.
Könnte es so sein: drehzahl=roboterhoehe* sin(winkel)  ?

von Michael (Gast)


Lesenswert?

Willy Rokey schrieb:
> Könnte es so sein: drehzahl=roboterhoehe* sin(winkel)  ?

Ganz bestimmt sogar!
Je höher der Roboter, desto schneller muss das Ding werden, sei froh, 
dass er nicht so hoch ist sonst bräuchtest F1-Motoren ...
Allerdings glaube ich hast Du die Temperaturabhängigkeit vergessen, die 
ist bei interaktiven Reglern enorm wichtig sonst werden sie träge!

von Willy R. (bolorkhuu_d)


Lesenswert?

Temperaturabhängigkeit ? redest du über analoge PID Regler? Mein 
normaler PID wird softwareseitig realisiert.

kannst du mir mal zeigen wie der interaktiven PID Regler aussieht. Ich 
kenne nur den Name. Meins ist normaler PID.

von Willy R. (bolorkhuu_d)


Lesenswert?

Alexander Vogel schrieb:
> Dein Ziel sollte ein Winkelregler sein.
>
> Stromregler -> Drehzahlregler -> Lage-/Winkelregler
>
> Je nachdem wie qualitativ hochwertig dein Drehzahlregler/Winkelregler
> ist kann man auch den Stromregler weglassen.

Stromregler bzw Kaskaderegler? dann muss ich den Strom über einen Shunt 
messen. Ich habe keine genauere Infos über meine Motoren. Offsets usw.

von Oliver J. (skriptkiddy)


Lesenswert?

Willy Rokey schrieb:
> kannst du mir mal zeigen wie der interaktiven PID Regleraussieht

Das einzige was IMHO bei einem PID-Regler interaktiv (auf den Benutzer 
bezogen) sein kann, ist die Einstellung der 3 Regler-Parameter.

Wie wäre es, wenn du mal die Aufgabenstellung postest?

Gruß Oliver

von Willy R. (bolorkhuu_d)


Lesenswert?

der Roboter muss selbst auf seinen 2 Räder balancieren. Ich habe sehr 
genauere Neigungswinkel.

while(1){
   getActuelWinkel();
   PWM=PID(actuellWinkel);
   Fahreroboter(PWM);
}

so sieht mein Algorithmus aus. Verbesserung??

von Willy R. (bolorkhuu_d)


Lesenswert?

kann mir jemand verbesserungsvorschlag für regelalgorithmus geben?

von Olaf (Gast)


Lesenswert?

PID Regler duerften schon so seit 100Jahren Stand der Technik sein. Die 
koennen wir leider nicht mal eben so verbessern. :-)
Das man fuer soetwas gerne einen Kaskadenregler nimmt, also mehrere 
verschachtelte Regler um die Bestimmung der Regelparameter zu 
vereinfachen, hat man dir auch schon gesagt.

Alles was du noch machen musst ist die Regelparameter zu bestimmen. Das 
kann dir hier keiner abnehmen. Was du brauchst ist ein Buch oder eine 
Vorlesung ueber Regelungstechnik um die Prinzipien zu verstehen, und 
ausserdem laengeres rumfrickeln in der Praxis um danach ein Gefuehl fuer 
die erworbenen Grundlagen zu bekommen.

Olaf

von Klaus W. (mfgkw)


Lesenswert?

Willy Rokey schrieb:
> while(1){
>    getActuelWinkel();
>    PWM=PID(actuellWinkel);
>    Fahreroboter(PWM);
> }
>
> so sieht mein Algorithmus aus. Verbesserung??

Ist doch optimal!
Falls:
- irgendwo ein delay ist, um auf ein festes
  Zeitraster zu kommen (ansonsten ist
  wahrscheinlich deine Integration für die
  Katz, wenn du keinen Zeitabstand hast)
- getActuelWinkel() ok ist
- PID() ok ist
- Fahreroboter() ok ist

von stm (Gast)


Lesenswert?

Wo wird die Abtastrate (wichtiger Parameter) definiert? Gibts da einen 
Timer?

von Willy R. (bolorkhuu_d)


Lesenswert?

danke für Infos bisher!
jede 10ms wird der Regler aufgerufen. bis 10ms wird der Programm 
entsprechend warten.

Wie kriegt man Drehzahl? drehzahl = robbihöhe * sin(aktuellWinkel) ? 
noch dazu Konstanten? etwa Erdbeschleunigung?

von Karl H. (kbuchegg)


Lesenswert?

Willy Rokey schrieb:

> Wie kriegt man Drehzahl? drehzahl = robbihöhe * sin(aktuellWinkel) ?
> noch dazu Konstanten? etwa Erdbeschleunigung?


Ich denke ehrlich gesagt nicht, dass die Flotte der auf den Hinterrädern 
balanzierenden Asuros das so kompliziert macht.

PID Regler, der die Motor-PWM aus dem Winkel ableitet.
Steht das Teil senkrecht, ist der Motor in Ruhe.
Sobald eine Winkelabweichung gemessen wird, werden die Motoren 
angeschmissen, damit die Räder wieder unter den Schwerpunkt fahren.
Welche konkrete Drehzahl das darstellt - interessiert wohl keine Sau. 
Hauptsache die Reglerantwort ist so, dass die Abweichung möglichst früh 
und ohne großartiges Überschwingen ausgeglichen wird.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Willy Rokey schrieb:
> Wie kriegt man Drehzahl? drehzahl = robbihöhe * sin(aktuellWinkel) ?
> noch dazu Konstanten? etwa Erdbeschleunigung?

Drehzahl kriegt man mit viel Dreh und viel Zahl! Konstanten auch gut, 
Erdbeschleunigung nix gut, besser Gravitationskonstante. Bei Drehzahl 
neben robbihöhe noch Zahl zwei und Kreiszahl nicht vergessen.

von Willy R. (bolorkhuu_d)


Angehängte Dateien:

Lesenswert?

Danke für schnelle Antworten!
Ist das so richtig? die darausresultierende Einheit verwirrend. noch 
dazu roboter masse?

von Olaf (Gast)


Lesenswert?

> angeschmissen, damit die Räder wieder unter den Schwerpunkt fahren.
> Welche konkrete Drehzahl das darstellt - interessiert wohl keine Sau.

Da hast du natuerlich im Prinzip recht, aber ich denke das die 
Bestimmung der Reglerparameter einfacher ist wenn man es kaskadiert 
macht. Ausserdem koennte man auch fragen was denn der Sinn der ganzen 
Sache ist. Wenn der Roboter nicht nur still stehen soll, sondern sich 
auch mal bewegen moechte, dann wird man vielleicht eine bestimmte 
Geschwindigkeit vorgeben wollen?

> Drehzahl kriegt man mit viel Dreh und viel Zahl!

Hihi...auf jedenfall mit einer moeglichst hohen Aufloesung. Man will ja 
idealerweise im Stillstand gegen den Grenzwert von null regeln. Es lohnt 
im uebrigen mal einen echten Segway zu beobachten. Die wippen im 
Leerlauf immer leicht hin und her.

Olaf

von Purzel H. (hacky)


Lesenswert?

>while(1){
>   getActuelWinkel();
>   PWM=PID(actuellWinkel);
>   Fahreroboter(PWM);
>}

Hat als Schwachstelle den getActuelWinkel();. Da wird wahrscheinlich ein 
MIMS verwendet um mit 2 koordinaten die Schwerkraft zu messen. Was 
natuerlich Muell anzigt wenn die Achse beschleunigt. Denn dann treten 
Seitenkraefte auf, auch wenn der Winkel Null=senkrecht ist. Dh es wird 
ein Winkelfehler gemessen, wo keiner ist.
Allenfalls sollte man da zusaetzlich einen Winkelbeschleunigungsmesser 
einsetzen.

von Willy R. (bolorkhuu_d)


Lesenswert?

Drei von Vier schrieb:
>>while(1){
>>   getActuelWinkel();
>>   PWM=PID(actuellWinkel);
>>   Fahreroboter(PWM);
>>}
>
> Hat als Schwachstelle den getActuelWinkel();. Da wird wahrscheinlich ein
> MIMS verwendet um mit 2 koordinaten die Schwerkraft zu messen. Was
> natuerlich Muell anzigt wenn die Achse beschleunigt. Denn dann treten
> Seitenkraefte auf, auch wenn der Winkel Null=senkrecht ist. Dh es wird
> ein Winkelfehler gemessen, wo keiner ist.
> Allenfalls sollte man da zusaetzlich einen Winkelbeschleunigungsmesser
> einsetzen.

Beschleunigungssensor und Gyroskope sind dabei.

von Purzel H. (hacky)


Lesenswert?

Aha. Und auf mysterioese Weise kommt da ein Winkel raus...

von Willy R. (bolorkhuu_d)


Lesenswert?

Beschleunigunssensor ist a r s c h langsam. Mit Hilfe Kalman Filter 
werden die Daten aus Gyroskope und Beschleunigungssensor gefiltert. 
Empfindligkeit von den Sensoren sind befriedigend.

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Willy Rokey schrieb:
> Beschleunigunssensor ist a r s c h langsam.

Das ist nicht ganz korrekt, ein Beschleunigungssensor misst nicht die 
Langsamkeit oder Schnelligkeit (Geschwindigkeitsmesser) sondern die 
Beschleunigung (erste Ableitung der Geschwindigkeit). Er kann höchstens 
eine zu geringe Grenzfrequenz haben.

von Willy R. (bolorkhuu_d)


Lesenswert?

mit einem Beschleunigungssensor kann man die Daten im Bereich -2g bis 
bis +2g haben. Der hat wenig mit Winkelbeschleunigung zu tun! Erste 
Ableitung Geschwindigkeit nach der Zeit ist mir ja ewig klar.
Ich bräuchte guten Regelalgorithmen.

von эл супертролль (Gast)


Lesenswert?

Ein PID mit etwas rumprobieren tut nicht ... schade. Tja. Den 
Regelalgorithmus gibt's mit dem Modell. Bring mal ein Modell. Die 
Differentialgleichungen bitte. Erst mal das Koordinatensystem. Mit der 
Wahl des optimalen Koordinatensystems werden die Differentialgleichungen 
einfacher.

Wir sind mit einem Lagrageansatz zufrieden. Es muss kein Hamiltionian 
sein.
Sind die Nichtphysiker noch da ?

von Willy R. (bolorkhuu_d)


Angehängte Dateien:

Lesenswert?

Mit dem PID hab ich tausendmal rumprobiert. Immer durch den A r s c h.

Grad hab ich die DC -Motoren systemtheoretisch vereinfacht bescheibt. 
Ich weiss es nicht ob es mir was bringt.
Ich wusste längst das die Motoren PT1 Verhalten haben. Daher der PID 
Regler.

Drehzahl = Winkelgeschwindigkeit (Daten aus Gyroskope) ?? Ist das 
Richtig?
Die Einheiten stimmen nicht ganz. Drehzahl zahl/zeit. 
Winkelgeschwindigkeit winkel/zeit.

von Willy R. (bolorkhuu_d)


Lesenswert?

эл супертролль schrieb:
> Ein PID mit etwas rumprobieren tut nicht ... schade. Tja. Den
> Regelalgorithmus gibt's mit dem Modell. Bring mal ein Modell. Die
> Differentialgleichungen bitte.
Gewöhnliche Diff-Gleichung erste und zweite Ordnung habe ich gebildet.
> Wir sind mit einem Lagrageansatz zufrieden. Es muss kein Hamiltionian
> sein.
Ach komm tovarish! Davon will ich gar nichts wissen. :)

von Willi Wahnsinn (Gast)


Lesenswert?

Willy Rokey schrieb:
> noch dazu roboter masse?
Warum soll die Masse des Roboter da mit reinspielen? Stell dir vor, der 
Massenschwerpunkt läge einmal in der Achse und einmal im "Kopf". Kein 
Unterschied in der Masse, großer Unterschied im Verhalten.

von Na Sowas (Gast)


Lesenswert?

Ein DC Motor ? Hat unter anderem die Charakteristik, dass die Kennlinie 
Omega:=f(u) nicht durch Null geht. Man muss die Kommutatorspannung 
anlegen, dass er loslaeuft. dh in Null, welches selbst eine kleine 
hysterese haben muss, springt die Spannung um zwei mal die Kommutator 
Spannung. Die wird etwa ein Volt oder so sein. Weiter kam ich noch 
nicht, werd mir's aber anschauen

von эл супертролль (Gast)


Lesenswert?

Was noch etwas unklar ist, ist das Traegheitsmoment. Was ist dahinter 
versteckt ? Und wie ?

von Oliver R. (f3i3rfly0r)


Lesenswert?

Trägheitsmoment? Drehmoment? Drallsatz!

Gruß

Oliver

von Joe G. (feinmechaniker) Benutzerseite


Lesenswert?

Mein Bauchgefühl rebelliert. Willi ist am Arsch und kann auf der einen 
Seite keine vollständigen deutschen Sätze schreiben. Andererseits 
programmiert er PID Regler, kennt die Gravitationskonstante und schreibt 
die Dgl. für einen DC Motor mit Lastmoment einigermaßen korrekt auf. 
Weiterhin versteht er einige russische Vokabeln und kann sogar darauf 
adäquat antworten. Auch Lagrange oder Hamilton stoßen ihn nicht ab. 
Diverse Veröffentlichungen zum inversen Pendel kennt er bestimmt aus dem 
ff. Damit gibt es eigentlich nur zwei schlüssige Deutungen. Eine davon 
könnte Schizophrenie sein. Die andere ist jedoch wahrscheinlicher.

von Willy R. (bolorkhuu_d)


Lesenswert?

Joe G. schrieb:
> Mein Bauchgefühl rebelliert. Willi ist am Arsch und kann auf der einen
> Seite keine vollständigen deutschen Sätze schreiben. Andererseits
> programmiert er PID Regler, kennt die Gravitationskonstante und schreibt
> die Dgl. für einen DC Motor mit Lastmoment einigermaßen korrekt auf.
> Weiterhin versteht er einige russische Vokabeln und kann sogar darauf
> adäquat antworten. Auch Lagrange oder Hamilton stoßen ihn nicht ab.
> Diverse Veröffentlichungen zum inversen Pendel kennt er bestimmt aus dem
> ff. Damit gibt es eigentlich nur zwei schlüssige Deutungen. Eine davon
> könnte Schizophrenie sein. Die andere ist jedoch wahrscheinlicher.

arbeitest du evtl bei bild zeitung?

von Willy R. (bolorkhuu_d)


Angehängte Dateien:

Lesenswert?

Oliver R. schrieb:
> Trägheitsmoment? Drehmoment? Drallsatz!
Ist schon drin, 2ter term. Motorinduktivität ist vernachläßigt

von Udo S. (urschmitt)


Lesenswert?

Uah 4,8 MB für das Handgeschiere.
Genau jetzt wäre der richtige Zeitpunkt dich etwas mit LaTeX zu 
beschäftigen.

von Karl H. (kbuchegg)


Lesenswert?

Udo Schmitt schrieb:
> Uah 4,8 MB für das Handgeschiere.

Jetzt nicht mehr :-)

von Willy R. (bolorkhuu_d)


Lesenswert?

Udo Schmitt schrieb:
> Uah 4,8 MB für das Handgeschiere.
> Genau jetzt wäre der richtige Zeitpunkt dich etwas mit LaTeX zu
> beschäftigen.

Da haste recht!

von Oliver R. (f3i3rfly0r)


Lesenswert?

Willy Rokey schrieb:
> Oliver R. schrieb:
>> Trägheitsmoment? Drehmoment? Drallsatz!
> Ist schon drin, 2ter term. Motorinduktivität ist vernachläßigt

Hatte ich erst nach Joes Kommentar gesehen...

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.