Bonjour,
Je bosse sur un système de régulation de température de l'eau par train d'onde en partie basé sur ce code
#define PERIODE_PWM 5100L //période pwm en ms
#define SORTIE_RELAIS 12 //pin 12
int duty = 0; //impulsion PWM (0<= duty <= 255)
long millisActuel = 0L; //millis actuel
/* ************************************************************************** */
void cdePwm(){
/* ************************************************************************** */
/*simule une sortie pwm pour la commande du relais statique*/
millisActuel = millis(); //sauve millis()
if(millisActuel - millisPrecedentPwm >= PERIODE_PWM){
millisPrecedentPwm = millisActuel; //sauve millis()
digitalWrite(SORTIE_RELAIS, HIGH); //sortie active
}else if(millisActuel - millisPrecedentPwm >= PERIODE_PWM * duty / 255){
//fin duty > à durée impulsion
if(duty == 255){ //chauffage total
digitalWrite(SORTIE_RELAIS, HIGH);//sortie active
} else {
digitalWrite(SORTIE_RELAIS, LOW); //sortie inactive
}
}
}
C'est pour un chauffe-eau instantanné, je dispose de 2 sonde de température DS18B20 ainsi que d'un débitmètre WPSE470 .
Tout d'abord une question très bête. Avec la librairie Dallas Temperature, sous quelle forme nous est retournée la mesure ? Directement en degrés celsius ? Je demande car dans tous les tutos que j'ai pu lire qui utilise cette sonde et cette librairire ce n'est pas clair.
Si je demande ça c'est parce que je ne souhaites pas faire de régulation par PID car ce n'est pas adapté au temps de chauffe et à la réactivité de la sonde. Pour chauffer de l'eau en instantanné, la puissance nécessaire est proportionnelle au débit. Si c'était aussi simple je ferais une simple multiplication du débit par une consigne fixe. Sauf que la température de l'eau du réseau change selon les saisons (entre 9 et 21°C selon l'Ademe). Du coup la consigne d'hiver serait trop forte en été et la mesure du débit ne corrige en rien cette variation, certes étalée sur plusieurs mois, mais bien réelle.
J'ai un second mode de régulation de la température par mitigation avec de l'eau froide en sortie du chauffe-eau (mon débit de sortie est de 1L/min donc ça me permet de réguler de manière très rapide la température de sortie). Avec un simple robinet qu'on ouvre ou ferme on règle le mix d'eau chaude/froide.
Le synoptique du système de base
Du coup je souhaite faire une régulation simple
Consigne = (ΔT - Débit) * K1
avec
ΔT = Teau chauffée - Teau réseau
Débit, le débit d'eau froide
K1, une constante déterminée empiriquement
Si l'utilisateur veut baisser la température, il ouvre le robinet d'eau froide à sa convenance, ce qui fait baisser le débit passant par le chauffe-eau. Pour éviter la surchauffe de l'appareil, la consigne doit diminuer (proportionnellement au débit d'eau froide).
Sauf qu'étant donné que je ne sais pas sous quelle forme je récupère la température et donc quelles valeurs attribuer dans mon calcul.
Mais en écrivant mon texte, je me rend compte que je m'en remet totalement à la précision du débitmètre pour atteindre la consigne de température souhaitée. Du coup je me demande si rajouter une sonde en sortie de chauffe-eau serait plus sûre. A ce moment là ça donnerait un calcul du genre :
Τconsigne = (ΔT2 - ΔT3 - Débit) * K3
avec
ΔT2 = T eau chaude- Teau froide
ΔT3 = 50 - Tchaud
Débit = le débit d'eau froide
K2 = une constante déterminée arbitrairement
Ca semble plus classique, sauf que si le débit varie rapidement, cela va entrainer une variation en sortie de chauffe-eau et je ne sais pas si la sonde aura la précision ou la stabilité pour ne pas faire foirer la régulation.
Imaginons qu'on ouvre le débit d'eau froide, le débit d'eau chaude va baisser brusquement mais pas la température. Du coup ΔT3 va venir ralentir fortement le calcul vu que Teau chaude ne baissera que lentement, ce que je veux éviter.
Je sais qu'en régulation tout l'enjeu réside dans l'équilibre vitesse, précision et stabilité. Mais vu que c'est la première fois que je bosse concrètement sur de la régulation je ne sais pas ce qui serait le plus adapté dans ce cas.
Le second système donnerait ça en gros
Ah oui juste au cas où, la température sera inférieur à 55°C mais aucun risque de bactéries. En amont du système j'ai du traitement UV ainsi qu'un filtre 20µm, l'eau ne reste pas suffisamment longtemps dans les canalisations pour que les bactéries prolifèrent et j'ai même un système de purge en aval pour évacuer le max de flotte chauffée.


