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!
Wo siehst du den Unterschied zwischen Motordrehzahl und Motorgeschwindigkeit?
Haben die Motoren genug Drehmoment für den Roboter? Die sehen so klein aus. Du betreibst den Roboter mit einem 9V-Block?
...und vor allem,wie erfasst Du Deine Winkel,Positionen,Geschwindigkeiten? Also welche Sensoren und Verfahren? Etwas mehr Input!
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.
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) ?
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!
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.
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.
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
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??
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
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
Wo wird die Abtastrate (wichtiger Parameter) definiert? Gibts da einen Timer?
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?
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.
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.
Danke für schnelle Antworten! Ist das so richtig? die darausresultierende Einheit verwirrend. noch dazu roboter masse?
> 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
>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.
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.
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.
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.
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.
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 ?
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.
эл супертролль 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. :)
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.
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
Was noch etwas unklar ist, ist das Traegheitsmoment. Was ist dahinter versteckt ? Und wie ?
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.
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?
Oliver R. schrieb: > Trägheitsmoment? Drehmoment? Drallsatz! Ist schon drin, 2ter term. Motorinduktivität ist vernachläßigt
Uah 4,8 MB für das Handgeschiere. Genau jetzt wäre der richtige Zeitpunkt dich etwas mit LaTeX zu beschäftigen.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.