Wassertemperatur genau steuern

9

Ich habe folgendes Setup:

  • Arduino Duemilanove
  • Kleiner Warmwasserbereiter mit optischem Relais verbunden (PWM ist in Ordnung)
  • Wasserdichter Temperatursensor DS18B20
  • Unbekannte Wassermenge (Temperatursensor und Heizung befinden sich jedoch immer unter Wasser).

Wie kann ich die Wassertemperatur basierend auf den Messwerten des Temperatursensors genau steuern? Mit genau meine ich bis zur Genauigkeit des Temperatursensors (in diesem Fall ± 0,5 ° C). Alles sollte auf Arduino laufen, damit keine zusätzliche Datenspeicherung oder Verarbeitungsleistung verfügbar ist. Zum Debuggen kann ich natürlich einen Computer verwenden.

Ich habe versucht, PID auszuführen, aber es scheint wirklich schwer zu sein

  1. Vermeiden Sie ein Überschießen - überschreiten Sie die Zieltemperatur entweder anfangs oder wenn (kaltes) Wasser hinzugefügt wird
  2. Nach Zugabe von kaltem Wasser richtig stabilisieren.
Olli
quelle
Haben Sie Ihre PID eingestellt oder haben Sie nur Standardwerte verwendet?
Peter Bloomfield
Ich habe ohne Glück versucht, die PID-Parameter mit verschiedenen Anleitungen zum Einstellen der PID abzustimmen. Ich habe auch PIDAutotune ausprobiert , konnte aber nichts Besseres daraus machen. Ich sage nicht, dass PID nicht dazu passen könnte.
Olli
Mit der Warmwasserbereitung werden Sie viele Inkonsistenzen haben. Wo befindet sich die Heizung in Ihrem Tank relativ zum Temperaturfühler?
Matt Clark
1
Sie müssten wahrscheinlich etwas hinzufügen, das das Wasser mischt, um die Temperatur durchgehend zu homogenisieren. Dann müssten Sie die thermischen Eigenschaften Ihres Heizelements berücksichtigen, wie lange es dauert, bis es nach einer Deaktivierung abgekühlt ist usw. Dies hängt auch davon ab, wie viel Wasser sich im System befindet. Wenn Sie die Temperatur des Heizelements steuern können, ist dies ein langer Weg.
Daniel
Nicht Teil Ihres Geldautomaten, aber erwähnenswert: Verwechseln Sie Genauigkeit, Präzision und Wiederholbarkeit nicht. Genauigkeit bedeutet, wie nahe die gemeldete Temperatur an der tatsächlichen Temperatur liegt. Präzision ist der kleinste Unterschied, den das Gerät erkennen kann (0,0625 ° C für DS18b20). Die Wiederholbarkeit gibt an, wie stark die gemeldeten Messungen derselben Temperatur voneinander abweichen. Die letzten beiden sind besorgniserregender als die ersten. Selbst mit einem Sensor mit einer Genauigkeit von +/- 0,5 ° C können Sie die Temperatur innerhalb einiger 1/16 °
C

Antworten:

2

Sie müssen die Reaktionszeit Ihres Systems und die Wiederholbarkeit Ihrer Messungen kennen, um Ihre Daten zu charakterisieren (Vertrauen herstellen). Ich empfehle, Proben zu entnehmen und zu mitteln, bevor Sie die Heizung wieder einschalten.

Imho, Wasser bleibt nicht glücklich innerhalb von 0,5 ° C. Können Sie grobe und feine Modi zulassen? Verwenden Sie eine höhere PWM für große Unterschiede und dann eine niedrigere PWM für die Nähe zum Ziel.

Sobald Sie Ihr Ziel erreicht haben, gibt es einige Möglichkeiten, wie Sie versuchen können, die Temperaturstabilität zu verbessern. Während vorgefertigte Dinge wie PID für viele funktionieren, implementiere ich solche Funktionen normalerweise manuell.

Chris K.
quelle
0

BrettAM, dE (Änderungsrate des Fehlers) ändert sich, wenn der Steuerparameter, in diesem Fall die Impulsbreite des Heizelementsignals moduliert wird, durch die PID variiert wird. Mein Wortlaut zu sagen, dass die Rate der Temperaturfehleränderung eine schlechte Wahl war. Der abgeleitete Term wird auch dazu dienen, die kleinen Schwankungen der spezifischen Wärme von Wasser mit einer Temperatur (4,186 kJ / (kg K) bei 20 ° C bis 4,219 kJ / (kg K) bei 100 ° C) zu berücksichtigen .

Mein Punkt ist, ja, der abgeleitete Term berechnet die Änderungsrate von dE. Da der Fehler hier die Differenz zwischen der gewünschten Temperatur und der tatsächlichen Temperatur ist, berechnet die Ableitung dann Änderungen in der Geschwindigkeit, mit der das Wasser erwärmt wird.

Das Problem ist, dass es oft schwierig ist, ein stabiles System mit einem abgeleiteten Term zu erstellen. Ein PID-System sollte in erster Linie auf dem proportionalen Term basieren. Wenn Sie die Wassermenge variieren, erzeugen Sie meiner Meinung nach mehr Nichtlinearität, als die PID ausgleichen kann. Aus diesem Grund müssen PIDs etwas wiederholbar sein, und wenn der Wasserstand stark variiert, ist sein System nicht mehr wiederholbar.

ZUM OP: In meinem ähnlichen Design werde ich versuchen, eine kleine Kühler / Lüfter-Kombination und eine 12-V-Gleichstrompumpe zu verwenden, um Wasser durchzulaufen, um das Wasser wieder abzukühlen. Ich denke, das könnte besser funktionieren. Wenn erfolgreich, werde ich Sie wissen lassen.

MattEE
quelle
Willkommen bei Arduino SE! Dies beantwortet die Frage nicht direkt (es scheint mehr auf einen anderen Kommentar zu antworten). Können Sie bitte die Schaltfläche Bearbeiten verwenden, um zu klären, wie diese Informationen die Frage beantworten? Vielen Dank!
Anonymer Pinguin
-2

Sie müssen die Menge des zu erhitzenden Wassers konstant halten. Die Geschwindigkeit, mit der sich die Wassertemperatur erhöht, ändert sich, wenn Sie die Wassermenge variieren (Hinzufügen von kaltem Wasser wie erwähnt). Ein Proportional-Integral-Derivativ-Regler (PID) beobachtet die Ableitung (Änderungsrate) der Variablen, die Sie steuern möchten. Ihre PID funktioniert niemals ordnungsgemäß, wenn die Temperaturänderungsrate nicht (angemessen) konstant ist.

Schauen Sie sich die spezifische Wärme von Wasser an, hauptsächlich die Gleichung Q = c m dT. Q ist die hinzugefügte Wärme, von der ich annehmen würde, dass sie in Ihrem Setup konstant ist. m ist die Masse der zu erhitzenden Substanz (muss konstant gehalten werden!). c ist die spezifische Wärme von Wasser, die 4,186 Joule / Gramm * Grad C beträgt. Wenn Q, m und c konstant sind, dann ist dT auch die Geschwindigkeit, mit der Ihre Wassertemperatur ansteigt (in Wirklichkeit variiert c geringfügig mit der Temperatur, aber ich würde sagen, dass dies ignoriert werden kann, wenn Sie von 0 bis 0 ° C arbeiten. 100C). Versuchen Sie, Ihre PID mit einer konstanten Wassermenge einzustellen, um bessere Ergebnisse zu erzielen.

Welchen Warmwasserbereiter verwenden Sie? Ich mache gerade etwas Ähnliches, versuche aber, ein Hot Plat aus dem Chemielabor zu verwenden, und es treten große Überschwinger auf. Ich habe überlegt, auf eine Aquarienheizung umzusteigen, möchte aber wissen, was Sie verwenden?

-Matt

Matt
quelle
PID geht nicht davon aus, dass die Änderungsrate konstant ist. Wenn dE (Änderungsrate des Fehlers) konstant wäre, wäre der Term "D" nicht vorhanden. Außerdem erwärmt sich das Wasser bei hohen Temperaturen langsamer, da mehr Wärme an den Dampf verloren geht, unabhängig davon, wie viel Wasser vorhanden ist. Der PID kann ideal für eine bestimmte thermische Masse eingestellt werden, sollte jedoch für einen weiten Bereich von Wasserständen und Außentemperaturen / -drücken funktionieren.
BrettAM