j'ai une sainte horreur de la régulation (beurk) - c'est un métier à part - donc je vais sûrement écrire pleins d'âneries ; simplement quelques idées sur la façon dont je m'y prendrai.
déjà, avant tout, je n'aime pas faire l'accumulation dans le temps d'une mesure (faire une intégrale mathématiquement parlant, voir post ci-dessus) car tu vas cumuler toutes les incertitudes de mesure à chaque instant (le capteur n'est pas parfait ...). Avoir une jauge de niveau, ou peser le poids de l'ensemble ... aurait peut-être été une meilleure idée pour gagner en précision.
ensuite un bloc PID est une fonction "standard" (que tu trouves dans toutes les bibliothèques API) qui prend en entrée une "erreur" (écart entre une consigne et une mesure) et te donne en sortie une amplitude. tu as une série de coefficient à définir (les gains) pour influencer la réponse du régulateur (en gros, pour simplifier, s'il va réagir mollement ou nerveusement à l'erreur, mais pas que ...)
le régulateur calcule à chaque instant la dérivée (la pente = différence avec la valeur précédente pour une tranche de temps) et l'intégrale (l'aire pour une tranche de temps - comme sur le post ci-dessus) et le tout est additionné (avec l'erreur elle même qui est la partie "proportionnelle") avec les coefficients respectifs.
En jouant avec les coeffs, tu peux très bien transformer ton bloc PID en simple régulateur P (ou il n'y a pas d'action dérivée ni intégrale), ou PI (pas de dérivée) ou PD ... c'est le principe du "qui peut le plus peut le moins".
donc en gros, sur un régulateur de type P (proportionel uniquement, soit le plus simple), l'amplitude U (la sortie) = G (gain) * ε (epsilon = erreur)
après pour le réglage des gains, c'est une autre histoire ... à vivre sur le terrain
le bloc PID est déjà un bon début pour réaliser un asservissement.
admettons que tu as une consigne fixe de débit (l'installation doit faire du 0,1 litre / s par ex)
pour réaliser ton asservissement, tu mettrais en place un bloc PID avec en entrée l'écart entre la consigne (0,1 litre/s) et la mesure (le débitmètre) et en sortie tu ferais un petit calcul pour obtenir une vitesse de rotation (le débit de la pompe dépend de sa vitesse de rotation, la formule est dans la doc du constructeur de la pompe) --> le moteur ne travaille que sur une certaine plage de vitesse, il faut penser à borner le calcul (ex 20 - 100 Hz pour un moteur asynchrone) ...
--> commence déjà par mettre au point cette partie (point de vue programmation puis mise en service)
ne définit que le gain de l'action proportionnelle dans un 1er temps puis joue sur les autres gains pour voir l'influence.
Concrètement dans ton cas, la consigne de débit n'est pas fixe ; elle est une fonction de l'écart entre un volume donné et un volume mesuré (cf post ci-dessus)
plus tu t'approches du volume désiré, plus tu vas fermer le robinet (logique).
c'est encore une régulation. La sortie de cette régulation donne la consigne pour la régulation suivante (celle évoquée au-dessus, la régulation du débit uniquement) --> 2 PID en cascade.
tu peux très bien simplifier en disant que la consigne de débit va suivre une courbe fixe (une fonction mathématique).
une simple droite par exemple ou des paraboles (degré 2, ..., degré 4 pour des courbes de bézier), des exponentielles inversées ...
maintenant avec tout ça, je ne sais pas si c'est la bonne méthode et si les résultats seront satisfaisants (je ne suis pas spécialiste des fluides, des régulations, des pompes ...), notamment à cause du cumul des erreurs de mesure. il y a plein d'autre façon de concevoir ce système (avec plus ou moins de bons résultats).
A cogiter
@+