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
- Vermeiden Sie ein Überschießen - überschreiten Sie die Zieltemperatur entweder anfangs oder wenn (kaltes) Wasser hinzugefügt wird
- Nach Zugabe von kaltem Wasser richtig stabilisieren.
Antworten:
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.
quelle
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.
quelle
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
quelle