PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bestimmung von Reglerkoeffizienten



Ethernut
25.03.2013, 12:12
Liebe Forumuser,

ich mache gerade ein Projekt, bei dem ich ein Heizelement, also ein Peltier Elelemt regeln soll. Ich habe mir das Tutorial von RN Wissen hergenommen und hänge da an einer verständnissfrage.
Der Code für einen PI Regler ist eigentlich nicht schwer zu verstehen:



e = w - x; //Vergleich
esum = esum + e; //Integration I-Anteil
if (esum < -400) {esum = -400;} //Begrenzung I-Anteil
if (esum > 400) {esum = 400;}
y = Kp*e + Ki*Ta*esum; //Reglergleichung
if (y < 0) {y = 0;} //Begrenzung Stellgröße
if (y > 255) {y = 255;}
PWM = y; //Übergabe Stellgröße


Aber ich verstehe nicht wie man auf die Koeffizienten Kp und Ki kommt. Mir ist bewusst, dass man das wie es beschrieben ist mit LTspice simulieren kann. Aber es soll angeblich auch sehr genau mittels der z-Transformation gehen können. Weiß irgendwer wie das geht?
Ich möchte das genau machen und nicht mit Werten herumspielen...

Ich bin noch ziemlich neu in der ganzen Sache und bitte um Hilfe.

lg Ethernut

ichbinsisyphos
25.03.2013, 12:46
Ich bin selbst gespannt, ob es da irgendwas gibt, aber ich denke dass dieses Problem prinzipiell nicht formalistisch gelöst werden kann. Nur mit Probieren und mit Erfahrung. Mit einer Simulation könnte man in Grenzen brute-forcen.

DanielSan
25.03.2013, 13:02
Im RN-Wissen stehen 2 Methoden wie man die Parameter Kp und Ki ermittelt. Das scheint wohl experimentell zu gehen.
Ich habe auch aktuell das Problem, das ich einen Regler umsetzen möchte.

PICture
25.03.2013, 13:09
Hallo!

Ich denke, dass man ein Regler nur für voll definierten Regelkreis, also mit genau bekannter Regelstrecke, bestimmen kann.

Ethernut
25.03.2013, 13:35
@all:

vielen lieben Dank für eure Antworten :)

@PICture:


Ich denke, dass man ein Regler nur für voll definierten Regelkreis, also mit genau bekannter Regelstrecke, bestimmen kann.

Ich habe ein Peltier Element als Regelstrecke die ich über PWM und MOSFET regeln will. Ich weiß nicht genau wie ich die Regelstrecke bestimmen soll. Mir wurde gesagt das sich ein PI Regler dafür aneigent, aber ich weiß nicht genau wieso. Im RN Wissen steht auch, dass man die Regelstrecke über eine Sprungantwort feststellen kann. Ich weiß aber nicht genau wie das gehen soll...

Hat irgendwer einen Rat?

PICture
25.03.2013, 14:23
Ich weiss bisher nicht was und wie dein Peltier Element stabil halten soll. Eine Sprungantwort bekommt man am Ausgang der Regelstrecke durch Sprungänderung von Eingangsparameter (z.B. Spannung, Temperatur, usw.). ;)

BurningBen
25.03.2013, 15:01
Die beiden Varianten nach Ziegler/Nicholls sind experimentelle Lösungen um deinen Regler zu parametrisieren.
Es gibt Analytische Verfahren, z.B. die Auslegung mit Integralkriterien.

Dazu benötigst du die Übertragungsfunktion deines gewünschten Systemes. (Also wie die Ausgangsgröße von der Eingangsgröße abhängt)
Falls du die als Differentialgleichung aufstellst, kannst du diese mithilfe der genannten z-Transformation aus dem Zeitbereich in den Frequenzbereich transformieren.
Damit, und mit der Übertragungsfunktion deines PI-Reglers kannst du dann den Regelkreis analytisch beschreiben.

Jetzt kannst du zB über den Betrag der Regelabweichung integrieren (von t=0 bis t->unendlich)
Dieses Integral musst du dann minimieren, was dir eine Gleichungssystem für die gesuchten Reglerparameter beschert.
Du kannst auch andere Integranden verwenden, wenn du zB den Reglerausgang auch möglichst klein haben willst, u.v.m.

Beschreibe mal was genau du regeln willst, und was alles zwischen dem µC und der Regelgröße ist.

Ethernut
26.03.2013, 08:13
@BurningBen:


Beschreibe mal was genau du regeln willst, und was alles zwischen dem µC und der Regelgröße ist.

Also:

Mir steht ein ATmega32 zur verügung und ein Board auf dem ich programmieren kann. Ich soll einen PI-Regler entwerfen der über PWM einen MOSFET ansteuert. Dieser wiederum dient als Schalter für dieses Element. Ein Peiltier Element ist ein element, dass sich auf der einen Seite aufheizt und auf der anderen sich abkühlt wenn man eine Spannung anlegt.
Man soll über externe Taster und Display eine Temperatur einstellen können auf die der Regler dann arbeitet. Dadruch soll dieses Element dann über den benutzer aus individuell gereegelt werden können.

Den Wert des PI-Reglers werde ich in das PWM Register schreiben und Ausgeben.

Ich tue mich aber immer noch schwer die Regelstrecke zu errechnen. Wenn ich einen Puls anlege, wie komme ich dann zu einer Gleichung im s Bereich?


Ich hoffe das war halbwegs verständlich. Für mich, als Einsteiger sind da viele viele Fragen noch offen. Aber es ist auch etwas neues und aufregendes. Ich hoffe ich kann daraus viel lernen.



Liebe Grüße und herzlichen Danke an alle,
Ethernut

- - - Aktualisiert - - -

Ich glaube jetzt verstehe ich es...

http://www.rn-wissen.de/index.php/Regelungstechnik#Dimensionierung_nach_Einstellrege ln

Ich muss also an dem peltier Element einen Sprung anlegen und die Zeiten herausmessen, oder?

BurningBen
26.03.2013, 08:32
Okay, zunächst mal ist wichtig, dass du einen Sprung als Eingang anlegst, und keinen Puls.
Gleichzeitig musst du deine Ausgangsgröße messen (und aufzeichnen).
Das wäre bei dir dann wohl die Temperaturdifferenz am Pelztier ;)

Damit erstellst du dir jetzt ein Diagramm, Temperaturdifferenz über Zeit.
Anhand des Diagramm kann man dann schätzen, was für ein System vorliegt.
Und damit wiederum lassen sich dann die Parameter für die Übertragunsfunktion im Frequenzbereich (s bzw. z) ermitteln.

Du schreibst ja oben, dass du es möglichst genau haben willst, das untergräbst du natürlich ein bisschen, wenn du die Übertragungsfunktion so abschätzt.
Die genauere Alternative wäre: Du überlegst dir die physikalischen Vorgänge in deinem System und stellst damit dann die Übertragungsfunktion auf.
In deinem Fall würde die ÜF des Mosfet und die ÜF des Peltier-Elements reichen. (Die einzelnen ÜF der Streckenteile werden multipliziert)

EDIT: zu deinem edit:
Das was du verlinkt hast, ist wieder nur eine Experimentelle Einstellmöglichkeit.
Besser dürfte allerdings eine analytische Lösung auch nicht werden, wenn du die Übertragungsfunktion aus der Sprungantwort bestimmst.

PICture
26.03.2013, 09:56
http://www.quick-ohm.com/peltier_elements/download/10-Regeln.pdf

oberallgeier
26.03.2013, 10:13
... an dem peltier Element einen Sprung anlegen und die Zeiten herausmessen ...Und dann?? Dann hast Du eine Zeit. Das macht wenig Sinn. Ich habe (zwar) noch nie ein Peltierelement dimensioniert, aber Zeiten messen würde ich nicht machen. (In der letzten Zeit habe ich Sprungantworten zB bei Motorregelungen (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=427784&viewfull=1#post427784)bestimmt - klick hier).

Ich würde:
1) Beliebigen PWM-Wert (sagen wir mal 50% dc duty cycle) nehmen. Temperaturmessung am Peltier anlegen und einschalten (Temperaturmessung!!). PWM-modulierte Spannung am Element einschalten. Warten bis Temperaturkonstanz erreicht ist. Notieren: so und so viel % ergeben so und so viel Grad (ausgehend von Start-/Umgebungstemperatur).
2) PWM-Wert verändern, z.B. 25%, später 75%, gleiche Messungen durchführen.
3) Für die Verzugszeit der Temperaturänderung nach dem Anlegen ist die Temperaturanstiegskurve Deiner Messung ein guter Anhaltspunkt - wenn Du die Regelung analytisch betrachten willst.

Mit den Endwerten der Temperatur in Abhängigkeit vom PWM-Wert hast Du einen Anhaltspunkt für Deinen P-Wert. Denn der P-Wert ist keine Zeit, der ist ein Multiplikationsfaktor . . .

Mit ein bisschen Überlegen kannst Du jetzt (D)einen I-Anteil schätzen. Dazu steht ein bisschen was im RN-Wissen. Dann gucken ob das Ganze läuft - oder überschwingt. Gute I-Regler haben ein enges Band um den Sollwert in denen sie ausgeschaltet werden. Sonst schalten die um den Sollwert immer hin und her.

PICture
26.03.2013, 11:04
Ich möchte nur erwähnen, dass wegen begrenzter Zykluszahl von einem Peltierelement PWM komt nicht in Frage. :)

oberallgeier
26.03.2013, 12:22
... wegen begrenzter Zykluszahl von einem Peltierelement PWM komt nicht in Frage ...Soweit ich es verstehe (begriffen) habe bezieht sich die Zykluszahl auf die Temperaturzyklen (Umgebungstemperatur => Kühlbetrieb => Umgebungstemperatur) und nicht auf irgendwelche Stromzyklen. Notfalls könnte man ja mit nem genügend großen Kondensator auch die PWM ziemlich gut glätten - aber ich bin sicher, dass dies nicht notwendigt ist.

Siehe auch hier - klick (http://www.mikrocontroller.net/topic/125174) und natürlich auch diese Informationen. (http://quick-cool.de/peltierelemente/zyklenfestigkeit-peltierelemente.htm)

PICture
26.03.2013, 13:29
http://quick-cool.de/peltierelemente/download/Erlaeuterung-zu-Peltierelementen.pdf . ;)

Besserwessi
26.03.2013, 16:11
Im Prinzip könnte man PWM auch mit einem Peltierelement nutzen, allerdings ist damit der Wirkungsgrad geringer als mit Gleichstrom: Die Kühlleistung per Peltiereffekt ist proportional zum mittleren Strom, die Verluste durch den Widerstand sind proportional zum Quadrat des Stromes. Nutzen kann man nur die Differenz.

Eine Möglichkeit zur Glättung wäre eine Induktivität und ggf. auch noch ein Kondensator und eine Freilaufdiode: damit wird aus des PWM vom µC so etwas wie ein Schaltwandler.


Zur Charakterisierung der Regelstrecke wird üblicherweise die Sprungantwort genutzt, im Prinzip geht es auch mit der Pulsantwort, nur findet man da die Formeln nicht überall. Die Messung der Sprungantwort ist in der Regel auch etwa einfache, weil ein Puls nur eine Begrenzte Energie hat, und entsprechend eher wenig Signal für die tiefen Frequenzen liefert.

Ein Peltierelement hat eine nichtlineare Leistung als Funktion des Stromes. Für eine gute Regelung wäre es da hilfreich noch eine Linearisierung vorzusehen, also nicht direkt das Ergebnis des PI Regler an das Peltierelement zu schicken, sondern aus der gewünschten Kühlleistung den dazu passenden Strom berechnen. Dabei kann man auch gleich verhindern das der Strom zu hoch wird, denn jenseits eines optimalen Stromes nimmt die Kühlleistung auch wieder ab.

malthy
26.03.2013, 16:48
Die Frage ist, ob es dem TO nur um die praktische Seite des Ganzen geht - also darum, am Ende ein funktionierendes System zu haben - oder auch darum, sich die Theorie zu erarbeiten. Bei Temperaturregelkreisen kann man i. d. R. auch ganz gut manuell einstellen ("probieren"), so wie es zB hier beschrieben ist (http://de.wikipedia.org/wiki/Faustformelverfahren_%28Automatisierungstechnik%29 #Empirische_Dimensionierung). Das (wie aber auch andere Einstellverfahren) funktioniert aber nur, wenn das System sich einigermaßen linear verhält. Deshalb ist es sinnvoll, wie von Besserwessi angesprochen, eine Linearisierung des Systems vorzunehmen. Dazu kann man im ersten Schritt die statische Kennline ermitteln. Man betreibt das System dafür open-loop und registriert die Ausgleichswerte, die der Ist-Wert annimmt, wenn man die Stellgröße auf bestimmte Werte einstellt. Da Temperaturreglstrecken meistens Strecken mit Ausgleich sind, wird sich der Ist-Wert nach einer Stellwertänderung mehr oder weniger sigmoid auf einen Sättigungswert einstellen. Diesen Sättigungswert trägt man gegen den korrespondierenden Stellwert auf um die statische Kennline zu erhalten. So wie diese Kennlinie in Richtung 100% Stellwert immer flacher werden wird, muss man das Peltier-Element überproportional aktivieren um im Ergebnis eine (einigermaßen) lineare Kennline zu bekommen.

malthy
26.03.2013, 19:12
Ich will nochmal folgendes Ergänzen: das was ich oben beschrieben habe um die statische Kennlinie zu bestimmen, ist im Prinzip das Ermitteln der Sprungantwort. "Sprung" bezieht sich darauf, dass du die Stellgröße, also die PWM zB von 10 auf 20% stellst und dann beobachtest, wie das System mit einer Temperaturänderung antwortet. Aus diesem Temperaturübergang kann man dann das zeitliche Verhalten des Systems ableiten (das ist das, was oberallgeier oben auch schon angesprochen hat). Vereinfachend kann man zwei Kennwerte bestimmen, Tu und Tg, so wie auf diesem Bild gezeigt. (http://upload.wikimedia.org/wikipedia/commons/d/de/Tutg.svg) Dazu benötigst du noch die statische Verstärkung des Systems Ks, das ist die Steigung der o.g. statischen Kennlinie - Linearität vorausgesetzt. Damit könntest du zB nach der Methode von Ziegler und Nichols (http://de.wikipedia.org/wiki/Faustformelverfahren_%28Automatisierungstechnik%29 #Methode_von_Ziegler_und_Nichols) deine Parameter für den Regler bestimmen. Aber wie gesagt: meiner (bescheidenen) Erfahrung nach kann man eher träge Temperaturregelstrecken auch gut per Hand einstellen.

Und dann noch ein Punkt zur PWM. Besserwessi hat das Problem ja erklärt. Ich stand bisher zwei mal vor der gleichen Problematik (Heizung für einen Versuchsaufbau mit Peltier) und habe zwei verschiedene Wege eingeschlagen. Einmal habe ich einen einfachen Linearregler aufgebaut, natürlich mit dem Nachteil, dass der einen erbärmlichen Wirkungsgrad hat. Im anderen Falle habe ich mir eine Spannungsgesteuerte Stromquelle besorgt, im Prinzip ein Schaltnetzteil mit steuerbarem Ausgangsstrom. Um eine DC Steuerspannung für das NT zu bekommen habe ich die AVR PWM einfach "getiefpasst".

Das schoss mir gerade noch durch den Kopf ... :-)

Gruß
Malte

Besserwessi
26.03.2013, 19:55
Bei einem relativ trägen Temperaturregler hilft es schon wenn man mehr als nur eine reines Probieren macht. Es dauert je nach Aufbau einfach recht lange. Außerdem ist mit dem Probieren nicht so einfach eine gute Einstellung von einer weniger guten, aber immer noch stabilen zu unterscheiden.
Wobei es bei einem PI Regler auch nur 2 Parameter sind, die man bestimmt, das ist deutlich einfacher als mit den 3 Parametern eines PID Reglers.
Ein paar einfache Einstellregeln sind aber hier sehr hilfreich.

Es wäre ggf. auch zu überlegen auch eine PID Regler zu wählen - da hat man zwar noch einen Parameter mehr, aber auch ein nicht optimal eingestellter PID Regler ist ggf. besser als ein optimaler PI Regler.

ichbinsisyphos
26.03.2013, 20:19
Gibts irgendwelche ähnliche Regeln, die einem sagen ob man bei einem bestimmten System davon profitiert wenn man aus dem P ein PI oder ein PID macht?

malthy
27.03.2013, 00:02
Bei einem reinen P-Regler hat man zumindest mit einer stationären Regelabweichung zu rechnen. - Was man sich auch leicht klar machen kann, indem man bedenkt, dass für einen P-Regler bei einer Regelabweichung von 0 eine Aktivierung von 0 resultiert. Für die meisten Regelstrecken ist das nicht adäquat. Möchte man zB eine Temperatur über Raumtemperatur konstant halten, muss man permanent Energie aufwenden, ein Stellwert von >0 wäre also nötig. Ein I-Anteil kann genau das sicherstellen, denn er akkumuliert die Regelabweichung der Vergangenheit. Welchen Reglertyp man im Detail sinnvollerweise verwendet, hängt also von der Regelstrecke ab. Wenn man den Regler aber sowieso diskret/digital implementiert, ist's ja am Ende eh egal. Man nimmt einfach einen PID, wenn eine Komponente nicht relevant ist, wird das entsprechende Gewicht eben (sehr) klein.

Ethernut
28.03.2013, 12:27
@all:

ich danke euch allen für eure antworten. ich nehme mir für jede einzelne zeit und melde mich wieder wenn ich wieder was nicht verstehe. Danke an euch :)

lg Ethernut