Controllo accurato della temperatura dell'acqua


9

Ho la seguente configurazione:

  • Arduino Duemilanove
  • Piccolo scaldabagno collegato con relè ottico (PWM è ok)
  • Sensore di temperatura DS18B20 impermeabile
  • Quantità di acqua sconosciuta (ma il sensore di temperatura e il riscaldatore sono sempre sott'acqua).

Come posso controllare accuratamente la temperatura dell'acqua, in base alle letture del sensore di temperatura? Con precisione, intendo fino alla precisione del sensore di temperatura (in questo caso, ± 0,5 ° C). Tutto dovrebbe funzionare su Arduino, quindi non è disponibile memoria aggiuntiva o potenza di elaborazione. Per il debug, posso ovviamente usare il computer.

Ho provato a eseguire PID, ma sembra davvero difficile

  1. Evitare il superamento - andando oltre la temperatura target inizialmente o quando si aggiunge acqua (fredda)
  2. Stabilizzare correttamente dopo aver aggiunto acqua fredda.

Hai messo a punto il tuo PID o stavi usando solo valori standard?
Peter Bloomfield,

Ho provato a mettere a punto i parametri PID con varie guide "come mettere a punto PID", senza fortuna. Ho anche provato PIDAutotune , ma non ho potuto ottenere qualcosa di meglio. Non sto dicendo che il PID non potrebbe adattarsi a questo.
Olli,

Con il riscaldamento dell'acqua, avrai molte incongruenze. Dov'è il riscaldatore nel serbatoio rispetto alla sonda di temperatura?
Matt Clark

1
Probabilmente dovresti aggiungere qualcosa che mescola l'acqua per omogeneizzare la temperatura in tutto. Quindi dovresti prendere in considerazione le proprietà termiche del tuo elemento riscaldante, quanto tempo ci vuole per rinfrescarsi dopo la disabilitazione, ecc ... Dipende anche da quanta acqua c'è nel sistema. Se riesci a controllare la temperatura dell'elemento riscaldante, ciò farebbe molto.
Daniel

Non fa parte del tuo ATM di problema, ma vale la pena notare: non confondere accuratezza, precisione e ripetibilità. Precisione indica quanto è vicina la temperatura riportata alla temperatura effettiva. La precisione è la più piccola differenza che il dispositivo può distinguere (.0625 gradi per DS18b20). La ripetibilità è la misura in cui le misurazioni riportate della stessa temperatura variano tra loro. Gli ultimi due sono più preoccupanti del primo. Anche con un sensore accurato di +/- 0,5 ° C, è ancora possibile mantenere la temperatura entro (o almeno distinguere le differenze, che è una condizione necessaria) di alcuni 1/16 ° C di gradi ....
JRobert

Risposte:


2

È necessario conoscere i tempi di risposta del sistema e la ripetibilità delle misurazioni per caratterizzare i dati (stabilire la sicurezza). Suggerisco di prelevare dei campioni e di valutarli prima di riaccendere il riscaldatore.

Imho, l'acqua non rimarrà felicemente entro 0,5 ° C. Potete consentire modalità grossolane e fini? Utilizzare un PWM più elevato per grandi differenze e quindi un PWM più basso per quando vicino al bersaglio.

Una volta raggiunto il tuo obiettivo, ci sono alcuni modi in cui puoi provare a migliorare la stabilità della temperatura. Mentre cose pre-costruite come PID funzionano per molti, normalmente implemento funzionalità come questa manualmente.


0

BrettAM, dE (tasso di variazione dell'errore) cambierà man mano che il parametro di controllo, in questo caso l'ampiezza dell'impulso del segnale dell'elemento riscaldante viene modulato, viene variato dal PID. La mia formulazione nel dire che il tasso di variazione dell'errore di temperatura era una scelta sbagliata. Il termine derivato funzionerà anche per occuparsi delle piccole variazioni del calore specifico dell'acqua con temperatura (4.186 kJ / (kg K) da 20 ° C a 4.219 kJ / (kg K) a 100 ° C).

Il mio punto di vista è sì, il termine derivato calcola per tasso di variazione di dE. Poiché l'errore qui è la differenza tra la temperatura desiderata e la temperatura effettiva, il derivato calcola quindi le variazioni della velocità di riscaldamento dell'acqua.

Il problema è che spesso è difficile creare un sistema stabile con un termine derivato. Un sistema PID dovrebbe basarsi principalmente sul termine proporzionale. Quando vari la quantità d'acqua, secondo me, stai creando più non linearità di quanto il PID possa compensare. Per questo motivo, il PID deve essere in qualche modo ripetibile e se il livello dell'acqua è variato in modo grave il suo sistema non è più ripetibile.

ALL'OP: Nel mio design simile, cercherò di utilizzare un piccolo radiatore / ventola combinato e una pompa da 12 V CC per far scorrere l'acqua come metodo per raffreddare l'acqua. Sento che potrebbe funzionare meglio. In caso di successo, ti farò sapere.


Benvenuti in Arduino SE! Questo non risponde direttamente alla domanda (sembra rispondere più ad un altro commento). Puoi usare il pulsante Modifica per chiarire come queste informazioni rispondono alla domanda? Grazie!
Anonimo Penguin,

-2

È necessario mantenere costante la quantità di acqua riscaldata. La velocità con cui aumenta la temperatura dell'acqua cambierà quando si varia la quantità di acqua (aggiungendo acqua fredda come menzionato). Un controller proporzionale integrale integrale (PID) funziona osservando la derivata (tasso di variazione) della variabile che si sta tentando di controllare. Il PID non funzionerà mai correttamente se il tasso di variazione della temperatura non è (ragionevolmente) costante.

Esaminare il calore specifico dell'acqua, principalmente l'equazione Q = c m dT. Q è il calore aggiunto, che suppongo sia costante nella tua configurazione. m è la massa della sostanza riscaldata (deve essere mantenuta costante!). c è il calore specifico dell'acqua, che è 4,186 Joule / grammo * grado C. Se Q, m e c sono costanti allora dT, anche la velocità con cui la temperatura dell'acqua aumenterà sarà costante (in realtà c varia leggermente con la temperatura ma direi che questo può essere ignorato se stai lavorando da 0- 100C). Prova a mettere a punto il tuo PID con una quantità d'acqua costante e potresti ottenere risultati migliori.

Che scaldabagno stai usando? Attualmente sto facendo qualcosa di simile ma sto provando a usare un hot plat dal laboratorio di chimica e sto sperimentando enormi superamenti. Ho mai pensato di passare a un riscaldatore per acquario ma vorresti sapere cosa stai usando?

-Opaco


Il PID non presuppone che il tasso di variazione sia costante. Se dE (tasso di variazione dell'errore) fosse costante, il termine "D" non ci sarebbe. inoltre, l'acqua si riscalda più lentamente a temperature elevate poiché si perde più calore per rendere vapore la quantità di acqua presente. Il PID potrebbe essere ottimizzato per una particolare massa termica, ma dovrebbe comunque funzionare per una vasta gamma di livelli d'acqua e temperature / pressioni esterne.
BrettAM
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.