Forum: Mikrocontroller und Digitale Elektronik Digitaler Regler. Brett vorm Kopf.


von Drwho (Gast)


Lesenswert?

Hallo.

Ich drehe mich gerade im Kreis... Nur ein proportional Regler. Der hat 
ja die Gleichung y=kp * e mit der regelabweichung e=w-x.

Ich habe einen Motor der als sollgröße w 1000 Ticks pro s drehen soll. 
Wenn der Motor steht habe ich maximale Abweichung, d.h. Als regelgröße 
gibt es einen maximalen Wert. Dann dreht der Motor hoch. Angenommen die 
Drehzahl wird auch erreicht, dann ist e null und nach der Regelgleichung 
wäre die eingangsgröße dann 0. der Motor geht aus.

Ist es so, dass der proportionalteil wie ein zweipunkt Regler gemacht 
wird, oder wird der proportionalteil immer zu der letzten Ansteuerung 
addiert, so dass bei e=0 keine Änderung an y passiert? Das wäre so wie 
ich verstand aber i Anteil.
Frage: falls der p Anteil wie ein zweipunkt Regler wirkt, kann der dann 
einfentluch einen Motor regeln? Schwingen hin oder her.

Vielen dank

von W.A. (Gast)


Lesenswert?

Drwho schrieb:
> Der hat ja die Gleichung y=kp * e mit der regelabweichung e=w-x.

... jedenfalls, wenn y die Bezeichnung für den Stellwert, kp die für die 
Verstärkung des Proportionalanteils, w die für den Sollwert und x die 
für den Istwert ist.

> Angenommen die Drehzahl wird auch erreicht, dann ist e null und nach
> der Regelgleichung wäre die eingangsgröße dann 0. der Motor geht aus.

Dagegen hilft der Integralanteil. Ohne bleibt ein Regelfehler und der 
Motor erreicht nie den Sollwert, weil die Verstärkung endlich ist.

von Falk B. (falk)


Lesenswert?

@  Drwho (Gast)

>Ich drehe mich gerade im Kreis... Nur ein proportional Regler. Der hat
>ja die Gleichung y=kp * e mit der regelabweichung e=w-x.

OK.

>Ich habe einen Motor der als sollgröße w 1000 Ticks pro s drehen soll.
>Wenn der Motor steht habe ich maximale Abweichung, d.h. Als regelgröße
>gibt es einen maximalen Wert. Dann dreht der Motor hoch.

Ja.

> Angenommen die
>Drehzahl wird auch erreicht, dann ist e null und nach der Regelgleichung
>wäre die eingangsgröße dann 0. der Motor geht aus.

Den Puinkt erreicht ein reiner P-Regler aber nie ;-)

>Ist es so, dass der proportionalteil wie ein zweipunkt Regler gemacht
>wird,

Nein.

> oder wird der proportionalteil immer zu der letzten Ansteuerung
>addiert, so dass bei e=0 keine Änderung an y passiert?

Nein.

>Das wäre so wie ich verstand aber i Anteil.

Eben.

>Frage: falls der p Anteil wie ein zweipunkt Regler wirkt,

Tut er nicht.

> kann der dann einfentluch einen Motor regeln? Schwingen hin oder her.

Er kann schon, aber ein P-Regler hat eine bleibende Regelabweichung, 
wenn die Regelstrecke KEINEN I-Anteil hat.
Die Regelabweicgung steigt mit dem Sollwert.

von Bastian W. (jackfrost)


Lesenswert?

Hi,

Wenn das k klein ist hast du eine Regelabweichung. Mit steigendem k 
kommst du näher ran . Wenn das k zu groß wird , dann schwingt das 
System.

Ein ausgeregeltes System bekommst du mit einem PI oder PID Regler. Der P 
Regler allein kann seinen Sollwert nicht erreichen.

Gruß JackFrost

von Drwho (Gast)


Lesenswert?

Hi,

Das meine ich gar nicht. Angenommen der Regler HAT die Drehzahl 
erreicht. Dann ist y=0. gebe ich dann 0 als Anregung auf den Motor oder 
bezieht sich die 0 auf eine Änderung.
Das Gefühl sagt ja letzteres. Wenn ich erreicht habe, nichts mehr an der 
Anregung ändern. Aber so wie ich immer lese wird die stellgröße y als 
kp*e errechnet und das wäre ja dann Motor aus.

Ist mein Problem klar geworden?

von Bastian W. (jackfrost)


Lesenswert?

Wenn ein P Regler seinen Sollwert erreichen würde , dann ist der 
Stellgrad Null und somit wird keine Energie zugeführt. Der Motor bekommt 
also keinen Strom. Bei einer PWM währen es 0 %. Bei einem 4-20 mA Signal 
gibt der Regler 4 mA aus.

Gruß JackFrost

von Bastian W. (jackfrost)


Lesenswert?

Wenn bei erreichen des Sollwertes keine Änderung des Stellgrades erfolgt 
und dieser gehalten wird ist das ein I Regler bzw. der I Anteil.

Gruß JackFrost

von Falk B. (falk)


Lesenswert?

@Drwho (Gast)

>Das meine ich gar nicht. Angenommen der Regler HAT die Drehzahl
>erreicht. Dann ist y=0.

Ja.

>gebe ich dann 0 als Anregung auf den Motor oder

Ja.

>bezieht sich die 0 auf eine Änderung.

Nein.

>Das Gefühl sagt ja letzteres.

Falsch.

> Wenn ich erreicht habe, nichts mehr an der
>Anregung ändern.

Das wäre ein I-Regler, den du aber nicht hast.

>Aber so wie ich immer lese wird die stellgröße y als
>kp*e errechnet und das wäre ja dann Motor aus.

Richtig.

von Falk B. (falk)


Lesenswert?

Ein reiner P-Regler wäre z.B. bei einem Raumschiff im Weltraum geeignet, 
die Geschwindigkeit zu regeln, denn dort ist die Reibung Null. Wenn die 
gewünschte Geschwindigkeit erreicht ist, kann man die Raktenmotoren auf 
0 drehen, das Raumschiff fliegt mit konstanter Geschwindigkeit weiter. 
Eben weil die Regelstrecke Raumschiff hier eine nahezu reine 
I-Regelstrecke ist.

von Drwho (Gast)


Lesenswert?

Danke euch.
Ich glaube ich lasse erst mal das lesen und experimentiere etwas!

von Pandur S. (jetztnicht)


Lesenswert?

Es soll die Drehzahl geregelt werden. Bei einem PID Regler muss am 
Anfang der P Anteil den Fehler verstaerken und das Stellglied ansteuern. 
Nach einiger Zeit ist der I Anteil dann auch da, dass er uebernimmt, der 
Fehler wird Null, und der P Anteil somit auch. Dh der I Anteil macht die 
ganze Arbeit.
Das kann man nun verbessern indem man noch einen direkten Pfad 
hinzuddiert, den Vorwaertspfad, bei welchen einfach den etwa-Wert des 
Stellgliedes aus einer Tabelle von der Solldrehzahl ableitet.
Dh beim Einschalten wird das Stellglied gleich mit dem etwa passenden 
Stellwert beaufschlagt, und dann darf der P und der I noch das 
Feintuning machen.

von Drwho (Gast)


Lesenswert?

Eine Frage hat sich noch ergeben.
Als faustformel für einen möglichen regelgerecht. Angenommen mein Motor 
gibt bei Vollgas 1500 Ticks/s...
Ich würde denken, dass dann als maximale regelgröße nicht 1500 sondern 
etwas weniger zu wählen ist? Z.b 1200 Ticks/s? Man muss ja Reserven 
haben für Exemplar oder lastvariationen.

Wenn ich aus dem Stand beschleunige habe ich eine Abweichung von sagen 
wir den 1000. wähle ich kp dann so dass ich auf eine pwm von ziemlich 1 
komme? Also ich suche faustwerte damit das Abenteuer wenigstens 
funktionieren KANN.

Besten dank

von Bastian W. (jackfrost)


Lesenswert?

Das währe dann ein k von 0,08. Aber wenn der Motor sich dann dreht wird 
Stellgrad schon abgebaut. Bei 0,2 hast du 100 % Stellgrad bis 500 
Ticks/s.

Wenn du auf 1200 Ticks reduzierst dann hast du ja nicht mehr 100 % 
Stellgrad. Sondern Begrenzt den Stellgrad. Für Laständerungen hast du ja 
den Regler das das ausgeregelt wird. Das geht halt nur nicht mit einem P 
Regler

Hast du den Regler selbst geschrieben ?

Was ist das für ein Motor ?

Du hast ja eine schnelle Strecke da kannst du doch alles ausprobieren 
ohne das du lange warten musst.

Gruß JackFrost

von Drwho (Gast)


Lesenswert?

Das sind die Motoren von einem pololu zumo Roboter.
Geschrieben habe ich noch nichts. Habe erst zur Theorie gesucht, aber wo 
jetzt Code Editor und Papier vor mir liegen fange ich an zu schwimmen. 
Also wo es konkret wird.

Ich will aber gerne den Regler selber machen und versuche fertigen Code 
zu meiden. Habe zwar nicht eure Ausbildung aber irgendwie macht das den 
Reiz aus es zu schaffen.... Ist zumindest mein Ziel.

Träge ist so ein Mini Motor ja gar nicht. Daher vielleicht auch meine 
Blockade. P Anteil anlegen und der dreht ja quasi auf Ziel 
Geschwindigkeit...dann ist im nächsten Zyklus e schon nahe 0.... So ging 
die Überlegung vorne los.

von Falk B. (falk)


Lesenswert?

@Drwho (Gast)

>Träge ist so ein Mini Motor ja gar nicht. Daher vielleicht auch meine
>Blockade. P Anteil anlegen und der dreht ja quasi auf Ziel
>Geschwindigkeit...dann ist im nächsten Zyklus e schon nahe 0.... So ging
>die Überlegung vorne los.

Dein mentaler Regler ist instabil ;-)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Dein Denkfehler (unabhängig von P oder PI Regler) ist m.E., das du den 
Reglerausgang betrachtest, der dich nur insoweit interessiert, als das 
er die Drehzahl des Motors bestimmt (PWM oder wasauchimmer).
Als Stellgrösse jedoch fütterst du den Regler mit z.B. einem Wert vom 
Poti und als Regelgrösse brauchst du eine Drehzahlmessung. Wenn der 
Regler dann Regelgrösse = Stellgrösse erreicht (Beim PI geht das, nicht 
beim P - wie oben erklärt), hält er seinen Ausgang und dreht ihn nicht 
etwa auf Null. Er gibt bloss nicht mehr Gas und bremst auch nicht.

Der Trick besteht also darin, als Regelgrösse die zu nehmen, die du auch 
regeln willst. Du wirst also eine Drehzahl-Mess-Routine benötigen, die 
du auf die Grössenordnung des Stellwertes skalierst. Das fütterst du 
dann in den PI Regler.

von aSma>> (Gast)


Lesenswert?

Drwho schrieb:
> Ich will aber gerne den Regler selber machen und versuche fertigen Code
> zu meiden. Habe zwar nicht eure Ausbildung aber irgendwie macht das den
> Reiz aus es zu schaffen.... Ist zumindest mein Ziel.

Servus,
du wirst dafür eine Ewigkeit brauchen, weil du nichtmal verstehen 
willst, dass P-Regler nichtmal auf dem Mond was taugt.

Ein PI-Regler ist in ein paar Zeilen aufgeschrieben:
1
uk=uk-1 + K1*ek - K2*ek-1;       //Ki: Euler Vorwaerts 
2
uk-1=uk;  //uk = Spannung in U
3
ek-1=ek;  //ek = e Regelabweichung

Wobei K1 und K2 zwei Konstante sind, die vor der Regelung ausgerechnen 
werden.

Ja, jetzt kommen die ganzen unschönen nebeneffekte wie Windup usw. Wenn 
du Fachkundige Literatur willst, dann frag danach. Aber erzähl nicht so 
einen Stuß hier:

Drwho schrieb:
> Träge ist so ein Mini Motor ja gar nicht. Daher vielleicht auch meine
> Blockade. P Anteil anlegen und der dreht ja quasi auf Ziel
> Geschwindigkeit...dann ist im nächsten Zyklus e schon nahe 0.... So ging
> die Überlegung vorne los.

Du brauchst erstmal einen richtigen DC Motor (Faulhaber, Escape, Maxon), 
sonst hast du mit anderen Problemen ein paar Monate zu tun.

Ohne Fachwissen über Simulation und/oder nur mit herumprobieren:
viel Spaß. In 3 Jahren guck ich wieder in den Thread rein.

mfg

von Drwho (Gast)


Lesenswert?

Vielleicht bekommen wir mein kleines Hirn ja noch auf Kurs und stabil. 
:-( Könnte sein, dass ich konkret werden muss.

Also:

Führungsgröße w ist mal fiktiv 800 ticks/s. (bei Vollgas schafft der 
Motor mehr)

Stellgröße y ist -400...400 bei den Motoren. 400 Ist Vollgas.

Regelgröße x ist der Ausgang der Encoder. Die will ich auf Sekunden 
normieren. Also als ticks/s annehmen.



Jetzt soll der aus dem Stand losfahren Regelabweichung e = w - x; e = 
800-0, also 800.
Jetzt kommt der Proportionalteil der Regelung. Als einzige Komponente 
der Stellgröße. y = kp * e;
Bin ich bis jetzt begrifflich auf Kurs?


das y wird durch das kp so skaliert, dass es hoffentlich einer Drezahl 
von 800 ticks/s entpricht. Wenn ich experimentell ermittelt habe, dass 
das bei 50% pwm anliegt, mache ich kp = 0.25. y= 0.5 * e = 0.25 * 800 = 
200.

Und dann dreht der Motor ungefähr wie er soll. Wenn die Regelung dann 
wieder ausgerechnet wird, ist e ziemlich klein und y wird fast 0.... So 
hatte ich die Aussagen aller anderen verstanden. Irgendwie immer noch 
nciht begriffen, aber mit deiner Aussage bin ich wieder verwirrter....

von Peter U (Gast)


Lesenswert?

Versuch ein Prozent zu denken.

Solldrehzahl = 100%
Istdrehzahl prozentual dazu berechnen.

Ausgangsleistung P Anteil Soll - Ist = Ausgang.

Ein P Regler alleine kann nicht auf null Abweichung ausregeln.

von Peter U (Gast)


Lesenswert?

meine natürlich: in Prozent nicht ein

von Drwho (Gast)


Lesenswert?

>Ein P Regler alleine kann nicht auf null Abweichung ausregeln.

Das ist mir klar. Ich habe versucht die Regelgleichungen so simpel wie 
möglich zu halten, weil da das Problem irgendwie ist. Das Ergebnis(!) 
der Regelung liegt mir gar nicht am Herzen in dem Post.

von Bastian W. (jackfrost)


Lesenswert?

Drwho schrieb:
> das y wird durch das kp so skaliert, dass es hoffentlich einer Drezahl
> von 800 ticks/s entpricht. Wenn ich experimentell ermittelt habe, dass
> das bei 50% pwm anliegt, mache ich kp = 0.25. y= 0.5 * e = 0.25 * 800 =
> 200.

Das gilt bei einer Regelabweichung von 800 Ticks/s wenn die Drezahl 
steigt fällt das y. Und dann hast du weniger al deine 200.

Es ist wirklich einfacher in Prozent zu rechnen.

Wenn du e nicht misst dann hast du keine Regelung sondern eine 
Steuerung.

Lad dir Winfact Boris 8 und simulier das in der Demoversion. Da siehst 
du das es nicht geht.

Wobei der I Regler auch nicht so schwer ist. Das mim AntiWindup wird 
dann schon schwerer.


Feste Zykluszeit, I berechnen und zum letzten I addieren bzw 
subtrahieren, speichern und zum P addieren. Du musst nur Das I über min. 
und max begrenzen. Für einen einfachen Regler sollte das reichen.


Gruß JackFrost

von Bastian W. (jackfrost)


Lesenswert?

Eine einfache Formel für einen I-Regler dürfte das sein :

Wobei tc die Zykluszeit vom Regler ist, TN die Nachstellzeit und e die 
Regelabweichung.
Das y musst du halt nun noch begrenzen damit der Regler nicht 
aufintegriert wenn er schon am maximum bzw minimum ist. Und die Summe 
von P und I musst du natürlich auch begrenzen.

Gruß JackFrost

von Drwho (Gast)


Lesenswert?

Ich glaube mein Problem war, dass ich dem Regler nicht mehrere 
Zykluszeiten gegeben habe...
Das werde ich überschlafen und dann recht kleines Kp annehmen - ich 
glaube das könnte mir einen AHA Moment bescheren.

Danke! Also größtes Problem (glaube) ich, nicht über eine größere 
Zykluszahl nachgedacht zu haben, bis der Stellwert erreicht ist!

von Bastian W. (jackfrost)


Angehängte Dateien:

Lesenswert?

Ich hab mal schnell ein schwingfähiges System mit einem P-Regler 
simuliert.
Mit kp = 0,25 , kp = 0,5 und kp=2. Einer Streckenverstärkung von 16, was 
bei 100 % 1600 Ticks/s eintspricht, und aus dem Bauch gegriffene Werte 
für Dämpfung und Frequenz.

Blau ist der Sollwert.
Grün ist der Istwert.
Rot ist der Stellgrad.

Die Dateien haben die Namen der kp-Werte.

Gruß JackFrost

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.