Forum: Mikrocontroller und Digitale Elektronik Regler für Temperaturregelung


von Stefan G. (Gast)


Lesenswert?

Ich bin gerade dabei einen Regler für eine Art Heizung zu realisieren.
Dabei gibt es noch einige Probleme (Temperaturmessung und Ansteuerung
der Heizpatronen), jedoch möchte ich hier mal danach fragen, wie ich
die Reglerparameter ermitteln kann.
Einen funktionierenden PI Regler habe ich einentlich schon, jedoch muß
ich noch die geeigneten Parameter (also K_p und K_i) ermitteln. Mein
Problem liegt eigentlich darin, daß ich nicht genau weiß, wie ich eine
Sprungantwort der Regelstrecke aufnehmen soll.
Das System ist nämlich EXTREM träge. Die Heizpatronen befinden sich in
einem Metallblock, und ich möchte die Temperatur in direkter Umgebung
des Blocks regeln. Ich kann nicht die Heizpatronen einfach anstellen
(24Volt/ 70Watt), und warten bis sich die Temperatur irgendeinem
Endwert annähert, da dann die ganze Sache zu heiß werden würde. Meine
maximale Temperatur die ich regeln möchte beträgt 80 Grad. Kann ich
dann zum Ermitteln der Sprungantwort die Patrone einfach mit einem
Bruchteil der vorgesehenen Spannung ermitteln und dann daraus meine
Reglerparameter ableiten?
Gruß,
Stefan

von Sascha Coesfeld (Gast)


Lesenswert?

Hallo, was ich nicht verstehe ...

Wenn die Heizung 70W hat, dann sollte sie  permanent 70W können. Wenn
Du das Umfeld auf 80Grad regelst, können die Patronen nicht überhitzen,
es sei denn, der Wärmeübergangswiderstand ist so hoch, das sich die
Temperatur an der Basis um die Patrone auf zB 300Grad aufheizt, und
außen am Block sind noch 20Grad. Eigentlich regelt Du die Temperatur im
Umfeld der Patronen. Wie hoch darf die Temperatur der Patronen den
werden? Es ist schwer, sich dein Problem vorzustellen!

von Stefan G. (Gast)


Lesenswert?

OK, es ist offenbar tatsächlich etwas schwer sich mein Problem
vorzustellen. Also nochmal: ich habe einen Metallblock, in dem sich
eine Bohrung befindet, in die eine sog. Heizpatrone hineingesteckt
wird. Wird  nun eine Spannung an die Heizpatrone angelegt, so erhitzt
sich der Metallblock und soll durch Wärmeabstrahlung die Luft in einem
kleinen Raum erhitzen.
Das Problem ist nun folgendes: Wenn ich die Heizpatrone nun anschalte
(24 und 70 W) und etwas warte, so wird der Metallblock bald eine
Temperatur von ~200 Grad haben, und die Luft wahrscheinlich auch bald
über 80 Grad betragen.  Mit was für einer Ansteuerungsart man das
regelt, weiß ich auch nicht genau. Ich habe mir überlegt es mit PWM zu
machen, anstatt normal aus und an zu schalten. Nur weiß ich nun nicht
genau, wie ich meine Regelparameter für meinen PI Regler bestimmen
kann. Ich hoffe das Problem ist nun klarer geworden, ansonsten einfach
nochmal nachfragen.
Gruß,
Stefan

von Uwe (Gast)


Lesenswert?

Hi!
Damit du ein Gefühl für das ganze bekommst solltest du einfach
Delta T je Zeiteiheit(zb.1s) für einen bestimmten PWM-Wert bestimmen.

Kp eventuell nicht zu hoch dafür Ki um so höher. Da du scheinbar kein
Überschwingen haben möchtest,Tsoll zur Ki-Berechnung etwas absenken
(0,5-2°C), dann setzt das Abregeln eher ein. Das muss man einfach
austesten.

MFG Uwe

von Klaus Falkenberg (Gast)


Lesenswert?

Hi,


und wenn Du erstmal die Ausgangstemperatur misst,
daraus die nötige Temperaturdifferenz berechnest
und aus der Masse des Blocks und der Wärmekapazität die nötige Energie
?

Dann kannst Du die Patronen mit zb 50% Leistung ( PWM ) entsprechend
lange anschalten und bist schon mal fast am Ziel.

Danach kann dann ja Deine Regelung einsetzen...

Gruß
Klaus

von Andre (Gast)


Lesenswert?

Baust du dir ne Sauna ??

Andre

von Frankl (Gast)


Lesenswert?

Ne Sauna für LWL Stecker zum Aushärten des Klebers vielleicht.

von Stefan G. (Gast)


Lesenswert?

Also ne Saune wird´s nicht. Ich glaube da würde es mit 70 Watt auch
etwas kühl oder eng werden. Je nachdem. Was sind LWL Stecker?
Stefan

von Frankl (Gast)


Lesenswert?

Lichtwellenleiter Stecker

von Klaus Falkenberg (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch eine Zusammenfassung der Regelstrategie.

Für den Hausgebrauch eigentlich immer ausreichend..
Viel Glück

Klaus

von Stefan G. (Gast)


Lesenswert?

Danke erstmal für eure Tipps. Ich bin immer noch mit dem Regler
beschäftig.
1) Ich frage mich gerade, was für eine Abtastzeit wohl sinnvoll wäre.
Habt ihr da Erfahrungswerte oder wißt ihr ob sich die "optimale"
Abtastzeit berechnen oder experimentell bestimmen läßt?

2) Ich habe den Eindruck daß ein derart träges System ziemlich zu
Schwingungen neigt. Zum einen ist ja ein zu hoher K_p Faktor
(proportionale Verstärkung) für Schwingungen verantwortlich. Ich habe
mir jedoch auch folgendes überlegt: mein I-Anteil wird ständig
aufsummiert (aufintegriert). Wenn nun irgendwann mein Sollwert erreicht
ist, habe ich den Eindruck, daß sich da mit der Zeit eine recht
beträchtliche Summe gebildet hat, die dann erstmal wieder "abgebaut"
werden muß. Das hat zur Folge, daß obwohl meine Regelabweichung bereits
negativ ist, der Block immernoch beheizt wird. Ist es deshalb sinnvoll,
den I-Anteil zu begrenzen?

Gruß,
Stefan

von Sascha (Gast)


Lesenswert?

Hallo,

normalerweise addiert man die rechnerrischen Werte den P+I+D.

Das heißt, schwingt dein Wert über durch Durchaufsummieren des I, dann
muß der P schon wieder anfangen, in die andere Richtung zu wollen und
macht die Stellgröße kleiner ...


Sascha

von Oliver (Gast)


Lesenswert?

@ Stefan

Zur Abtatstzeit:
Als Faustformal kann man sagen, dass man grob ein 10el - 20el der
Zeitkonstante tau des Systems nehmen kann (die Zeit, die dein System
braucht, um auf 63% der Endtemperatur zu gelangen).

von Stefan G. (Gast)


Lesenswert?

@ Sascha: Ja, ich verstehe was du meinst. Bei mir werden die Größen auch
alles aufsummiert. Hier ist mein (im Moment noch PI-) Regler:

  // Regelabweichung e_k berechnen:
  e_k = temp_soll - temp_ist;

  // P-Anteil:
  u_p = (int) (e_k * k_p);

  // I_Anteil:
  u_i += (int) (e_k * k_i);

  // gesamte Stellgröße:
  u_ges = u_i + u_p;

  // Stellgrößenbegrenzung:
  if (u_ges > 255) u_ges = 255;
  else if (u_ges < 0) u_ges = 0;

  // Pulsbreite setzen (wegen Mosfet Treiber (-> Invertierung)
        // wird von 255 (-> 100% PWM) abgezogen):
  OCR0 = (int) (255 - u_ges);

Nun ist es so. Meine Stellgröße wird begrenzt, da mehr als 100% PWM
(also Gleichstrom 24 V) ja keinen Sinn ergeben. Während u_p jedes mal
neu berechnet wird, summiert sich u_i ja auf. Irgendwann, wenn die
Regelabweichung e_k negativ geworden ist, ist u_p ebenfalls sofort
negativ, u_i muß aber erstmal "dezimiert" werden, ehe es negativ
wird. Und das dauert seine Zeit. Weißt du was ich meine?
Stefan

von Sascha (Gast)


Angehängte Dateien:

Lesenswert?

ok, das ist richtig,

das Verhalten ist nun Einstellungssache. Stell Dir vor, Du machst den P
richtig groß( theoretisch), dann würde die kleinste Abweichung vom Soll
so einen großen negativen Wert berechnen, das der I gar nicht auffällt.
Ein korrekt regelender Regler schwingt ein wenig über und findet sich
dann beim Soll. Man kann aber den Regler auch justieren, so daß er sich
wie eine PT1-Strecke verhält(e-Funktion). Das liegt allein an der
Parametrierung. Dein Ansatz ist richtig.
Um nun den Regler korrekt einzustellen kannst Du seitenweiße
Berechnungen machen oder Du nimmst zB die Ansätze von Ziegler-Nichols.
Also:
Du stellt nur den P so ein, das der Regler anfängt zu schwingen. Dann
schaust Du dir die Schwingfrequenz an. Und nun nimmst Du die Faktoren
vno Ziegler-Nichols und berechnest deine neuen Werte für P (ausgehend
vom letzten eingestellten Wert) und I (Ausgeheng von der
Schwingfrequenz). Dann sollte dein Reglel gut arbeiten. Wie die
Regelfunktion aussehen soll, bestimmst allein Du. Nur mit diesen
Faktoren kann man halt so optimieren, wie es in der Allgemeinheit
korrekt ist. Ein stabiler schneller Regler.
Und was am meinsten Spaß macht, die Parameter händisch zu finden.

Schwierig nur, da man gerade bei Temperatur eine Menge Zeit mitbringen
muß.

Ich muß Dieselregler, Spannungsregler usw. einstellen, da ist die
Reaktion sehr schnell zu sehen und ich kann reagieren, bei
Temperaturregelung muß man halt Zeit haben.

Ich habe hier mal ein direktes Beispiel, das auch die Wiederholzeit der
Routine beinhaltet. Somit hast Du eine genaue Darstellung deines
Integrators

ergebnis= K( Verstärkung propor)*e(Regelabweichung) + K(Verstärkung
integral)*T0(Ausführungszeit)/TI(Integrierzeit)*
(e(Regelabweichung)+e(Regelabweichung vorher)/2

Dies ist eine mathematische Möglichkeit, es digital zu machen ...

Im Anhang eine kleine Hilfe

von Stefan G. (Gast)


Lesenswert?

Hallo Sascha,
vielen Dank für deine ausführliche Hilfestellung. Ich habe mir die
Parameter bereits mit den Ziegler Nichols Methoden bestimmt, jedoch
nicht mittels der Dauerschwing Methode (und kritischer Verstärkung),
sondern mittels der Sprungantwort. Meine Paramter wurden dann wie folgt
berechnet:
Verstärkung: k_p = 0,5*T_t = 0,5*85s = 43
Verzugszeit: T_i = (0,5*(T_t)^2*k_s)/(T*1,2) = 210 s*°C
Erklärung der Größen: T_t=85s: Totzeit
                      k_s=51°C: statischer Endwert
                      T=743s: Zeit bis zum Erreichen von 0,63*k_s

Die Formeln oben sind zum Berechnen der Parameter eines PID Reglers.
Den D-Anteil habe ich aber bisher noch nicht drin, ich weiß auch nicht
ob ich den brauche...
Es gibt auch Formeln für einen PI Regler, da hätte ich jedoch eine
Verstörkung von k_p=3,33*T_t=283 rausbekommen, was mir etwas viel
vorkam...

Wie du bereits richtig erkannt hast, ist das nervige die Zeit. Das
System ist halt extrem träge, der Metallblock braucht immer weigkeiten
zum Aufheizen und vor allem auchzum wieder abkühlen...

Sascha, was ist in deiner Formel genau die Ausführungszeit T_0? Ist das
die Zeit mit der ich abtaste?

Stefan

von Sascha (Gast)


Lesenswert?

Ja,

T0 entspricht der Ausführungszeit, zB. 2ms, wenn der Integrator alle 2
ms besucht wird und gerechnet wird.

Diese Formel habe ich einem sogenannten SPAC-Modul entsnommen. Dieses
Modul ist ein Mehrfachregler und wird auf den Backplane einer
Mitshubishi-SPS geklemmt. Somit kann eine SPS schnelle Regelvorgänge
verwalten. Die Formel sollte auch ins 'normale' Leben übertragbar
sein.
Ich denke, es aber weitere mathematische Modelle Modelle zur Ermittlung
des PID ...


Sascha

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.