Vorerst: ich habe mir sowohl den RN-Wissensartikel als auch den Wikipedia Artikel zu diesem Thema mehrfach durchgelesen.
Ich habe einen Roboter mir Ketten (siehe Bilder in Signatur) wo ein Mega2560 drauf sitzt. Jedes zweite Glied der Gleiskette ist weiß eingefärbt und sind daher die "Encoder Scheiben".
Ich habe einige Versuche durchgeführt wo ich die Peaks pro Sekunde in Abhängigkeit zum PWM-Wert erhalten habe.
Jetzt möchte ich gerne einen PI-Regler in meine Software implementieren jedoch habe ich einige Probleme.
Rein intuitiv bevor ich überhaupt wusste, dass es solche Regler gibt habe ich ein P-Regler erstellt. Die Gesammelten Encoder-Werte von einer Sekunde werden mit einer Konstante multipliziert. Danach wird der Fehler mit Soll- und Ist-wert berechnet und das Ergebnis zum PWM-Wert hinzuaddiert (oder subtrahiert)
Jedoch funktioniert das bei mir nicht, der Roboter macht was er will.
Deswegen bin ich dann auf diesen Artikel gestoßen.
Meine Frage ist was diese ganzen Konstanten sind. Also wenn ich den PI-Regler mal hernehme habe ich:
esum = esum + e
y = Kp * e + Ki * Ta * esum
e ist der Fehler, also Soll-Ist
Kp: ist mein Konstanter Faktor um zwischen den Peaks/s zum PWM-Wert umzurechnen
Ki: keine Ahnung
Ta: meine Abtastzeit aber was ist das genau bei mir? Ein Messvorgang? Sprich 1 Sekunde?
esum: Die Summe aller Fehler und das ist etwas was ich logisch nicht verstehe. Esum wird mit der Zeit ja immer größer und größer bis es irgendwann mal unendlich erreicht. Vorausgesetzt der Fehler ist immer positiv.
Es stellt sich auch die Frage wie ich meine Werte erhalte.
Falls wer meine Ergebnise von den versuchen braucht
Die letzte Tabelle enthält die Notwendigen Informationen. Die erste Zeile ist der PWM Wert.
Also, der PI-Regler ist ein Integrierender (=summierender) Regler mit Proportionialanteil.
D.h. deine erkenntnis mit "esum wird immer größer" ist soweit erstmal richtig. ist auch gut so. denn damit bekommst du den bleibenden Fehler weg.
der haken an der sache ist nur, dass Kp (Verstärkungsfaktor vom P-Anteil) und Ki (Verstärkung des I-Anteils deines Reglers) zusammenpassen müssen. Schau dir dazu mal die Wiki-Artikel zu den Faustformelverfahren (Automatisierungstechnik) an. da werden Methoden zur bestimmung dieser Parameter beschrieben. Allerdings werden da etwas andere Formeln für den PI-Regler zugrunde gelegt, glaube ich...
Im Übrigen kannst du i. A. für Ta die Zykluszeit ansetzen, mit der dein Regler aufgerufen wird.
wusste nicht, dass du den artikel auch schon durch hast
jo, Ta ist dann bei dir halt 1; kann schon vorkommen.
dummerweise wirst du mit den werten für Kp und Ki experimentieren müssen.
ich würde mal mit Kp=10 oder 15 und Ki=0.1 anfangen und dann langsam mit Ki nach oben gehen. wenn er das überschwingen zu weit treibt, Kp runternehmen, danch wieder an Ki schrauben.
Das komische bei mir ist, dass die Ketten macnhmal ganz stehen bleiben dann legt er volle Pulle zu und dann fahren sie wieder viel langsamer als sie sollten, sie stellen sich also nie vernüftig ein.
ach ja... wie ist das Massenträgheitsmoment deiner Motorachse im Verhältnis zu deiner Kette?
also M(Motor):M(Achse)=?
wenn du das mit nem PI(D) regler vernünftig regeln willst sollte das besser nicht zu extrem sein.
bis 1:20 oder so ists noch (einfach) regelbar...
Nunja, das mit dem Massenträgheitsmoment weiss ich nicht. Mechanisch bin ich weniger als nicht bewandert.
Was ich noch sagen wollte ist, dass mein Motor bei PWM von ca 170 anläuft, hat er das Überwunden kann ich runter bis PWM 140 gehen.
Ich nehme allerdings ein Bereich von 180-230 an. So laut meinem Diagramm habe ich einen Durchschnittlichen Faktor von
3,518304078 Links
3,622007069 Rechts
Daher wäre mein KP-Wert 3,622007069 für Rechts und eben das andere für Links. Meine Rechte Kette dreht sich generell langsamer als die Links (warum auch immer)
E berechne ich indem ich zunächst meine Encoder Ergebnise mit diesem Faktor multipliziere. Dann habe ich ja den IST-Wert in PWM. Diesen IST-Wert ziehe ich dann vom SOLL-Wert ab.
Lesezeichen