Forum: Mikrocontroller und Digitale Elektronik Wie bekomme ich das Schwingen bei einer Regelung weg?


von MicDen555 (Gast)


Lesenswert?

Wie bekomme ich das Schwingen bei einer Regelung weg?

Meine Regelung sieht so aus:

e=w-z;
y=kpr*e

y geht auf eine if Bedingung. Gesteuert wird über ein PWM Signal ein
Mosfet. Mein Problem ist das die Regelung zwar arbeitet aber entweder
macht sie ganz auf oder ganz zu. Z wird über einen Analogeingang
eingelesen. Ich brauche aber eine Regelung die sich bei einem
konstanten Wert z.B. 6 V hält und nicht dauernt schwingt. Lösung wenn
es geht bitte mit Programmbeispiel in ANSI C

von Jens Renner (Gast)


Lesenswert?

Wie sieht denn Deine Regelstrecke aus? Und welche Werte nimmt die
Stellgröße an (von wegen if-Bedingung)?

von MicDen555 (Gast)


Lesenswert?

Regelstrecke ist bei mir ein Akku der konstant mit 6,75V geladen werden
soll.
Die IF bedingung liegt daran mit wieviel Hz ich fahre entweder 500 oder
2000. Ich kann y nacher ja noch multpliezieren.
Habe auch schon einen PI regler mal programmiert der schwingt genauso,
oder muss ich die beiwerte nur richtig einstellen??
Falls noch frsgen sind schreib einfach.
Michael

von pronto_salvatore (Gast)


Lesenswert?

Hallo,
Ich kann aus den beiden Gleichungen noch nicht ganz entnehmen, wie Dein
Regelalgorithmus aussieht. Es scheint aber ein P oder ein PI-Regler zu
sein, oder? Wenn ein Regler schwingt, sind meiner Erfahrung nach
1) entweder die Regelkoeffizeinten zu hoch eingestellt, oder
2) falls es sich um ein sehr träges System handelt, hilft es, eine
D-Komponente hinzuzugeben. Diese hat praktisch folgendes Verhalten: Sie
gibt zuerst Leistung vor, nimmt sie aber nach einiger Zeit (tn) wieder
weg. Auf diese Weise kann der Sollwert erreicht werden, und
Schwingungen werden kompensiert (wenn man den D-Koeffizienten und und
die Zeit tn richtig einstellt).

D_Anteil = D_koeff x (RAbw(t) - RAbw(t-tn))

RAbw heisst hier Regelabweichung

Man muss herumspielen, bis ein Regler gut eingestellt ist. Oder das
System auf einem Rechner simulieren, und mit einem simulierten Regler
regeln.
Gruss
pront_salvatore

von Jens Renner (Gast)


Lesenswert?

Dann hast Du einen Zweipunktregler und der ist nichtlinear. Warum
verwendest Du die Regeldifferenz nicht als Multiplikator für die PWM?
Dann hast Du eine annähernd kontinuierliche Ausgangsfrequenz.

von Chris (Gast)


Lesenswert?

Hallo,

"Mein Problem ist das die Regelung zwar arbeitet aber entweder
macht sie ganz auf oder ganz zu."

Mal die naheliegendste Schlußfolgerung:

Wenn sich eine Regelung so wie beschrieben verhält, ist die
proportionale Verstärkung viel zu hoch eingestellt. kpr ist das der
proportionale Faktor?


"Regelstrecke ist bei mir ein Akku der konstant mit 6,75V geladen
werden soll."
Warum muß man dabei derartig regeln? Einen Akku lädt man meistens mit
einer Konstantstromquelle. Ja gut, die regelt sich selbst.
(Phantasie eingeschaltet->)Oder ist es gerade eine Konstantstromquelle,
die Du mittels FET und PWM-Ansteuerung realisieren möchtest? Also eine
geschaltete verlustarme Stromquelle mit Abschaltung bei Erreichen der
maximalen Ladespannung? (<-Phantasie wieder ausgeschaltet)

Was mißt denn der Eingang Deiner Schaltung? Die Akkuspannung per
AD-Wandler oder den Strom? Du könntest noch einige Info beisteuern.
Ich vermute mal einfach, man müßte in Reihe zum MOSFET noch einen
Widerstand ( einige, z.B. fünf Ohm) schalten, damit die Regelstrecke
weicher angesteuert wird. Wenn Du nur leicht mit der PWM über die
Akkuspannung steuerst, zieht der Akku so viel Strom = Ladung, daß die
Spannung steigt und Deine Regelung (falls Du tatsächlich U mißt) gleich
wieder zu macht -> Schwingung. Wahrscheinlich benötigst Du eine
I-Anteil, der in etwa der Reaktionszeit des Akkus entspricht, d.h. die
Ladekurve per DSO aufzeichen und daraus die Verzögerungszeit (im
Bereich von so 10 Minuten) heraus lesen (klar, braucht viel Zeit). Dann
hat das System genügend Dämfung und läßt das Schwingen sein. Schreib
mal, woran es letztendlich lag, wenn es dann geklappt hat.

Gruß

von Chris (Gast)


Lesenswert?

nochwas vergessen:

Ist die verwendete Betriebsspannung Deines Aufbaues stabil? Die wird ja
wehcselweise belastet. Oder Schwingt Dein Regler zusammen mit dem Regler
des verwendeten Netzgerätes?

von Chris (Gast)


Lesenswert?

nochwas:

"Regelstrecke ist bei mir ein Akku der konstant mit 6,75V geladen
werden soll."
Eigentlich ist Diese Aussage so nicht richtig, denn ein Akku wird mit
Ladung (Coulomb) geladen, das ist Strom (Ampere) mal Zeit und nicht mit
Spannung (Volt). Die Spannung eines Akkus ist im wesenlichen konstant,
bis er eben leer ist. Die 6,75 V ist vermutlich die Lade-Schlußspannung
eines 6V-Akkus. Die Akkuspannung wird nur als Wirkung aus der
zugeführten Ladungsmenge immer größer. Zur Regelstrecke gehört außer
dem Akku noch die Ansteuerung des Akkus, also die Sache mit der PWM und
dem FET, ob mit oder ohne Widerstand in Reihe zum FET und ob die
Versorgungsspannung Deiner Schaltung dabei in die Knie geht. Die
Regelung darf deshalb nicht mehr Strom durch den Akku jagen, als die
Versorgung zu liefern imstande ist.

Viel Spaß beim Regeln

Gruß

von Florian Scharf (Gast)


Lesenswert?

Dein Regelalgorithmus ist Murks. ;)
Wie wärs mit einem einfachen P-Algorithmus?

Regelabweichung = Ist - Soll;
StellgroesseNEU = StellgroesseALT - (Proportionalfaktor *
Regelabweichung);

in Zahlen

soll = 500
ist = 525
P := 0.1

--> e = ist-soll == +25
    s = s - (0.1 * 25)

Mit dem P-Wert musste halt mal ein wenig experimentieren, und so klein
drehen, dass du möglichst nahe an den aperiodischen Grenzfall kommst.
Überschwingen ist wahrscheinlich ned so gut.

der Flo

von Oliver (Gast)


Lesenswert?

@Florian

dein Regelalgorithmus ist aber auch nicht viel besser. Es handelt sich
hier nämlich nicht um einen P-Regler, sondern um einen D-Regler. Mit
dem Teil wirst du so ziemlich nichts regeln können. Deine Stellgröße
wird ziemlich schnell Null, wenn sich deine Ist-Werte nicht ändern. Du
schreibst nämlich eigentlich.

Ausgehend von s_o = 0 beim Start

s_neu = s_alt - (P * (ist_neu - soll)) = s_o - (P * (ist_alt - soll)) -
(P * (ist_neu - soll)) = - P * (ist_alt - soll - ist_neu + soll) = P *
(ist_neu - ist_alt)

Gruß Oliver

von Stephan Hochberger (Gast)


Lesenswert?

Mein Vorschlag ist Florians Regler als I-Regler zu bezeichnen, und mit
der Rechnung von Florian (nach Korrektur) zu belegen.

Ja, ja, die Vorzeichen vor den Klammern... ;)

von Stephan Hochberger (Gast)


Lesenswert?

grr, Rechnung von Oliver

von edi.edi (Gast)


Lesenswert?

pronto_salvatore
mi piace la TUA risposta
...che pasticcioni...
Ed

von Florian Scharf (Gast)


Lesenswert?

Hihi stimmt, da hab ich was durcheinandergeworfen, ihr habt natürlich
Recht. Man merkt dass ich zuviel über der Diplomarbeit hänge ;)

der Flo

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.