Controlar la temperatura del agua con precisión

9

Tengo la siguiente configuración:

  • Arduino Duemilanove
  • Pequeño calentador de agua conectado con relé óptico (PWM está bien)
  • Sensor de temperatura impermeable DS18B20
  • Cantidad desconocida de agua (pero el sensor de temperatura y el calentador siempre están bajo el agua).

¿Cómo puedo controlar con precisión la temperatura del agua, según las lecturas del sensor de temperatura? Con precisión, me refiero a la precisión del sensor de temperatura (en este caso, ± 0.5 ° C). Todo debería ejecutarse en Arduino, por lo que no hay disponible almacenamiento adicional de datos o potencia de procesamiento. Para la depuración, obviamente puedo usar la computadora.

He intentado ejecutar PID, pero parece realmente difícil

  1. Evite sobrepasar - sobrepasar la temperatura objetivo ya sea inicialmente, o cuando se agrega agua (fría)
  2. Estabilice adecuadamente después de agregar agua fría.
Olli
fuente
¿Ajustó su PID o simplemente estaba usando valores estándar?
Peter Bloomfield
Traté de ajustar los parámetros PID con varias guías de 'cómo ajustar PID', sin suerte. También probé PIDAutotune , pero no pude obtener nada mejor. No estoy diciendo que PID no pueda encajar en esto.
Olli
Con el calentamiento de agua, vas a tener muchas inconsistencias. ¿Dónde está el calentador en su tanque en relación con la sonda de temperatura?
Matt Clark
1
Probablemente tenga que agregar algo que mezcle el agua para homogeneizar la temperatura en todo momento. Luego, debe tener en cuenta las propiedades térmicas de su elemento de calentamiento, cuánto tiempo tarda en enfriarse después de desactivarse, etc. También depende de la cantidad de agua que haya en el sistema. Si puede controlar la temperatura del elemento calefactor, eso sería de gran ayuda.
Daniel
No es parte de su problema ATM, pero vale la pena señalar: no confunda precisión, precisión y repetibilidad. La precisión significa qué tan cerca está la temperatura informada de la temperatura real. La precisión es la diferencia más pequeña que el dispositivo puede distinguir (0,0625 ° C para DS18b20). La repetibilidad es cuánto varían las mediciones reportadas de la misma temperatura entre sí. Los dos últimos son más preocupantes que el primero. Incluso con un sensor de precisión de +/- 0.5 ° C, aún puede mantener la temperatura dentro (o al menos distinguir las diferencias, que es una condición necesaria) de unos pocos 1/16 ° C ...
JRobert

Respuestas:

2

Debe conocer el tiempo de respuesta de su sistema y la repetibilidad de sus mediciones para caracterizar sus datos (establecer confianza). Sugiero tomar muestras y promediarlas antes de volver a encender el calentador.

En mi humilde opinión, el agua no se quedará felizmente dentro de 0.5 ° C. ¿Puedes permitir modos gruesos y finos? Use un PWM más alto para grandes diferencias y luego un PWM más bajo para cuando esté cerca del objetivo.

Una vez enfocado en su objetivo, existen algunos medios para intentar mejorar la estabilidad de la temperatura. Si bien las cosas preconstruidas como PID funcionan para muchos, normalmente implemento funcionalidades como esta manualmente.

Chris K
fuente
0

BrettAM, dE (tasa de cambio en el error) cambiará a medida que el parámetro de control modifique el ancho de pulso de la señal del elemento calefactor por el PID. Mi redacción al decir que la tasa de cambio de error de temperatura fue una mala elección. El término derivado también funcionará para atender las pequeñas variaciones en el calor específico del agua con la temperatura (4.186 kJ / (kg K) @ 20C a 4.219 kJ / (kg K) @ 100C).

Mi punto es que sí, el término derivado calcula la tasa de cambio de dE. Dado que el error aquí es la diferencia entre la temperatura deseada y la temperatura real, la derivada calcula los cambios en la velocidad a la que se calienta el agua.

El problema es que a menudo es difícil crear un sistema estable con un término derivado. Un sistema PID debe basarse principalmente en el término proporcional. Cuando varía la cantidad de agua, en mi opinión, está creando más no linealidad de lo que el PID puede compensar. Por esta razón, los PID necesitan ser algo repetibles y si el nivel del agua varía severamente, su sistema ya no es repetible.

AL OP: en mi diseño similar, voy a intentar usar un pequeño combo de radiador / ventilador y una bomba de 12 V CC para hacer correr el agua como un método para enfriar el agua. Siento que esto puede funcionar mejor. Si tiene éxito, se lo haré saber.

MattEE
fuente
¡Bienvenido a Arduino SE! Esto no responde directamente a la pregunta (parece responder más a otro comentario). ¿Puede utilizar el botón de edición para aclarar cómo esta información responde a la pregunta? ¡Gracias!
Anonymous Penguin
-2

Debe mantener constante la cantidad de agua que se calienta. La velocidad a la que aumenta la temperatura del agua cambiará cuando varíe la cantidad de agua (agregando agua fría como mencionó). Un controlador proporcional-integral-derivativo (PID) funciona observando la derivada (tasa de cambio) de la variable que está tratando de controlar. Su PID nunca funcionará correctamente si la tasa de cambio de temperatura no es (razonablemente) constante.

Observe el calor específico del agua, principalmente la ecuación Q = c m dT. Q es el calor agregado, que supongo que es constante en su configuración. m es la masa de la sustancia que se calienta (¡debe mantenerse constante!). c es el calor específico del agua, que es 4.186 julios / gramo * grado C. Si Q, m y c son constantes, entonces dT, la velocidad a la que aumentará la temperatura del agua también será constante (en realidad, c varía ligeramente con la temperatura, pero diría que esto puede ignorarse si está trabajando desde 0- 100C). Intente ajustar su PID con una cantidad constante de agua y puede obtener mejores resultados.

¿Qué calentador de agua estás usando? Actualmente estoy haciendo algo similar, pero estoy tratando de usar una plataforma caliente del laboratorio de química y estoy experimentando enormes excesos. ¿He considerado cambiar a un calentador de acuario pero me gustaría saber qué está usando?

-Mate

Mate
fuente
PID no asume que la tasa de cambio es constante. Si dE (tasa de cambio en el error) fuera constante, el término "D" no estaría allí. Además, el agua se va a calentar más lentamente a altas temperaturas ya que se pierde más calor por la cantidad de agua que hay. El PID podría ajustarse idealmente para una masa térmica particular, pero aún debería funcionar para una amplia gama de niveles de agua y temperaturas / presiones externas.
BrettAM