La fréquence de démarrage d'un système à combustion est très importante.
Le démarrage est de loin le moment ou le rendement est le plus mauvais, donc si la chaufferie est surdimensionnée (mise en température rapide), elle démarrera plus souvent et aura un consommation élevée, car phases de démarrage plus fréquentes.
Tout à fait Jean-Francois, et le but de ma quête actuelle est d'obtenir la meilleur inertie pour une régulation optimum et économique.
J'ai effectué mes mesures lorsque la température exterieure était proche de zero, une chauffe d'environ 20 mn toutes les 3h30 avec un thermostat mécanique, dont on connait la précision de fonctionnement (+- 1°C = 2°C d'ecart !!!) me permet de passer de 18°C à plus de 19°C via l'inertie
L'équation du rendement optimal depend donc essentiellement de l'inertie des radiateurs et de la temperature exterieure. Pour la seconde partie, une sonde donnera ses mesures. Quant à la première partie, il s'agit d'une inconnue dont il faut retirer l'image...On peut établir un seuil de démarrage et une consigne d'arrêt, qui peuvent être assujetis à la temperature exterieure, et mathematiquement, coordonner ses valeurs à l'inertie de l'habitat.
Il est vrai que la frequence de fonctionnement du chauffage est une donnée importante, et que dans certain cas, il vaut mieux augmenter cette frequence et diminuer le temps de fonctionnement global.
L'experience me dira ce qu'il en est...
@+
Zoroastre.
Je pense avoir trouver une solution au problème.
Tout d'abord, j'effectue une moyenne sur un échantillon de mesure, que je compare à l'ancienne moyenne. Si elle est plus grande, soit le chauffage est en fonctionnement, soit il y a distribution calorifique de mes radiateurs. Si elle est plus petite que la mesure précedente, je suis en perdition.
En gros :
moy = (somme de i temperature)/i ; # Avec i max = 5 par exemple
if (moy >= moy_precedente)
{
inertie = 1 #MONTANTE
}
else
{
inertie = 0 #DESCENDANTE
}
"i" étant le nombre d'echantillon.
La difficulté est d'integrer cette variante "inertie" à la régulation de mon chauffage.
Une solution peut-être :
If (inertie=0)
Acquisition des nouvelles consignes de temperatures
if (inertie=1)
Sauvegarde des consignes de temperatures
Ainsi, le temps de l'inertie, les consignes hautes et basses de ma régulation demeure statiques.
@+
Zoroastre.
le but de ma quête actuelle est d'obtenir la meilleur inertie pour une régulation optimum et économique
Je pense qu'il y a une petite incompréhension sur les termes utilisés l'inertie tu la subis (sauf si tu es en train de construire la maison).
Dans un système de chauffage tu vas avoir 2 inerties avec des constantes de temps différentes.
- l'inertie du circuit de chauffage. J'arrête de chauffer et la température continue de monter. Ou inversement je commence à chauffer et la température continue de descendre.
- l'inertie thermique du bâtiment. La température est stabilisée pendant combien de temps le bâtiment va-t-il garder cette température.
C'est 2 paramètres sont des constantes qui ne dépendent que des caractéristiques de ton installation de chauffage pour le premier et des caractéristiques de ton bâtiment pour le second. Tu devrais pouvoir les déterminer de manière empirique et les intégrer dans ta boucle de régulation. Sachant que c'est l'inertie thermique du bâtiment qui est la plus importante. Pour donner un ordre d'idée, l'inertie thermique du circuit de chauffage et de l'ordre de la minute (1 à 5 minutes suivant la taille de l'installation). L'inertie thermique du bâtiment peut varier de la dizaines de minutes à une heure (voir plus) suivant la qualité de l'isolation de la maison.
La connaissance de ces 2 constantes te permet d'anticiper l'allumage ou l'extinction de la chaudière et d'éviter les écarts de température, par rapport à la consigne, que tu redoutes
Merci pour ta réponse fdufnews,
Ce que je cherche à determiner et à optimiser ce sont effectivement ces 2 inerties et elles ne peuvent être valables uniquement si je prend en compte la température exterieure et un facteur de correction, il est vrai empirique, que j'incluerai dans mon algoritme suivant mes mesures.
D'où l'interêt de connaitre le front montant ou descendant de l'inertie de mon installation, si l'inertie est en distribution, il n'en demeure pas moins que la temperature exterieure peut être en baisse ou en augmentation. Il en va de même pour la perdition.
Cependant, ce que je cherche avant tout à régler, est le passage d'une plage horaire économique, avec des consignes basses, à une plage dîte normale, avec des consignes supérieures.
En effet, si l'horaire de basculement ne prend pas en compte cette inertie, mon installation continuera de chauffer mes radiateurs inutilement dans le cas où les consignes, elles mêmes, aient basculées peu de temps précedent l'horaire fixé.
L'autre difficulté, est que j'aimerais inclure en plus des modes normale et économique, un mode abscence (pour des abscences supérieures à 2 ou 3 heures je pense) et un mode vacances.
Il m'est donc difficile d'y inclure une temporisation avant redemarrage du système de chauffage, trop aléatoire à mon goût.
C'est la raison pour laquelle j'ai pensé à essayer de retranscrire l'inertie du chauffage...
En esperant avoir été clair,
@+
Zoroastre.
PS : Je suis en travaux effectivement
Prenons un cas concret :
Imaginons qu'il est 5h59, soit 1 minute avant le basculement en horaire normal.
Consigne_eco = 17
Consigne_norm = 18
// 5h59 MODE ECO & temperature = 16,9°
If (temperature < Consigne_eco) :
chauffage = ON
// 6h01 PASSAGE EN MODE NORMAL
if (temperature < Consigne_norm) :
chauffage = ON
Mon chauffage tournera jusqu'à la consigne normale max, soit par exemple 18,3 °C (consigne_norm + 0.2 + correction). Donc en pratique de 16,9° à 18,3° !!!
Donc l'idée en effet est de sauvegarder les consignes lorsque le chauffage s'enclenche, mais la question demeure, à savoir à quel moment je réintègre les nouvelles consignes : Réponse, lorsque l'inertie est en perdition NON ???
@+
Zoroastre.
Pour illustrer un peu mieux mon propos et connaitre votre avis :
if (state = 1) // Chauffage ON
{
consigne_mini = old_consigne; // On travaille avec la consigne sauvegardée
}
if (state = 0) && (inertie = 0) // Chauffage OFF && Perdition
{
if (consigne != old_consigne)
{
old_consigne = consigne;
}
consigne_mini = consigne; // On réintègre la nouvelle consigne.
}
Ainsi, lorsque mon chauffage est en marche, je travaille avec la consigne précedente.
Ainsi pour réintégrer la nouvelle consigne, il faut que mon chauffage soit à l'arret et que l'inertie soit stable ou en perdition. Ainsi, je profite au mieux de l'inertie.
Par contre, l'efficacité du calcul de ma moyenne est sujette à caution :
// calcule moyenne sur indoor0 toutes les 5 intervalles.
if (i = 5)
{
calcul_moyenne = (addition/i)
if (calcul_moyenne > old_moyenne)
{
inertie = true;
}
else if (calcul_moyenne =< old_moyenne)
{
inertie = false;
}
old_moyenne = calcul_moyenne;
i = 1
}
else
{
addition = (addition + indoor0)
i++;
}
Je préfererais avoir un tableau dynamique, dans lequel je comparerais l'ensemble des valeurs (genre les 5 dernières moyennes) pour connaitre la tendance !!!
Une idée ???
@+
Zoroastre
Si c'est pour filtrer tes données tu peux utiliser ça (filtre passe-bas) :
void loop(){
valeur_a_filter= lpfilter(float(nums[3])*.9+(valeur_a_filter*.1), filterVal , valeur_a_filter);
}
float lpfilter(float data, float filterVal, float filteredVal){
if (filterVal > 1){
filterVal = .99;
}
else if (filterVal <= 0){
filterVal = 0;
}
filteredVal = (data * (1 - filterVal)) + (filteredVal * filterVal);
return filteredVal;
}
voici un systéme de moyenne sur autant de valeur que tu veux
//////////////////////////////////// gestion de la sonde intérieur ////////////////////////////////////
int SR=0; // pin sonde température ambiance
const int numReadingsR = 10 ; // Nombre de relevés pour la moyenne signal
int readingsR [ numReadingsR ] ; // Variable lecture pour la sonde intérieur
int indexR = 0 ; // position dans la création de la moyenne
int totalR = 0 ; // Total en cours
int averageR = 0 ; // La moyenne
void setup()
{
for ( int thisReadingR = 0 ; thisReadingR < numReadingsR ; thisReadingR ++ )
readingsR [ thisReadingR ] = 0 ;
}
void loop()
{
delay(60000);
//////////////////////////////////// calcul de moyenne de la sonde intérieur ////////////////////////////////////
totalR = totalR - readingsR [ indexR ] ;
readingsR [ indexR ] = analogRead ( SR ) ; // lecture du capeur:
totalR = totalR + readingsR [ indexR ] ; // addition des relevé
indexR = indexR + 1 ; // déplacement dans le calcul de la moeynne
if ( indexR >= numReadingsR ) // si l'on a le nombre de relevé prévue
indexR = 0 ; //on remet le calacul de moyenne à 0
averageR = totalR / numReadingsR ; // on calcul la moyenne
RRB=averageR;
Ta valeur moyenne apparait en RRB
As tu essayé de remplacer ton coefficient d'inertie (qui est très complexe) par un coefficient de de variation de température ?
Merci pour vos contributions messieurs
Jean-Francois, je ne cherche pas à filtrer mes données, simplement à les comparer. Un filtre passe-bas, je ne sais pas trop de quoi il s'agit, et malgés une lecture du wikipédia, je ne vois pas trop comment l'implémenter...mais je prendrais le temps d'y jeter un coup d'oeil approfondi.
FP24V, je te remercie bien pour ce code, il est bien plus pro que le mien.
Mais, imaginons que je souhaite dans un tableau, conserver les 5 dernières moyennes et comparer la dernière au 4 précedentes (disons mini 2) afin de déterminer une tendance ???
Takafuir, une idée interessante en effet, peux-tu me fournir plus d'indication ??? Il me semble pourtant que mon coeff d'inertie est semblable à celui de la température, au vue que je me sers justement de la température...
Le coeff de température serait donc c=0.1/moyenne (0.1 °C), et aprés ???
Je ne vois pas trop de diff avec mon système...
@+
Zoroastre.
Le "coefficient thermique" est compliqué à calculer par le nombre de facteurs dont il faut tenir conte (résistance thermique de la chape, des murs, du toit, etc) de plus avec tu ne peux calculer la variation de température que s'il n'y a pas d'activité dans la structure (maison, appartement, entrepôt, etc). Alors qu'avec un coefficient de variation thermique tu ne tiens pas compte de ton installation. L'avantage c'est que si tu cuisines ou si le soleil tape sur une baie vitrée plein sud ton coefficient de variation variera.
Le plus simple, c'est de prendre une température à l'instant t puis une nouvelle à t1 ensuite tu calcules le coefficient directeur de la droite obtenu par ces deux points. Grâce à ça tu peux estimer la température qu'il fera dans plusieurs minutes.
Ok Takafuir,
Je comprends mieux ton idée.
coeff = (t°2 - t°1) / (time2 - time1) ou (t°2 - T°1) / (delta time)
avec (delta time) = constante, on finit par avoir k.(t°2 - t°1) = coeff ou (t°2 - t°1) = coeff / k
Si le coeff est négatif, inertie en perdition...Il s'agit donc d'une comparaison simple entre 2 températures. Je me pose la question de l'intervalle de temps, j'ai l'impression de devoir l'augmenter...
Par contre, si je désire comparer une suite de valeurs contenue dans un tableau, la moyenne est-elle obligatoire...???
Un avantage de la moyenne, sur des intervalles courts, est qu'elle suit la courbe, sa tendance, avec en fait peu de décalage (décalage fonction de l'intervalle toujours).
Donc à méditer...
Merci, @+
Zoroastre.
L'avantage de l'intervalle court c'est que ton chauffage sera très réactif par contre moins économique alors qu'avec l'intervalle long tu aura de plus grosse variation de température mais sa te coutera un peu moins cher.
Si j'avais un choix à faire, je m'arrangerai pour que le delta soit facilement configurable et je testerai plusieurs valeurs pour avoir le meilleur compromis entre économie et confort.
Merci pour vos contributions messieurs
J'aimerais savoir de quelles manières vous gérer votre système de chauffage, et si ma solutions est solvables ou non, sachant que j'aimerais y intégrer plusieurs modes de fonctionnement (normal, eco, absences, vacances et off)
Juste pour voir si je suis dans la bonne direction...
@+
Zoroastre.
PS : Je vais certainement ouvrir prochainement un topic (chez les english) concernant un afficheur GLCD à base de S1D13700. Problème de taille de police et création d'icone...Comme je travaille exclusivement sous linux, il n'y a pas de logiciels à ma connaissance me facilitant cette tâche...
FP24V, je te remercie bien pour ce code, il est bien plus pro que le mien.
Mais, imaginons que je souhaite dans un tableau, conserver les 5 dernières moyennes et comparer la dernière au 4 précedentes (disons mini 2) afin de déterminer une tendance ???
tu m'en poses des questions ;D
moi je verai la chose comme ceci, vu que mes connaissances arduino sont légére.
if (ambiance maintenant>ambiance juste avant)
{tendanceC=-1;}
if ( ambiance maintenant<ambiance juste avant)
{tendanceC=1;}
faire la moyenne de tendancesC
if (moyenne de tendance faite sur le nombre de relevé prévue)
{
if (tendanceC>0)
{la température est réellement en train d'augmenter}
if (tendanceC<0 et )
{la température est réellement en train de chutter}
refaire une serie de mesure et agir en fonction de}
utiliser la valeur de tendance comme déclencheur hystérésis.
dsl si je ne suis pas trés clair, mais suis dans le coltard et dois aller bosser et en plus suis a la bourre.
ps un conseil si tu peux fait déja des relevé de température sur plusieurs jours avec tp interne, tp externet, etat de la commande de chauffe. avec ça tu auras déja une idée de comment réagit ton chauffage, inertie ....
bonjour, je m'incruste un peu.
Donc, à mon avis, le mieux est de déterminer une courbe de chauffage, qu'il sera ossible de corriger en fonction de la consigne et de la température extérieure. Dans l'idéal, ta courbe sera "auto-adaptative".
Ensuite, il faut savoir qu'agir directement sur la chaudière ou la PAC est une mauvaise idée : le rendement de ce type d'installation n'est optimal qu'après plusieurs minutes de fonctionnement (sachant qu'une pac ne supporte pas les marches/arrêt trop court).
Donc, ce que je ferais :
- mettre un ballon tampon (hydraulique) entre la source de chaleur et les émetteurs
- la source de chaleur se contente donc de maintenir en température ce volume d'eau (à calculé selon puissance et énergie utilisée)
- ensuite, ta régulation vient agir sur une V3V pour l'ouvrir plus ou moins et donc 'coller' le plus possible à ta courbe.
- en cas d'absence, tu pourra aussi jouer sur la consigne de volume tampon.
Avantage de la solution proposée : le générateur de chaleur est presque toujours à son rendement optimum, et l'utilisation d'une V3V permet d'éviter les "trains de chaleur" source d'inconfort
Inconvénients :
- faire en sorte que ta courbe de chauffe soit adaptative (faut trouver les bonnes "équations")
- conso électrique très légèrement supérieure (à cause du circulateur supplémentaire en fonctinonement permanent après la V3V), mais en partie compensé par un meilleur rendement du générateur (pac, chaudière, poêle, ...)
- nécessite une modif du circuit hydraulique
PS : dans ce cas, ne pas prendre une V3V "tout-ou-rien, mais plutot une de type '0-10V'
Pour plus d'info, regarde les sites de Danfoss et Crouzet (série Millénium3)
PS2 : ceci est l'avis d'un technicien thermique (moi ;D), avec ce que je fais tout les jours - l'électronique peut régler certaines choses, mais si l'hydraulique est mal conçu, c'est comme donner des béquilles à un tétraplégique :-?
Bonjour,
Si tu veux des infos sur le chauffage et sur les moyens de réguler, va voir là, c'est très complet : http://www.energieplus-lesite.be/energieplus/page_10898.htm
Faut fouiner un peu partout mais y a entre autre, des explications sur le fonctionnement des régulations.
Bonne lecture.
Merci FP24V, je suis dans cette direction justement...Et effectivement, coupler les 2 méthodes est une idée interessante...
A ce jour, je cherchais comment m'assurer des états stables, lorsque la difference de températures est égale à zero ou , lorsque les moyennes seraient égales (cas moins probables, et pourtant...)
Je résous ce problème en sauvegardant le résultat de l'inertie ayant une valeur précedante.
ecart = (t_saved-tempC0)*100; // tempC0 : température actuelle.
if (ecart > 0)
{
inertie = true;
}
else if (ecart < 0)
{
inertie = false;
}
else // dans le cas ecart = 0, inertie stable.
{
inertie = last_inertie;
}
last_inertie = inertie; // sauvegarde de l'inertie précedente.
t_saved = tempC0; // température de réference.
return inertie;
Je pense faire tourner cette partie du code toutes les 5 minutes.
En conservant la consigne mini de température lorsque mon chauffage s'enclenche, je maintient ainsi la cadence imposée jusqu'à obtention de la consigne max. Si une nouvelle consigne apparait, elle prendra effet dés que le chauffage s'arretera.
Pour démarrer à nouveau mon chauffage, il faudra à la fois que l'inertie soit en perdition et que la consigne mini soit atteinte. Profitant ainsi, de l'inertie et de sa courbe la plus haute.
Taddot, merci pour cette remarque, j'y prend note. Ma chaudière actuelle a déjà 12 ou 13 ans, j'investirais plus tard dans un nouvel équipement...Il n'y aura pas de marche/arrêt trop court, ce n'est pas ma volonté...quant au rendement, je cherche à l'optimiser malgrés il est vrai un hystéresis conséquent !!!
@+
Zoroastre.
Merci Bidouille