Forum: Mikrocontroller und Digitale Elektronik Suche bessere Temperaturregelung


von Tim (Gast)


Lesenswert?

Hey Leute!

Ich hab ein System bei dem die Temperatur möglichst konstant bei 30, 
max.31 Grad sein soll. Die Daten der Temp. werden über einen Arduino auf 
dem PC gespeichert. Das ganze wird über einen Dreipunktregler geregelt. 
Also bei Temp. über 31Grad wird gekühlt, unter 30Grad wird geheizt und 
zwischen 30 und 31 Grad passiert nichts. Die Temp. ist abhängig vom 
Strom auf dem System. Der Strom könnte schlagartig von 0 auf 10A 
geändert werden. Alle Werte dazwischen gehen auch. Jetzt ist es so, dass 
das System sehr spät erfährt, ob es kühlen oder heizen soll. Dadurch 
können große Schwankungen entstehen.
Ich habe informationen darüber, wie hoch meine Temp. bei entsprechenden 
Strom ist. Vielleicht kann ich dadurch irgendeinen nutzen ziehen für 
eine bessere Temperaturregelung?!
Ziel ist es die Temp. möglichst schnell zu erreichen und hohe 
Temperaturschwankungen zu vermeiden

Danke über jeden Tipp!

von Gogo (Gast)


Lesenswert?

Einfach Methoden der Regel- und Messtechnik anwenden?

von Gogo (Gast)


Lesenswert?

Identifikation der Regelstrecke, Überlegungen zur Identifikation der 
richtigen Regelgröße sind nicht verkehrt. Ein paar Details zu deinem 
System wären auch nicht schlecht

von 123 (Gast)


Lesenswert?

Was du suchst ist ein PID-Regler. Der ist an und für sich nicht sehr 
schwer (gibt es auch für deinen Arduino fertig). Den muss man nur noch 
parametrisieren (die drei Parameter P, I und D an deine Anwendung 
anpassen). Die Ermittelung dieser Parameter ist das wirklich knifflige 
an der Regelung. Dafür kann man beliebigen Aufwand treiben. Man kann das 
auch einfach ausprobieren: 
https://de.wikipedia.org/wiki/Faustformelverfahren_(Automatisierungstechnik)#Empirische_Dimensionierung

von Peter D. (peda)


Lesenswert?

Tim schrieb:
> zwischen 30 und 31 Grad passiert nichts.

Damit kannst Du unmöglich auf 1° regeln.

Die Sensoren sollten mindestens auf 1/10 besser auflösen, als Du regeln 
willst, d.h. besser 0,1°.
Nimm die klassische PID-Regelung und rechne in float.
Eine digitale Regelung hat noch einen 4. Parameter, die Abtastzeit. 
Diese wählt man so, daß sie gleich oder etwas kleiner als die Totzeit 
des Regelkreises ist.

von THOR (Gast)


Lesenswert?


von Michael B. (laberkopp)


Lesenswert?

Tim schrieb:
> Ich hab ein System bei dem die Temperatur möglichst konstant bei 30,
> max.31 Grad sein soll. Die Daten der Temp. werden über einen Arduino auf
> dem PC gespeichert. Das ganze wird über einen Dreipunktregler geregelt.
> Also bei Temp. über 31Grad wird gekühlt, unter 30Grad wird geheizt und
> zwischen 30 und 31 Grad passiert nichts.

Tja, das Verfahren taugt also nicht, man braucht einen PID Regler.

Das macht jeder billige Temperaturregler aus der Bucht
http://www.ebay.de/itm/TA4-RNR-Digital-Programmable-F-C-PID-Temperature-Controller-90-260V-AC-DC-TE593-/162464877620

von Benjamin M. (benjamin_m50)


Lesenswert?

wenn die Temperatur abhängig vom Strom ist - warum regelst du dann nicht 
über den Strom (und ggf. verknüpft mit der aktuellen Temperatur ) ? 
dürfte deutlich schneller reagieren als deine bisherige Strom - 
Temperatur-Wandlung und dann Temperaturregelung

Gruß Ben

von Der Andere (Gast)


Lesenswert?

Benjamin M. schrieb:
> warum regelst du dann nicht
> über den Strom

Ich nehme mal an daß der Strom durch Umstände von aussen bestimmt wird, 
also eher eine Störgröße ist.

Man könnte aber als Regelgröße mit der zu- bzw. abzuführenden Leistung 
rechnen, und nach dem Ausgang des PID Reglers die Leistung die durch den 
Strom in das System eingebracht wird von der Regelgröße abziehen.

Das wäre streng genommen ein "modellbasierter prädiktiver Ansatz" wenn 
ich das noch richtig im Kopf habe, allerdings eher als praktischer 
Ansatz ohne Theorie. :-)

von Lothar (Gast)


Lesenswert?

123 schrieb:
> Was du suchst ist ein PID-Regler

Der würde das wohl nicht schaffen, sieht eher nach Anwendung für 
Feedforward aus:

https://de.mathworks.com/help/control/examples/temperature-control-in-a-heat-exchanger.html

von Tim (Gast)


Lesenswert?

Danke für die Antworten. Ich werde mir den PID Regler genauer ansehen 
und mich ggf. nochmals melden!


Benjamin M. schrieb:
> wenn die Temperatur abhängig vom Strom ist - warum regelst du dann
> nicht
> über den Strom (und ggf. verknüpft mit der aktuellen Temperatur ) ?
> dürfte deutlich schneller reagieren als deine bisherige Strom -
> Temperatur-Wandlung und dann Temperaturregelung
>
> Gruß Ben

Das ist so, dass der Strom per Hand eingestellt wird, je nachdem wie ich 
mein System gerade haben möchte. Ich könnte also mein System vorher 
schon bescheid geben, welche Temp. diese erreichen würden ohne Regelung.

Der Andere schrieb:
> Benjamin M. schrieb:
>> warum regelst du dann nicht
>> über den Strom
>
> Ich nehme mal an daß der Strom durch Umstände von aussen bestimmt wird,
> also eher eine Störgröße ist.
>
> Man könnte aber als Regelgröße mit der zu- bzw. abzuführenden Leistung
> rechnen, und nach dem Ausgang des PID Reglers die Leistung die durch den
> Strom in das System eingebracht wird von der Regelgröße abziehen.
>
> Das wäre streng genommen ein "modellbasierter prädiktiver Ansatz" wenn
> ich das noch richtig im Kopf habe, allerdings eher als praktischer
> Ansatz ohne Theorie. :-)

Wäre super wenn du es genauer erklären könntest. Das könnte genau das 
sein, was ich mir erhofft habe?!

von Lurchi (Gast)


Lesenswert?

Ein PID Regler wäre schon mal eine gute Basis. Weil man die wesentliche 
Störgröße wohl kennt, kann man den Einfluss noch einmal zusätzlich 
kompensieren - das wäre eine Form des feed forward. Der PID Regler, etwa 
für Änderungen der Raumtemperatur, oder die Fehler die man bei der 
Kompensation des Stromes macht bleibt aber in der Regel erhalten.

von Pandur S. (jetztnicht)


Lesenswert?

Allenfalls die Leistungen reduzieren... Anstelle mit 10A, mit 0.5A 
drauf, was auch immer das bedeutet.
Ich wuerd aber auch auf einen PID gehen. Allenfalls ohne Kuehlung. Dh 
gegenueber Raumtemperatur, welche dann tiefer sein muss.

von Irgendwer (Gast)


Lesenswert?

Heizung und Kühlung separat behandeln.

z.B.:

Heizung:
<30.0°C einschalten
>30.6°C ausschalten (etwaiges Überschwingen muss natürlich vorher mal ermittelt 
werden so das die 30,0°C nicht überschritten werden).

Kühlung:
>31.0°C einschalten
<30.7°C ausschalten (halt so das es noch knapp oberhalb von 30,6°C 
bleibt)

Hart von Heizung auf Kühlung umschalten gibt bestenfalls einen Lustigen 
Schwingkreis.

von Tim (Gast)


Lesenswert?

Danke erstmal für die Antworten. Eine PID Regelung zu erstellen und über 
einen Mikrocontroller zu steuern ist nicht so einfach. Zumindest als 
laie nicht.

Wer könnte da helfen, wie ich vorgehen muss? Wie man die Parameter P,I,D 
bestimmen kann?

Was habe ich?
-Sollwert
-Istwert wird über einen Temperatursensor angezeigt. Ist bereits 
implementiert und läuft über einen Arduino

-Das Heizen funktioniert wie bei einer Heizung(Könnte verschiedene Werte 
einstellen) Einfacher ist es natürlich nur ein- und auszuschalten(max. 
Temp.)

-Kühlung geht nur ein oder aus (max. Kühlung, keine Werte dazwischen)
Kühlung ist der Hauptpunkt. Ist es bei einer zweipunktkühlung überhaupt 
möglich?

Habe aus einem anderen Forum folgendes gefunden:

Für P-Anteil: Istwert-Sollwert

Für I-Anteil: (Istwert-Sollwert)*Zeitdifferenz

Für D-Anteil habe ich das hier gefunden: ((Änderung des istwertes seit 
letzter Berechnung)/zeitdifferenz)

Wie ist das zu verstehen? Die Messung findet doch kontinuierlich statt?! 
bzw. wie könnte ich das herausfinden?

Temperatursensor: DS18B20

von Harald W. (wilhelms)


Lesenswert?

Tim schrieb:

> Eine PID Regelung zu erstellen und über
> einen Mikrocontroller zu steuern ist nicht so einfach. Zumindest als
> laie nicht.

Das ist das einfachste. Den kauft man fertig bei ebay.

> Wer könnte da helfen, wie ich vorgehen muss? Wie man die Parameter P,I,D
> bestimmen kann?

Das ist das eigentliche Problem. Dazu brauchst Du wenigstens ein
Grundlagenwissen in Regelungstechnik.

> Was habe ich?
> -Sollwert
> -Istwert wird über einen Temperatursensor angezeigt. Ist bereits
> implementiert und läuft über einen Arduino
>
> -Das Heizen funktioniert wie bei einer Heizung(Könnte verschiedene Werte
> einstellen) Einfacher ist es natürlich nur ein- und auszuschalten(max.
> Temp.)
>
> -Kühlung geht nur ein oder aus (max. Kühlung, keine Werte dazwischen)
> Kühlung ist der Hauptpunkt. Ist es bei einer zweipunktkühlung überhaupt
> möglich?

Sehr wichtig ist vor allen das Messen der sogenannten Sprungantworten
und das jeweilige Überschwingen. Daraus kann man dann schon einige
grobe Parameter berechnen. Ich hatte mal beruflich mit einem PI-Regler
für einen Abstandssensor zu tun. Da war das Einstellen des I-Anteils
recht einfach. Ich stellte den Anteil solange hoch, bis der Sensor
anfing zu schwingen. Dann ein Stückchen zurück und schon stimmte der
I-Anteil. :-)

von THOR (Gast)


Lesenswert?

Harald W. schrieb:
> Ich stellte den Anteil solange hoch, bis der Sensor
> anfing zu schwingen. Dann ein Stückchen zurück und schon stimmte der
> I-Anteil. :-)

Nennt sich Ziegler Nichols.

von Wolfgang (Gast)


Lesenswert?

Tim schrieb:
> Wie ist das zu verstehen? Die Messung findet doch kontinuierlich statt?!

Nein, ein DS18B20 misst genau dann, wenn du ihm sagst, dass er messen 
soll.

> Für I-Anteil: (Istwert-Sollwert)*Zeitdifferenz

Da fehlt noch die entscheidende Operation. Wenn du das "I" mal 
ausschreibst, nähmlich als "Integral" wird schon klarer, was das für ein 
Fehler ist, nähmlich der über die Zeit aufintegrierte Fehler bzw. bei 
einem Abtastsystem mit festem Abtastintervall der aussummierte Fehler.

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.