Bonsoir,
Je dispose d'une pompe commandée via arduino et je voudrais créer un asservissement de température pour pouvoir réguler le débit de la pompe en fonction de la température à atteindre ou à maintenir.
Pour cela, j'utilise un capteur de température SKU SEN0198 qui utilise un sonde Pt100 et une carte Arduino UNO.
Pouvez-vous, s'il vous plaît, m'expliquer comment faire un tel asservissement et m'aider à le réaliser ?
Merci d'avance pour vos réponse, bonne soirée !
Ci-joint, le code de la pompe et le hacheur utilisé
Qui dit asservissement, comprendre et implémenter le principe du Choix des boucles de régulation avec notamment le PID ( actions P pour proportionnelle , I pour intégrale et D pour dérivée)
En fait je travaille sur un échangeur thermique, le but est de relier le débit et la température du fluide à "réchauffer"
En variant la vitesse d'écoulement cela est susceptible de faire évoluer le transfert thermique du chaud vers le froid.
Le plus simple est tant que la température de consigne n'est pas atteinte tu fais tourner ton moteur.
Mais cela peut avoir comme inconvénient d'un certains bagotement et de ne pas avoir la main sur le pente de montée/descente en température.
le bagotement c'est quand tu es pile a la température de consigne et que tu n'arrête pas d'allumer/éteindre ton moteur.
Dans ce cas on met en place deux consignes légèrement différente, pour la mise en marche et une pour l'arret.
Pour gérer la pente, il est possible de lier la vitesse de rotation de ton moteur avec la différence entre ta consigne et la valeur lue.
En général on fini par mettre en place une gestion par PID, comme indiqué plus haut.
L’idée est de définir une fenêtre de temps, par exemple 60s, et de bien choisir les paramètres PID pour définir en sortie de correcteur la durée d’activation du chauffage sur cette fenêtre, par exemple :
15 s : activation du chauffage
45 s restante : chauffage désactivé.
et on recommence sur la période suivante pour 60s: si trop chaud, raccourcir la durée d’activation du chauffage, rallonger sinon, etc…
Je suis désolé d’avoir l’air d’insister, mais il y a je crois un petit probléme de définition de ce qui est attendu.
Le demandeur parle de fluide, de débit de pompe.
Alors je vais dans l’extrême, on pompe quoi pour l’amener où, c’est un circuit ouvert ou fermé, je ne vois absolument pas comme se présente le truc.
Alors si chaqun de son côté imagine un système différent de celui de son voisin, ça va être difficile d’échanger sur “comment faire marcher le bon système?” si on ne sait pas de quoi il s’agit.
Que l'on soit bien d'accord : il n'y a que la possibilité de réchauffer.
La température de la source chaude est (quasi) constante.
Le fluide à réchauffer circule plus ou moins vite selon sa température d'origine et la température demandée en sortie de l'échangeur.
L'échangeur fonctionne sur le principe du chauffage urbain.
Si c'était bien ça, ce serait plutôt une régulation qu'un asservissement.
Il faudrait deux capteurs de température, un avant l'échangeur, l'autre en sortie de l'échangeur et un circulateur à vitesse variable.
As tu déjà choisi le matériel, et/ou connais-tu les caractéristiques du matériel déjà disponible ?
Il serait intéressant d'avoir la fonction de transfert de l'échangeur.
Paramétre : température de l'échangeur.
Courbe : élévation de température en fonction de la vitesse de circulation.
Question : quelle précision demandes-tu sur la température de sortie du fluide T°C ± t °C ?
Le fluide chaud circule dans un tuyau autour duquel circule le fluide froid, le fluide est réchauffé par transfert thermique du fluide chaud vers le fluide froid au travers de la surface d'échange (le tuyau)
Oui c'est cela.
Pour l'instant j'ai une pompe à débit variable et des capteurs de température via sonde Pt100.
Pour ce qui est des valeurs, je ne les ai pas encore, je compte faire une expérience dans la semaine afin d'obtenir des valeurs expérimentales.
L'échangeur a un temps de réponse.
Imagines le cas suivant :
La température de sortie est fixée à 40 °C.
La température est fixée brutalement à 60°C
La régulation va baisser la vitesse, mais c'est de la thermique, c'est lent.
Il va donc falloir anticiper et réaugmentant la vitesse un peu avant d'atteindre 60°C, sinon tu va dépasser la température de consigne..
C'est ce « un peu avant» qu'il va falloir déterminer.
Rien ne vaut des mesures si elles sont possibles.
Example :
Tu règles une vitesse de circulation connue, tu mesures la température de sortie.
Puis, tu augmentes (ou diminue) la vitesse de circulation et tu mesures deux paramètres :
1 l'amplitude de la variation de température entre deux températures stabilisées.
2 le temps nécessaire pour avoir une température stabilisée : le mieux est de tracer la courbe.
Tu auras la constante de temps thermique de l'échangeur.
D'accord merci, je vais mesurer ca !
De plus, quelle est la structure d'un code Arduino de régulation ? Je n'ai vraiment aucune idée de comment je vais devoir mettre tout en forme
Pourquoi ne cherches-tu pas à te documenter sur la PID que l'on t'as proposé ?
Je n'ai pas de doc particulière à proposer, peut-être que des spécialistes ou anciens spécialistes en auront.
Mais un moteur de recherche peut t'apporter une aide non négligeable.
Je ne sais pas si la réponse s’adresse a moi, je n’ai jamais parlé de numériser.
Les manips que je propose sont pour connaitre le comportement de l’échangeur dont on ne sait encore strictement rien.
En vue d’une régulation/asservissement d’un échange thermique, qui est un processus lent, connaitre le temps de réponse, autrement dit la constante de temps thermique ne sera pas suffisant, mais me parait essentiel pour, très justement, simplifier la régulation en parfaite connaissance du sujet.
Je ne vais pas te faire l'affront de te dire que c'est plutôt simple.
En fait cela dépend de ce que tu veux réellement faire et de si tu veux une aide a codé ou un code clé en main.
Si tu veux un accompagnement pour aider à réaliser le code et apprendre a coder , tu peux simplement partir sur déjà te familiariser avec les éléments de base.
acquisition de la température de t sonde pt100
activation/désactivation de ta pompe(code que tu nous a fournis).
Déjà ton code est assez bizarre,
tu définis deux fois M2 et E2 et jamais M1 et E1.
Il y a un M1 et un M2, donc deux moteurs?
La ca ressemble a un code qui active deux moteurs dans un sens et a pleine vitesse?
puis attends 2s et continue a refaire les deux moteurs a pleine vitesse?
Je crois qu'il faudrait commencer, par déjà juste faire un code qui active et désactive ta pompe pendant 10s pour chaque état?
comment as tu brancher ta pompe a ta carte et comment tu as relié ta carte à ton Arduino ?