Forum: Mikrocontroller und Digitale Elektronik Modellbildung zur PID Regelung eines Schrittmotors


von MikroM (Gast)


Lesenswert?

Hallo zusammen,

ich arbeite gerade daran einen PID Regler für einen PIC32 
Mikrocontroller zu implementieren. Dabei macht mir die Theorie 
allerdings mehr Schwierigkeiten als die Praxis.

Konkret geht es mir darum das ich gerne ein Modell der Regelstrecke im 
Zustandsraum aufstellen möchte. Das ist für die Praxis nicht wirklich 
hilfreich, das weiss ich, aber ich hätte es gerne auch genauer 
theoretisch hinterleuchtet und würde gerne meinen Regler am PC 
simulieren um die Regelparameter noch ein bischen besser dokumentieren 
zu können.

Hier nun die Beschreibung:

Ein Schrittmotor dreht eine Achse. Auf dieser Achse ist ein Drehgeber 
befestigt der mir immer den aktuellen Drehwinkel an meinem 
Mikrocontroller zurückgibt. Das Prinzip ist also

Drehgeber -> A/D-Wandler -> Mikrocontroller -> Schrittmotor

Ich will jetzt einen Winkel als Sollgröße vorgeben. Dann soll der 
Istwinkel geprüft werden und daraus berechne ich den Fehler zwischen 
ist/soll. Das schicke ich in einen PID-Regler der mir wiederum eine 
Stellgröße gibt welcher ja in Einheiten betrachtet wieder ein Winkel 
ist. In der Anwendung normiere ich diesen Winkel jetzt enifach so das 
ich ihn auf meine Schrittfrequenz addieren kann. Die Schrittfrequenz ist 
dann wieder ein Timer Interrupt der die Schritte auslößt.
Mir ist klar das ich die Regelparameter jetzt einfach experimentell 
bestimmen kann (z.B. Ziegler-Nichols), aber ich möchte einfach für mich 
selbst gerne mal eine Modellbildung versuchen da ich es aus dem Studium 
sonst immer nur vorgegeben bekommen habe. Es geht also jetzt nur rein um 
das theoretische Verständniss.

Soweit die praktische Umsetzung und jetzt zu meiner bisherigen Theorie 
um eine Modellbildung hinzubekommen. Dabei soll erst einmal vereinfacht 
die Winkelgeschwindigkeit des Schrittmotors gleich die 
Winkelgeschwindigkeit der Achse sein.

Folgende Gleichungen sind mir bekannt:
Winkelposition Theta, Zeit t, Winkelgeschwindigkeit Omega:
und
Wobei n eben die Anzahl Schritte nach der Zeit t ist. (Weiss nicht ob 
die überhaupt weiter hilft.
Außerdem
Hier kommt schonmal die Schrittfrequenz f rein.

Ich will jetzt ein wirklich sehr einfaches Zustandsraum Modell 
aufstellen nach dem Prinzip x_punkt = Ax+Bu y=Cx . Also muss ich meine 
Zustände wählen. Die Schrittfrequenz ist auf jeden Fall mal mein Eingang 
u. Als Zustände hätte ich jetzt die Winkelposition Theta und die 
Winkelgeschwindigkeit Omega genommen. Aber komm ich damit weiter? Also 
mein Zustandsvektor x und daher mein Vektor x_punkt lauten:
So und jetzt hänge ich. Mein Zustandsraum sieht dann irgendwie wohl so 
aus:

Was benutze ich für omega_punkt? Intuitiv würde ich einfach die omega 
Gleichung mit der Frequenz ableiten. Aber das hilft mir irgendwie wenig 
da ja die Frequenz auch von der Zeit abhängig ist oder nicht? Kann mir 
vielleicht jemand einen Denk Anstoß geben wie ich jetzt weiter machen 
kann? Vielen Dank schonmal!

von Purzel H. (hacky)


Lesenswert?

Ein Schrittmotor ist hier etwas viel aufs Mal. Ein Schrittmotor verliert 
keine Schritte, solange man die Beschleunigung begrenzt. Wenn man 
oberhalb einer gewissen Drehzahl drehen will, muss man die Drehzahl mit 
einer Rampe erhoehen. Ich wuerd das erst mal sein lassen und mich 
unterhalb dieser Drehzahl bewegen. Im langsamen bereich kann man in 
erster Naeherung davon ausgehen, dass kein Schritt verloren geht und 
muss daher bei der Endanfahrt vielleicht einer Schritt oder so 
korrigieren. DH die Strecke ist bezueglich des Weges integrierend. Wenn 
das alles getestet wurde, kann man versuchen die Drehzahl zu erhoehen. 
Und sieht, dass das Modell zumindest mit Stoergroessen beladen wird.

Mein Tip. Ersetze den Schrittmotor mit einem DC Motor. Der macht bei 
diesem Problem mehr Freude.

Nochwas. Omega-punkt ist die Beschleunigung.

von klaus (Gast)


Lesenswert?

sollte es nicht eigentlich so sein das man im Zustandsraum die Zeit t 
nicht mehr explizit hat?

wenn das so ist, musst du dir noch einmal Gedanken über die Gleichungen 
machen.

Aber vielleicht irre ich mich auch.

von klaus (Gast)


Lesenswert?

ist es nicht so dass

von MikroM (Gast)


Lesenswert?

klaus schrieb:
> ist es nicht so dass

Ja das ist so. Das verwende ich auch wenn ich die Ableitung meines 
Zustandsvektors aufstelle.

klaus schrieb:
> sollte es nicht eigentlich so sein das man im Zustandsraum die
> Zeit t
> nicht mehr explizit hat?
>
> wenn das so ist, musst du dir noch einmal Gedanken über die Gleichungen
> machen.
>
> Aber vielleicht irre ich mich auch.

Ja ich glaube da hast du Recht. Es sind zwar sowohl die Zustände, als 
auch die Aus- und Eingänge von t abhängig. t selbst kommt aber nie vor. 
Da hab ich wohl noch nicht die richtigen Formeln.

von MikroM (Gast)


Lesenswert?

Siebzehn mal Fuenfzehn schrieb:

> Mein Tip. Ersetze den Schrittmotor mit einem DC Motor. Der macht bei
> diesem Problem mehr Freude.
>
> Nochwas. Omega-punkt ist die Beschleunigung.

Die Sache ist wie gesagt das es praktisch ja schon funktioniert. Ich 
würde da ganze aber gerne noch besser theoretisch aufarbeiten. Es geht 
mir darum das ganze auch dokumentieren zu können und nicht einfach zu 
sagen das ich rumprobiert habe und dann hat es halt geklappt.

von klaus (Gast)


Lesenswert?

dann brauchst du ja "nur" noch ne Formel für
die nicht explizit von t abhängt, dafür aber von
und schon ist es wie aus dem Lehrbuch.

(ich weis, leichter gesagt als getan)

von MikroM (Gast)


Lesenswert?

klaus schrieb:
> dann brauchst du ja "nur" noch ne Formel fürdie nicht explizit von
> t abhängt, dafür aber vonund schon ist es wie aus dem Lehrbuch.
>
> (ich weis, leichter gesagt als getan)

Guter Hinweis, danke! Das ist in der Tat gerade das Problem, da muss ich 
wirklich noch ein bisschen grübeln und eine Formel finden.

von klaus (Gast)


Lesenswert?

kann es nicht auch einfach sein, dass du gar nicht genug Gleichungen 
hast? Insbesondere welche, die den dynamischen Vorgang beschreiben. Du 
hast doch bis jetzt einfach nur einen simplen Integrator. Also wird 
deine Matrix A auch nur Eigenwerte e haben, die alle e=0 sind. D.h. du 
kannst A=0 (alle elemente 0) und B = [\alpha;0] und x = [\Theta; \omega] 
und C = [1 0].

Das gibt eine Rampe wenn du ne Sprungantwort machst.

von klaus (Gast)


Lesenswert?

Übertragungsfunktion im Laplace bereich ist dann

von Michael O. (mischu)


Lesenswert?

Ich denke Du musst unterscheiden zwischen der Implementation auf Deinem 
Controller und einer allgemeinen Modellbildung.
Im Laplace

In einem realen digitalen Regelsystem arbeitest Du zeitdiskret, meist 
mit einem festen Zeitintervall delta t.
Du musst nur deine physikalischen Größen Frequenz und 
Winkelgeschwindigkeit in Bezug zu deiner Abtastzeit / Regelperiode 
ausdrücken. (Die absolute Zeit interessiert nicht.) Du kannst die 
Ableitung einzelner Größen im Zeitdiskreten als Differenzenquotienten 
(Steigung) angeben.

Konkret in deinem Fall:

Der momentane Winkel ist die Summe aller jemals gemachten Schritte 
(links / rechts mit unterschiedlichem Vorzeichen) mal dem Schrittwinkel.
Die Winkelgeschwindigkeit ist die Anzahl zurückgelegter Schritte pro 
Zeiteinheit.
Die Winkelbeschleunigung ist die Änderung der Winkelgeschwindigkeit pro 
Zeiteinheit.

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.