Forum: Mikrocontroller und Digitale Elektronik Positionsregelung DC Motor


von Jan (Gast)


Lesenswert?

Hallo zusammen,
ich möchte einen DC Motor in der Position regeln und die Reglerparameter 
automatisch bestimmen.
Adaptiv während der Laufzeit muss nicht sein, in einem extra 
"Einstellbetrieb" reicht aus.

Daten:
24V Dunker Motor 3600U/min
Inkrementalgeber 500 Imp/U(4x Auswertung -> 2000 Imp/U)
Pwm gesteuerte H Brücke
ATmega328P @ 20MHz

Die Streckenparameter(I-T1) T1 und Ki nehme ich durch eine Sprungantwort 
am ungeregelten Kreis auf. Sie sind: T1 = 120ms und Ki = 110 Ink/ms

Meine Sollposition möchte ich möglichst schnell, also ohne 
Drehzahlbegrenzung/regelung anfahren. Also z.B. Soll = 10 Ink

Als Regler habe ich einen PID implementiert. Der Regler läuft im 0.1 ms 
Raster. Leider bin ich mit der bisherigen Parameterwahl nicht zufrieden.
Je nach Einstellung Überschwinger, bleibende Abweichung, 
Dauerschwingung,...

Für einen reinen P-Regler habe ich die Verstärkung auch schon von Hand 
berechnet( Gw(s) --> Kp = 1/(4*D²*Ki*T1) ) und in Simulink simuliert.
In beiden Fällen erhalte ich etwas im Bereich 10^-5
Dieser Wert ist in der Praxis aber total unbrauchbar. Der reine P-Regler 
arbeitet nur im Bereich zwischen 0.1(sehr lahm) < Kp < 
15(Dauerschwingung)
Theorie und Praxis passen also um mehrere 10er Potenzen nicht 
zusammen...

Von der automatischen Parameterbestimmung erhoffe ich mir, mir das 
mühselige ausprobieren "per Hand" zu ersparen. Außerdem ändert sich 
immer mal wieder die Last am Motor, sodass die Parameter neu eingestellt 
werden müssen.

Hat jemand von euch eine Idee woher die Abweichung zwischen Theorie und 
Praxis kommen kann oder hat jemand schonmal so eine automatische 
Parameterwahl programmiert?

Sollte ich vllt. einen anderen Regleransatz(z.B. digitale Regelung: 
Deadbeat,...) verfolgen?

Bin über alle Tips dankbar,
Vielen Dank und Grüße Jan

von toto (Gast)


Lesenswert?

fuer einen normalen regler muss alles erst mal linear sein. Ist es das? 
Wie linear ist der Motor? Linear in bezug Drehzahl zu spannung, linear 
in bezug drehmoment zu strom. Und bis auf Null hinunter messen..
mach mal...

von Jan M. (jan_m59)


Lesenswert?

Danke, das war schonmal ein guter Tipp.
Drehzahl über Spannung nehm ich gleich mal auf.
Das Drehmoment kann ich mit Hausmitteln eher nicht messen, oder gibt es 
da einen Trick?

Viele Grüße, Jan

von Jan M. (jan_m59)


Angehängte Dateien:

Lesenswert?

Das im Anhang ist die Kennlinie der Drehzahl über der Spannung.
Wie üblich, läuft der Motor natürlich erst ab einer bestimmten Spannung 
richtig los(hier 4).

Heißt das jetzt für meine Regelung, dass ich generell zu meiner 
errechneten Ausgangsspannung den Offset(4) dazuaddiere?

Viele Grüße, Jan

von Kleinkind (Gast)


Lesenswert?

Wie wurde die Sprungantwort aufgenommen? Welche Eingangsgröße? Sicher 
das die Einheiten stimmen?

Am besten mal die Kurve posten und die Versuchsbedingungen nennen.

von Jan M. (jan_m59)



Lesenswert?

Hallo Kleinkind,
ich denke, dass toto durch den Hinweis auf das Losbrechmoment eines 
Motors schonmal voll ins Schwarze getroffen hat.
Ich habe eine deutliche Nichtlinearität in meiner Regelstrecke.
Unklar ist mir aber gerade noch, wie ich damit umzugehen habe...

Natürlich hänge ich euch die Sprungantwort des offenen Kreises noch an.
Sprung wurde bei 100% Spannung mit 1ms abgetastet.
Das sollte schon so stimmen.

Viele Grüße, Jan

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Jan,

dieses Losbrechmoment hat jeder Motor und die meisten Regler kommen 
damit ganz gut klar. Hast du nur eine Regelschleife? Eingang ist 
Position, Ausgang ist PWM? Hast du schonmal darüber nachgedacht, dem 
Positionsregler einen separaten Stromregler zu unterlagern? Dann kannst 
du den Positionsregler etwas langsamer machen, z.B. 1kHz.

Achte auch darauf, ob du irgendwo an die physikalisch möglichen Grenzen 
kommst. Wenn der Regler eine Solldrehzahl von 6000 U/min vorgibt, obwohl 
der Motor nur 3000 U/min schafft, kann er natürlich den Sollwerten nicht 
folgen.

Das Motordrehmoment misst man meistens nicht direkt, sondern berechnet 
es aus dem (vom Stromregler) gemessenen Iststrom. Dabei wird ein 
linearer Zusammenhang zwischen Strom und Drehmoment unterstellt, d.h. 
Sättigungseffekte werden vernachlässigt.

Mit freundlichen Grüßen
Thorsten Ostermann

von innerand i. (innerand)


Lesenswert?

Jan M. schrieb:

> Ich habe eine deutliche Nichtlinearität in meiner Regelstrecke.

das ein System linear ist, bedeutet nicht, dass da bei allen Messungen 
nur geraden raus fallen.
Linear ist es dann, wenn man es in die Form der ABCD Matrizen bringen 
kann.

von Uli der Troll (Gast)


Lesenswert?

>Das Motordrehmoment misst man meistens nicht direkt, sondern berechnet
es aus dem (vom Stromregler) gemessenen Iststrom. Dabei wird ein
linearer Zusammenhang zwischen Strom und Drehmoment unterstellt, d.h.
Sättigungseffekte werden vernachlässigt.


Ausser um Null. Dort kann Strom fliessen, ohne ein Drehmoment zu 
bringen.

von Uli der Troll (Gast)


Lesenswert?

Und ja, die nichtlinearitaet der spannung von 4V offset kann man 
kompensieren. imdem man einfach 4V hinzuzaehlt. Wenn man auf Position 
regelt muss man da etwas aufpassen, dass der Regler nicht dauernd die 
richtung umschaltet.

von Ernst O. (ernstj)


Lesenswert?

Du könntest probieren, ob mit (drastisch) niedrigerer PWM Frequenz das 
Losbrechmoment des Motors schon bei geringerer effektiver Motorspannung 
überwunden wird.

von Kleinkind (Gast)


Lesenswert?

Also die Simulation spuckt für den Sprung von 0 auf 100 Inkremente in 
der Lage, eine maximale Spannung von 0,2% nach deiner Skala aus. Das 
könnte durchaus viel zu wenig sein.

Es könnte vielleicht von Vorteil sein die statische Kennlinie 
aufzunehmen.

von Jörg K. (joergk)


Lesenswert?

Hallo Jan,

alle mir im industriellen Umfeld untergekommenen Servoregler arbeiten 
mit drei Reglerschalen:
1. innere Schale: Stromregler, Führungsgröße ist das Sollmoment, 
Regelgröße die Spannung (also in Deinem Fall der PWM-Wert). Meist ein 
PD-Regler

2. mittlere Schale: Drehzahlregler, Führungsgröße ist die Solldrehzahl, 
Stellgröße ist das Sollmoment (für Reglerschale 1). Meist ein PI-Regler

3. äußere Schale: Lageregelung, Führungsgröße ist Sollposition, 
Stellgröße ist die Solldrehzahl (für Reglerschale 2). Üblicherweise ein 
reiner P-Regler

Vorteilhaft ist: Man kann von "innen" nach "außen" optimieren.

Wichtig ist noch: Die Sollposition für die äußere Schale darf natürlich 
nicht einfach hart aufgeschaltet werden (also z.B. von 0° auf 100°), 
sondern es ist ein Interpolator vorzuschalten, der fortlaufend 
Sollpositionen gemäß der Anfahr/Bremsrampen erzeugt.

Klingt kompliziert, ist aber am Ende der einfachere Weg, als zu 
versuchen, das Ganze mit nur einem PID-Regler in den Griff zu bekommen.
Dieses Vorgehen ermöglicht auch optimale Reglereinstellungen, da z.B. 
die Zeitkonstanten des Stromreglers bedeutend kleiner sind als die des 
Drehzahlreglers.

Elm Chan hat meiner Erinnerung nach sowas mal komplett in einem AVR 
gelöst, suche doch mal auf seiner Website.

Jörg

von Jan M. (jan_m59)


Lesenswert?

@Alle
Vielen Dank für die vielen Denkanstöße

@Kleinkind
Meinst du eine Kennlinie von mir?
Ich verstehe leider nicht was du mir sagen möchtest...
Was meinst du mit statischer Kennlinie?

@Jörg
Die Sollgröße wird nicht hart aufgeschalten sondern als Rampe 
angefahren.
Dennoch soll die Position immer mit der maximalen Geschwindigkeit 
angefahren werden. Der dabei auftretende Strom interressiert mich 
eigentlich auch nicht. Soll heißen, wenn der Motor Strom will, darf er 
ihn ruhig ziehen. Warum soll es also Sinn machen den Strom und die 
Geschwindigkeit zu regeln?
Wenn ich sagen würde der Motor soll mit einer bestimmten Geschwindigkeit 
an die Position fahren, würde ich es verstehen können, aber in meinem 
Fall wären der Strom und Drehzahlregler ohnehin immer voll 
durchgesteuert, oder nicht?

Diese Kaskadenregelung für die Position habe ich schon öfter gesehen, 
aber dort wird dann immer auch eine Drehzahl für die Positionierung mit 
vorgegeben.

Viele Grüße Jan

von Falk B. (falk)


Lesenswert?

@Jan M. (jan_m59)

>eigentlich auch nicht. Soll heißen, wenn der Motor Strom will, darf er
>ihn ruhig ziehen.

Schon, aber das Porblem liegt woanders.

> Warum soll es also Sinn machen den Strom und die
>Geschwindigkeit zu regeln?

Eben WEIL diese Größen physikalisch bedingt DEUTLICH schneller regelbar 
sind. Man hat hier deutlich bessere Möglichkeiten, den Motor optimal zu 
reglen. Klingt komisch, ist aber so. Denn die Relativ großen 
Zeitkonstanten der Lageregelung schlagen bei einer einstufigen Regelung 
voll auf die Stromregleung durch, mit dem Ergebnis, dass man den 
Regelkreis insgesamt deutlich langsamer dimensionieren muss, obwohl das 
bei einem kaskadierten Regler nicht nötig wäre.

>Wenn ich sagen würde der Motor soll mit einer bestimmten Geschwindigkeit
>an die Position fahren, würde ich es verstehen können, aber in meinem
>Fall wären der Strom und Drehzahlregler ohnehin immer voll
>durchgesteuert, oder nicht?

Oder nicht. Die schnellen Strom und Drehzahlregler verhindern u.a. auch 
ein Überschwingen der Stellgröße, eben weil sie schnell hoch aber auch 
wieder runter regeln können!

>Diese Kaskadenregelung für die Position habe ich schon öfter gesehen,
>aber dort wird dann immer auch eine Drehzahl für die Positionierung mit
>vorgegeben.

Siehst du.

Hier das Projekt vom Meister.

http://elm-chan.org/works/smc/report_e.html

von Jörg K. (joergk)


Lesenswert?

Falk Brunner schrieb:
> Siehst du.
>
> Hier das Projekt vom Meister.
>
> http://elm-chan.org/works/smc/report_e.html

Dem bleibt nichts hinzuzufügen.
Aber man kann es natürlich auch einfach machen und sich dann genau über 
die Probleme "Überschwingen" bzw. "Endposition wird angeschlichen" 
ärgern und irgendwann feststellen, daß die gewünschte Performance nicht 
erreicht wird.
Aber manchmal ist auch der Weg das Ziel...

Jörg

PS: Danke nochmal für den Link, hatte ihn nicht mehr parat

von Jan M. (jan_m59)


Lesenswert?

Wow, jetzt bin ich aber schwer beeindruckt. Der Link zeigt im Endeffekt 
genau mein Ziel, bzw. was ich mir so vorgestellt zu erreichen habe...

Mein Projekt ist dazu da, die Studieninhalte einmal zu vertiefen. Ich 
habe in unterschiedlichsten Bereichen viel gelernt.
In der Regelungstechnik lässt sich das im Studium alles so toll 
rechnen(oder auch nicht ;-) ) wenn der Prof eine Aufgabe stellt. In der 
Praxis bemerkt man dann ganz andere Probleme. Vom Losbrechmoment eines 
Motors z.B. habe ich in keiner Vorlesung jemals etwas gehört. Nach dem 
freundlichen Hinweis war es mir natürlich auch klar...

Die Totzone in meinem Stellglied habe ich nun noch kompensiert und den 
Regler neu eingestellt. Der nächste Schritt wäre jetzt der kaskadierte 
Regelkreis. Mit meinem Ergebnis bin ich jetzt aber erstmal zufrieden.

Mit dem Wissen nach dem Projekt würde ich jetzt doch vieles anders 
machen.
Als Erkenntnis zum Eingangsproblem bleibt:
Wenn der Regler solide eingestellt ist, ist eine adaptive Parametrierung 
erstmal gar nicht notwendig.

Ich bedanke mich recht herzlich für eure vielen hilfreichen Beiträge

Viele Grüße,
Jan

von Kleinkind (Gast)


Lesenswert?

Eine adaptive Regelung umsetzen kostet viel Zeit und Aufwand. Der erste 
Schritt eines besseren Reglergebnisses, wäre die Umsetzung einer 
robusten Regelung. Nur falls du dich dahingehend weiter bilden willst.

von Jörg K. (joergk)


Lesenswert?

Jan M. schrieb:
> In der Regelungstechnik lässt sich das im Studium alles so toll
> rechnen(oder auch nicht ;-) ) wenn der Prof eine Aufgabe stellt. In der
> Praxis bemerkt man dann ganz andere Probleme. Vom Losbrechmoment eines
> Motors z.B. habe ich in keiner Vorlesung jemals etwas gehört. Nach dem
> freundlichen Hinweis war es mir natürlich auch klar...

Leider ist das in der Hochschulregelungstechnik schon immer so gewesen: 
Lineare Strecke, keine "Gefahrengrenzen", die man auch bei der 
Reglereinstellung im Interesse der Schadensvermeidung beachten muß und 
so weiter. Solch unangenehme Dinge wie Nicht-Stetigkeit gibt es in der 
Vorlesung natürlich auch nicht.

Aber dafür gibt es dann ja später die Praxis...

Jörg

von Reddi (Gast)


Lesenswert?

Gibt es da vielleicht eine Webseite oder auch ein Buch,
welches auf solche Fälle dann explizit eingeht?
Damit die Theorie und Praxis etwas näher zusammen kommt...

von Jörg K. (joergk)


Lesenswert?

Reddi schrieb:
> Gibt es da vielleicht eine Webseite oder auch ein Buch,
> welches auf solche Fälle dann explizit eingeht?
> Damit die Theorie und Praxis etwas näher zusammen kommt...

So ein Buch habe ich mir immer gewünscht, aber genau diesen Bereich 
scheint keiner ansprechen zu wollen/können.
Alle mir bekannten Bücher, die sich der "praktischen Regelungstechnik" 
widmen, waren entweder doch ohne wirklichen Praxisbezug oder auf 
einfachstem Niveau.
Kennt jemand was passendes? Würde mich auch (immer noch) interessieren.

Jörg

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.