Das liegt nicht an der Versorgungsspannung sondern ist prinzipiell so. Ich bin kein Regelungstechniker, also erkläre ich das mal verbal:
Die Sollposition soll ja möglichst schnell erreicht werden, also muß der Motor am Anfang so schnell laufen wie möglich. Und da gibst es Grenzen, wenn nicht beim Netzteil dann beim Motor selbst. In diesem Bereich sehe ich eigentlich nichts von Regelung, PWM 100%, mehr geht nicht. Abbremsen tut man so spät wie möglich, so gehts am schnellsten. Das ist der Punkt, wo dann überhaupt die Regelung einsetzt. Der wird von der Trägheit des Gesamtsystems abhängen, die du in deinem Aufbau jetzt noch gar nicht siehst. Und wenn die Sollposition erreicht ist, Vollbremsung.
Also eigentlich (fast) immer. Wird das System eigentlich schlechter, wenn man ihn überhaupt wegläßt?Leider hat der Integratoranteil bis dahin meist schon so viel aufintegriert, dass die Variable übergelaufen ist. Das ließ sich lösen, indem der Integrator immer dann abgeschaltet wird, wenn die PWM auf Maximum steht.
Die eigentliche Stellgröße ist ja auch nicht die PWM sondern der Motorstrom. Und da der Motor eine Induktivität (eigentlich ein RL-Glied) ist, hängt der Strom etwas komplexer vom Dutycycle und auch von der PWM-Frequenz ab. Ohne jetzt eine Fourier-Analyse des PWM-Signals gemacht zu haben würde ich behaupten, daß bei kleinem Dutycycle die Energie in den hohen Frequenzen steckt, die wiederum schlecht durch die Induktivität wollen. Eine langsamere PWM Frequenz würde da Besserung bringen.Ein anderes Problem ist die Anlaufspannung des Motors, unter welcher er sich gar nicht bewegt. Das lässt sich damit lösen, dass man auf die Stellgröße einen Versatz raufrechnet, sodass die Motorspannung immer irgendwo in der Nähe der Anlaufspannung bleibt.
Warum Mittelwert? Der Sensor ist doch digital, da klappert das letzte Bit, und er ist viel zu genau für das Getriebespiel. Wenn das z.B. so 1° bis 2° beträgt, bleiben etwa 8 Bit. Die letzten zwei oder vier Bit (von den 14 Bit) weglassen bringt das gleiche Ergebniss und ist einfacher. Außerdem verzögert die Mittelwertbildung, ein Tiefpass, die Istwertmessung und macht den Regler langsamer, erhöht also das Überschwingen. So ein Mittelwert würde nur etwas bringen, wenn die Istwertmessung ständig und um ein vielfaches schneller erfolgt, als der Stellwert geändert werden kann (also als die PWM Frequenz).Ansonsten habe ich den Differentialanteil begrenzt, da so der Überschwinger ein wenig kleiner wird. Die Istwerte vom Sensor hab ich mittels einer laufenden gewichteten Mittelwertbildung geglättet.
Schöne Auswertung. Was mich aber interessieren würde, ist die Stellgröße, der Dutycycle. Und die Horizontalauflösung ist eigentlich zu grob um das Arbeiten der Regelung zu erkennen. Die Sollposition ist eine Senkrechte, das liegt an der Vorgabe, klar. Aber die Istposition sieht auch fast wie eine Senkrechte aus, das kann eigentlich nicht sein (Beschleunigung gegen Unendlich). Die wirkliche Beschleunigung wird also durch die zu grobe Auflösung nicht angezeigt. Die anderen Kurven kann ich leider nicht wirklich erkennen.Für das Senden der Sollwerte und das Empfangen und Darstellen der Istwerte habe ich mir ein kleines Programm in Labview erstellt, wo ich das Ganze ganz gut live verfolgen kann. Übertragen werden die Werte als Hexadezimalstring. Hier ist dazu mal ein Bild von einer Sprungantwort (ein Zeitschritt=4ms, ein Schritt auf der Y-Achse entspricht 0,022°):
Dabei sieht man leider auch das schwierigste ungelöste Problem, mit dem ich zu kämpfen habe: Das Getriebespiel. Die Sprungantwort sieht ja an sich richtig hübsch aus, allerdings sieht man danach, wie der Regler mit dem Getriebespiel kämpft und um die Sollposition wackelt. Lustigerweise wird es besser, wenn man den Abtrieb mit den Fingern festhält, denn dann kann es ja nicht mehr frei wackeln
Der Regler arbeitet ja jetzt schon mit Höchstgeschwindigkeit, fast immer 100% PWM (oder 0% wenn nicht gerade das Getriebe wackelt). Was soll da noch dynamischer werden?Ansonsten ist zukünftig noch geplant, eine Vorsteuerung einzubauen, um die Dynamik noch ein wenig zu verbessern. So eine Vorsteuerung würde vorher berechnen, welche Spannung auf den Motor gegeben werden müsste, um die Sollbahn ohne Regelung abzufahren. Der Regler braucht sich dann nur noch um die Abweichungen zu kümmern.
Die würde den Regler nur langsamer machen. Das macht höchstens Sinn, Überlastfälle zu beherschen.Eine Stromregelung würde ich eigentlich auch noch gerne einbauen, bin dazu bisher aber noch nicht gekommen
Das solltest du auf jeden Fall machen machen. Wahrscheinlich kannst du dann den D-Term zu Null machen.Ansonsten gibt es ja auch die Möglichkeit, den Motor aktiv zu bremsen, indem man beide Halbbrücken gleich schaltet. Ich könnte wetten, dass sich das gegen das Getriebespiel einsetzen ließe, allerdings weiß ich noch nicht so recht, wie.
Nur gegen das Spiel hilft das nicht. Selbst wenn du den Motor mechanisch blockierst, wackelt dein Abtrieb abhängig von der Last genau so weit, wie es das Spiel zuläßt. Ich wüßte auch nicht, wie man elektronisch das Spiel wegbekommt, außer der Motor schwingt ständig um den Sollwert.
MfG Klebwax
Lesezeichen