Go Down

Topic: Chauffage centrale et inertie (Read 6627 times) previous topic - next topic

Jean-François

Si c'est pour filtrer tes données tu peux utiliser ça (filtre passe-bas) :

Code: [Select]
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;
}
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FP24V

voici un systéme de moyenne sur autant de valeur que tu veux

Code: [Select]

//////////////////////////////////// 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


2 ans d'absence et tout à réapprendre.
Heureusement, je ne savais pas grand chose.

Takafuir

#17
Jan 08, 2011, 12:06 pm Last Edit: Jan 08, 2011, 12:07 pm by Takafuir Reason: 1
As tu essayé de remplacer ton coefficient d'inertie (qui est très complexe) par un coefficient de de variation de température ?

zoroastre

#18
Jan 08, 2011, 01:33 pm Last Edit: Jan 08, 2011, 02:26 pm by zoroastre Reason: 1
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.
Gné! ;)

Takafuir

#19
Jan 08, 2011, 02:52 pm Last Edit: Jan 08, 2011, 02:53 pm by Takafuir Reason: 1
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.

zoroastre

#20
Jan 08, 2011, 06:33 pm Last Edit: Jan 08, 2011, 06:48 pm by zoroastre Reason: 1
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.
Gné! ;)

Takafuir

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.

zoroastre

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...
Gné! ;)

FP24V

Quote

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.

Code: [Select]


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 ....


2 ans d'absence et tout à réapprendre.
Heureusement, je ne savais pas grand chose.

taddot

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 :-?
pas taper... sauf application de l'article 35 ...

Bidouille

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.

zoroastre

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.
Gné! ;)

zoroastre

Gné! ;)

Go Up