Chauffage centrale et inertie

Merci Jean-Francois pour ta réponse.

Un régulateur PID semble être une idée interessante, le seul souci est qu'il faut piloter un relais à deux positions uniques ON/OFF.
Et un régulateur PID est un algorithme servant à maintenir une tendance...idéal pour maintenir une charge.

La solution, il est vrai, est de calculer la dérivée de mes mesures de température afin de trouver la tendance et ainsi d'agir ou non en conséquence.
Peut-être avec un 'Array' dynamique qui comparerait ses propres valeurs.

@+

Bonjour zoroastre,

Si tu veux faire de la régulation de chauffage, y a pas 36 solutions :

  • soit tu travailles en tout ou rien pendant des durées ( c'est comme cela que travaille les thermostats d'ambiance).
  • soit tu travailles en modulant la température ( c'est comme cela que travaille les régulations de chauffage).

Dans tous les cas, je te conseille de rajouter une sonde de température externe pour capter la température externe ( CQFD ;D ) car ça permettra ainsi d'intègrer les déperditions de ton habitat qui varient en fonction de cette température externe.

Enfin, si tu as une exposition plein sud, tu peux mettre un capteur de lumière pour détecter le plein soleil / ciel nuageux afin de diminuer la demande du fait de cet apport.

Le but de ces 2 capteurs est d'anticiper pour améliorer le résultat.

Quelles valeurs prévois-tu pour le fonctionnement "ECO" et "Confort" ?

Euh, c'est quoi la : "fonction 'map'" S.T.P ?

A+

Bonjour,
certains régulateurs fonctionnent avec une base de temps de régulation pour améliorer la tenue de la température et éviter les variations dues à l'inertie.
Plutôt que d'avoir 2 modes de fonctionnements (ça chauffe en dessous de la temp de consigne, puis ça s'arrête quand elle est atteinte), ca chauffe de manière discontinue sur une période fixe (10mn par exemple).
Tu as alors un truc du genre:

Chauffe arrêt
1mn 9mn T°+0.8
2mn 8mn T°+0.6
3mn 7mn T°+0.4
4mn 6mn T°+0.2
5mn 5mn T° consigne
6mn 4mn T°-0.2
7mn 3mn T°-0.4
8mn 2mn T°-0.6
9mn 1mn T°-0.8

Plus tu t'approches de la T° de consigne, plus les temps d'arrêt sont importants pour que l'inertie soit minimisée.
Si tu es au dessus de la temp de consigne mais que la temp diminue, tu anticipes en chauffant peu de temps, ce qui limite la chute. Le système doit s'auto réguler.

J'ai ce système depuis peu. J'y trouve un inconvénient: le chauffe-eau tourne plus souvent et comme chez moi il est bruyant (bruit d'eau dans les conduites) c'est un peu chiant la nuit.
Je pense qu'à l'utilisation, c'est par contre plus économique & plus confortable

Bonjour Bidouille,

Pour la fonction map, c'est ici : http://arduino.cc/en/Reference/Map

Elle permet de classer par ordre croissant ou décroissant une série de valeurs...Ce n'est pas tout à fait ce que je cherche en fait !!!

Pour ma régulation, je prévois une température d'enclenchement en mode normal à environ 18,2 °C, et un mode Eco à environ 17,2 °C

Pour démarrer mon circulateur, je pilote une carte relais RS485 8 canaux, donc en mode tor.

Le problème et ce que je crains le plus ce sont les pertes inutiles d'energie, surtout lors du passage entre une plage Eco et normale.
En effet, si je décide de retourner en mode normale à 06h00 et que mon chauffage s'enclenche à 05h59 à t°=17,2, ma maison continuera à chauffer jusqu'à la consigne de température normale c-a-d t°=18,2+0.2
Du fait, l'inertie de mes radiateurs est occultée, ce que je cherche à éviter naturellement.

J'ai entrevu sur le forum un solution pour le calcul de moyenne, elle me semble être interessante, pas trop lourde.
Si je calcule la moyenne d'un nombre prédefinis de mesure et la compare à la moyenne précedente, j'aurais ainsi une image de ma tendance, inertie haute ou inertie basse.

Je cherche la meilleur solution tout simplement et aussi généraliste, car je compte intégrer également un mode vacances et absence.

@+

Merci Vincelge

Mais ton système est loin d'être optimum me semble-t'il ?

Je cherche plutôt un algoritme ou une régulation contrôlée prenant en compte l'inertie de chauffe...

Je ne doute pas que ton système fonctionne. Pour ma part, hors froid exeptionnel, mon sytème de chauffage démarre environ une fois toutes les 3h30.

Merci bien !

@+

Ce n'est pas vraiment MON système :wink: .
C'est ce qu'on trouve sur bon nombre de thermostats du commerce.
Pour ma part je cherchais juste un système sans fil qui ne me coute pas les yeux de la tête, la notion des yeux de la tête étant définie par le cout d'un Arduino, d'un LCD, d'une sonde, de modules sans fils. Je trouvais le tout un peu cher, je me suis donc dirigé vers une solution toute faite pour moins cher, et il se trouve qu'elle fonctionne selon ce mode.

En jetant un oeil à la doc de mon thermostat, j'ai vu qu'ils indiquaient que c'était une régulation de type PI.
Plus d'explications sur les types de regulation ici

Ton système démarre toutes les 3h30, mais combien de temps chauffe-t'il ?
S'il tourne une demi-heure, c'est peut-être moins performant que s'il chauffait 5mn toutes les heures ...

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.

  1. 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.
  2. 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 :wink:

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 :wink:

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.