Bonjour,
Moi aussi détenteur du chaudière eco radio prestige.
Cependant, j'ai acheté la maison il y a 2 ans, et je n'ai jamais pu mettre la mains sur le thermostat d'ambiance eco radio system.
Autant dire qu'il n'y a aucun système de régulation.
En trouvant ce forum, j'ai pu me brancher sur le contact sec de la chaudière.
D'abord en pilotant naïvement sans hystérésis mais avec une sonde de qualité filtrée. ON si sous consigne, OFF si au dessus de consigne.
Avec cette régulation, j'ai environ 1° de variation de température crête a crête.
Ensuite, j'ai essayer en pilotant en PWM, mais pour le moment, pas moyen de stabiliser la température de départ. elle monte brutalement, puis redescend environ 2-3 fois plus lentement.
Voici une courbe de température d'aujourd'hui.
je change d’algorithme tous les jours, pour l'instant, tous ce que j'ai essayer est pire que la régulation naïve.
Le problème c'est que j'aimerais limiter les grosse monter en température de départ.
Actuellement, je pilote en pwm avec des timers. si j'ai besoin de chaleur, je pilote a 60% de rapport cyclique pendant 5mn, puis je "maintient" a 50% de rapport cyclique pendant 15mn, pour voir si j'ai une réaction.
1er graphique : bleu --> T° d'ambiance
vert --> T° de départ
Orange --> Rapport PWM
2eme graphique : bleu --> T° d'ambiance
orange --> Rapport PWM

- 2018-12-17.png (198.59 Kio) Consulté 7228 fois
//ci dessous le programme de régulation en C qui tourne sur un arduino
void SetDuty()
{
//calcul de l'erreur par rappoort a la consigne
double err = consigne - t;
//si le mode maintien est actif
if(maintien)
{
//On vérifie si le timer est atteint (15mn)
if(depart >= millis())
{
maintien = false;
cooling = false;
heating = false;
}
}
//si le mode refroidissement est actif
else if(cooling)
{
//On vérifie si le timer est atteint (5mn)
if(depart >= millis())
{
cooling = false;
heating = false;
maintien = true;
duty = 50;
depart = millis() + DUREE_KEEP; //suite au refroiddissement, on lance le mode maintient pour 15mn
}
}
//si le mode chauffage est actif
else if(heating)
{
//On vérifie si le timer est atteint (5mn) ou si la température de départ a augmenter de "RAMPE-UP" ici 2°
if(depart >= millis() || tDepart >= targetTDepart)
{
heating = false;
cooling = false;
maintien = true;
duty = 50;
depart = millis() + DUREE_KEEP; //suite au chauffage, on lance le mode maintient pour 15mn
}
}
//sinon, si aucun des modes n'est actif,
//On relance, soit un chauffage, soit un refroidissement, soit un maintient de la température
else
{
//Si la température est en dessous de la consigne de 0.1°, on lance une séquence de chauffage de 5mn
if(err >= 0.1 && rampe < 0)
{
heating = true;
targetTDepart = tDepart + RAMPE_UP; //réglage du seuil de coupure du chauffage par la température de départ (température de départ actuel + 2°)
depart = millis() + DUREE_BOOST;
duty = 60;
}
//Si la température est au dessus de la consigne de 0.1°, on lance une séquence de refroidissement de 5mn
else if(err <= -0.1 && rampe > 0)
{
cooling = true;
depart = millis() + DUREE_BOOST;
duty = 40;
}
//Sinon, on lance une séquence de maintient pour 15mn
else
{
maintien = true;
depart = millis() + DUREE_KEEP;
duty = 50;
}
}
Serial.print("duty : "); //débeuguage
Serial.println(duty); //débeuguage
//Si la consigne de rapport cyclique a changé, on l'envoie a MyController
if(duty != oldDuty)
{
send(dutyMsg.set(duty));
oldDuty = duty;
}
}