Estoy tratando de implementar un algoritmo PID básico en un Arduino Leonardo para mezclar agua corriente caliente y fría usando válvulas servocontroladas. El objetivo es mantener la temperatura lo más cerca posible de un punto de ajuste. Es especialmente importante evitar que la temperatura de salida sobrepase el punto de ajuste para proteger al usuario de quemaduras. Secundariamente importante es obtener la temperatura cerca del punto de ajuste lo más rápido posible.
Para pequeños cambios de temperatura, una implementación estándar del algoritmo PID parece funcionar bien. Pero no sé cómo explicar los largos retrasos que pueden ocurrir cuando se espera que el agua caliente llegue a la válvula, ya que estos retrasos son mucho más largos que los retrasos estándar después de cambiar las posiciones de la válvula.
Obviamente, dependiendo de la longitud de la línea de agua caliente y el tiempo transcurrido desde el último uso de agua caliente, el agua caliente puede tardar varias decenas de segundos en llegar a la válvula, por lo que durante este tiempo, la temperatura del agua permanece bastante constante a baja temperatura y la válvula de agua caliente pronto se abre al 100%. El componente integral comienza a acumular un gran valor de error.
Cuando el agua caliente finalmente llega a la válvula, la temperatura detectada aumenta muy rápidamente a la temperatura máxima del agua caliente. Debido al gran error integral, la válvula de agua caliente se mantiene al 100% durante mucho tiempo después de que la temperatura excede el punto de ajuste, debido a la espera de que el valor integral se reduzca a niveles normales. Por lo tanto, el resultado es agua a temperatura máxima durante varias (decenas) de segundos.
No estoy seguro de cómo dar cuenta de este posible largo retraso. En tal caso, ¿sería prudente establecer un límite superior (e inferior) en el valor de error integral para limitar el tiempo máximo de respuesta? Esto parece anular el propósito del componente integral y aún impondría cierto retraso después de alcanzar el punto de ajuste.
¿O hay una mejor manera de manejar los cambios rápidos de entrada después de un largo retraso?
Gracias por cualquier consejo!