J'essaie d'implémenter un algorithme PID de base sur un Arduino Leonardo pour mélanger l'eau du robinet chaude et froide à l'aide de vannes asservies. Le but est de maintenir la température aussi près que possible d'une consigne. Il est particulièrement important d'empêcher la température de sortie de dépasser le point de consigne pour protéger l'utilisateur contre les brûlures. Il est également important d'obtenir la température près du point de consigne le plus rapidement possible.
Pour les petits changements de température, une implémentation standard de l'algorithme PID semble fonctionner correctement. Mais je ne sais pas comment tenir compte des longs retards qui peuvent survenir en attendant que l'eau chaude atteigne la vanne, car ces retards sont beaucoup plus longs que les retards standard après avoir changé les positions de la vanne.
Évidemment, en fonction de la longueur de la conduite d'eau chaude et du temps écoulé depuis la dernière utilisation d'eau chaude, cela peut prendre plusieurs dizaines de secondes pour que l'eau chaude atteigne la vanne, donc pendant ce temps, la température de l'eau reste assez constante à basse température. et la vanne d'eau chaude s'ouvre bientôt à 100%. Le composant intégral commence à accumuler une grande valeur d'erreur.
Lorsque l'eau chaude atteint enfin la vanne, la température détectée augmente très rapidement jusqu'à la température maximale de l'eau chaude. En raison de la grande erreur intégrale, la vanne d'eau chaude est maintenue à 100% pendant longtemps après que la température dépasse le point de consigne, en raison de l'attente de la valeur intégrale réduite à des niveaux normaux. Ainsi, le résultat est une eau à température maximale pendant plusieurs (dizaines) de secondes.
Je ne sais pas comment expliquer ce retard possible . Dans un tel cas, serait-il sage de fixer une borne supérieure (et inférieure) sur la valeur d'erreur intégrale, afin de limiter le temps de réponse maximum? Cela semble aller à l'encontre de l'objectif de la composante intégrale et imposerait également un certain retard après avoir atteint le point de consigne.
Ou existe-t-il une meilleure façon de gérer les changements d'entrée rapides après un long délai?
Merci pour tout conseil!