Forum: Analoge Elektronik und Schaltungstechnik Regelung einer Spannung mit PWM schwingt


von Benedikt (Gast)


Lesenswert?

Ich habe mit einem ATTiny26 eine Akkuladeschaltung aufgebaut.
Der uC misst die Akkuspannung und überwacht den Strom.

Solange der Schaltregler mittels PWM als Konstantstromquelle arbeitet
ist alles stabil, soll er dagagen eine konstante Spannung halten, habe
ich schön stabile Sinusschwingungen am Ausgang.

Die Regelschleife ist einfach:
pwm+=(signed)(Sollwert-akkuspannung);

Da ich leider von Reglungstechnik keine Ahnung habe, sagen mir auch die
ganzen Fachbegriffe nichts.
Was ich suche ist eine einfache Routine, die nicht undendlich schwingt
(so wie meine).

von thomas (Gast)


Lesenswert?

Hi Benedikt (XVI?),

wenn Deine Schaltung als Stromquelle funktioniert, denke ich daß der
Ist-Wert auch aus einer Strommessung kommt.
Allgemein würde ich sagen, daß ein Regelkreis der schwingt, eine zu
große Verstärkung hat (oder durch Rechenzeit verursachte Totzeit).
Da ich mit PWM im Controller keine Ahnung habe, weiß ich nicht was Du
da machst. Sollwert-Akkuspannung, wenn die Akkuspannung der Ist-Wert
sein soll ergibt zunächst mal die Regeldifferenz (e=w-x). Dann kommt
der eigentliche Regler und die Strecke.Ohne solche Angaben kann das
Problem überall herrühren.

jo,,
Thomas

von Benedikt (Gast)


Lesenswert?

OK, ich beschreibe es mal genauer:
Es geht um die Ladung eines Bleigel Akkus.
Gemessen wird nur die Akkuspannung. Der Strom wird nur als Schwellwert
erfasst um die Strombegrenzung zu aktivieren.
Hier ist die Regelung einfach und funktioniert trotzdem genau:
if (OVERCURRENT)
pwm--;

Der PWM Wert steuert direkt das Tastverhältnis eines Schaltnetzteil,
also im Prinzip den Strom.
Ist die Akkuspannung niedrig, wird der Strom so eingestellt, dass die
Strombegrenzung gerade eben Überstrom meldet.
Das Tastverhältnis ist nahezu konstant und springt nur minimal hin und
her (vermutlich um die 100Hz aus dem Spannungsquelle auszuregeln.

Spricht die Strombegrenzung nicht mehr an, dann wird die Spannung zum
begrenzenden Faktor:
Der Strom muss nun so geregelt werden, dass die Spannung beim Sollwert
liegt, und das mache ich mit der oben angegebenen Formel. (Zumindest
versuche ich das)
Diese Formel wird alle paar ms ausgerufen (habs schon mit 50us bis
100ms versucht, das beeinflust nur die Frequenz der Schwingung).

Wenn ich mir den PWM Wert auf dem Oszilloskop und die Spannung auf dem
Messgerät anschaue, dann scheinen beide ziemlich Sinusförmig zu sein,
und deutlich in der Phase verschoben zu sein, d.h. die Spannung steigt
noch eine Weile, obwohl der PWM Wert (also der Strom) schon wieder am
sinken ist.

Was ich jetzt brauche ist eine Formel, die mir aus dem Sollwert, dem
Istwert der Spannung und dem bisherigen PWM Wert den neuen PWM Wert
(=Strom Sollwert) liefert.
Diese braucht nicht allzu aufwendig sein, da der Istwert sich
eigentlich nur stetig ändert, und daher keine allzugroßen Probleme mit
Einschwingvorgängen auftreten.

Ich habe zwar schon hier im Forum gesucht (und habe auch einiges
gefunden), ebenso bei google. Aber wenn man noch nirgends was mit
Regelungstechnik gemacht hat, versteht man nicht allzuviel davon.

Ich erkenne zwar aus einem Schaltplan ob der aufgebaute Regler ein P
oder PI Regler ist, aber da hört es auch schon auf...

von Thomas Winkel (Gast)


Lesenswert?

Hallo,
dein Regler ist ein reiner Integrator, das bedeuted, dass die
Stellgröße bei einer Regelabweichung mit der Zeit immer größer wird.
Wenn dann der Sollwert erreicht wird ist bei Systemen höherer Ordnung
(mit Speichern) aber noch kein eingeschwungener Zustand erreicht, d.h.
dein System schießt übers Ziel hinaus. Da aber dein Regler nur einen I
Anteil hat, kann er darauf nicht sofort reagieren und muss die
erreichte Stellgröße erst langsam wieder abbauen. Das lässt sich so
beliebig fortführen (--> Sinusschwingung).
Reine I-Regler kommen eigentlich selten vor, normalerweise benutzt man
einen I Anteil um bleibende Regelabweichungen zu beseitigen.
In deinem Fall würde ich erst mal mit einem P-Regler anfangen und dann
eventuell noch was tunen, falls nötig.
pwm=(signed)(gain*(Sollwert-akkuspannung));
Gruß, Thomas

von Unbekannter (Gast)


Lesenswert?

Hallo Benedikt,

probiere mak folgendes:

   Delta = Sollwert - Istwert
   pwm = Delta * Faktor

Das wäre dann ein einfacher P-Regler. Mit 'Faktor' musst Du etwas
experimentieren. Wenn Du den nur recht klein machen kannst damit die
Sache nicht schwingt, bleibt eine Regelabweichung.

Dann gibt es noch einige andere Möglichkeiten. Z.B. 'Delta' oder
'pwm' filtern bzw. die Slew-Rate begrenzen.

Oder gleich einen PI-Regler. Eine einfache Einführung findest Du, wie
zu fast allen Themen dieser Welt, auf Wikipedia:
http://de.wikipedia.org/wiki/PID-Regler

Da findest Du auch Deinen jetzigen Regler wieder, nämlich einen reinen
I-Regler. Und da kannst Du auch lesen, dass er zu Schwingungen neigt.

von Benedikt (Gast)


Lesenswert?

Das mit dem P Regler funktioniert nicht so ganz...
Für einen einigermaßen genauern Regler (+/-50mV) muss ich den Faktor
auf über 1000 setzen und dann fangen wieder die Schwingungen an.

Ich habe aber heute nacht noch eine Weile rumprobiert, bis mir dann
aufgallen ist, dass ich im Prinzip versuche einen Strom mit einer
Spannung zu regeln zwischen denen ja eine Phasenverschiebung herscht
(im Prinzip ist es ein RLC Glied).
Damit das ganze funktioniert muss auch noch der Ist Wert des Stromes
irgenwie mitverarbeitet werden. Dieser lässt sich aus der
Spannungsdifferenz grob ermitteln: hoher Strome -> großes deltaU,
kleiner Strom -> kleines (bzw. negatives deltaU.

pwm+=((signed)Sollwert-akkuspannung)/3-delta;

Beginnt die Spannung nun schnell zu steigen, wird delta groß und wirkt
so dem Spannungsanstieg entgegen.
Beim Einschwingen dauert es zwar etwas (so etwa 10s), aber danach
scheint die Regelung stabil zu arbeiten.

von Benedikt (Gast)


Lesenswert?

Ist das auch irgendeine Art Standart Regler, was ich da gebaut habe,
oder ist das irgenwas sonderbares, was normalerweise nie verwendet wird
?

von Unbekannter (Gast)


Lesenswert?

Naja, so auf den ersten Blick sieht mir das nach einem ziemlich
esoterischem PI-Regler aus. Esoterisch weil die Faktoren nicht konstant
sind.

von Benedikt (Gast)


Lesenswert?

Ich hätte die Regelung als erstes als I-D Regler eingeordnet.
Der erste Teil addiert ja ja die Fehler auf (Intergral) und davon wird
die Ableitung (Änderung der Spannung) abgezogen, also I-D....

von Thomas Winkel (Gast)


Lesenswert?

Es ist kein ID, weil dein Delta mit aufintegriert wird. Ein PID Regler
würde so aussehen:
1
pwm_p=(signed)(P*(Sollwert-akkuspannung));
2
pwm_i+=(signed)(I*(Sollwert-akkuspannung));
3
pwm_d=(signed)(D*(akkuspannung-akkuspannung_1));
4
pwm = pwm_p + pwm_i + pwm_d;
5
akkuspannung_1=akkuspannung;
Im Tieze Schenk steht ganz gut beschrieben, wie man einen PID Regler
auch ganz unwissenschaftlich tunen kann.
Gruß, Thomas

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.