[Article] Gestion de bout en bout du chauffage

L’explication a le mérite d’être simple et claire. Pour info, j’ai posté sur Smart Thermostat - le chauffage contrôlé par PID - #126 par esciara un lien sur une très bonne explication des PID.

Petite question :
Cela fonctionne uniquement avec des radiateurs ou il est possible de récuperer l’automatisation pour du chauffage par climatisation reversible ?

Le principe du TPI n’est pas si simple, c’est proche du PID et basé sur une analyse temporelle des variations de température pour anticiper le démarrage et l’arrêt de la chauffe afin de coller au maximum à la consigne.

De ce que j’en comprends des infos trouvées par ci par là sur le web, c’est une sorte de PID mais plus complexe, qui utilise de l’apprentissage.
Je ne trouve pas d’algorithmes, les entreprises qui en développent se garde bien de les communiquer. Et en open source on ne trouve que du PID.

Dans ce blueprint, c’est un thermostat proportionnel qui est utilisé, avec une compensation de la température extérieure qui donnera un comportement qui ressemble à de l’intégrale sans en être une (il faut une mémoire pour ça) et qui donc ne s’adaptera pas à des changements de condition internes à la maison (porte ouverte entre deux pièces de températures différentes, présence de personnes, plaques de cuisson…).

Je suis d’accord, le TPI n’est pas expliqué dans la page web d’Honeywell ci-dessus et, a priori, tous les vendeurs de thermostats proposent des thermostats à apprentissage.
A propos d’apprentissage, je suis en train de faire un estimateur de pertes thermiques. Il donne de bons résultats en simulation. Pas encore de quoi interpréter clairement la page web d’Honeywell…

Aujourd’hui, je galère pour coder l’estimateur en yaml afin de le tester chez moi.
(bon… c’est pour le plaisir d’apprendre, le thermostat appelé TPI me convient parfaitement car de toute façon mes radiateurs ne sont pas assez puissants pour la pièce à chauffer donc j’abandonne l’idée d’être précis au °C près.)

1 « J'aime »

Bah j’aurais peut-être du appeler le thermostat juste TP (time proportional)
Si tu as des propositions pour trouver les bons paramètres, ce serait bien venu :sunglasses:

Salut
Pas soucis pour appeler ton thermostat comme tu veux. C’est plus sur les explications d’Honeywell que je bute.

Observation:
Pour les paramètres, j’ai d’abord observé les graphiques de HA.
1/La puissance consommée pour plusieurs écarts constants de température et j’en ai déduit les pertes thermiques en fonction de la température externe: 100W/° chez moi.
2/ Ensuite, j’ai mis une valeur de gain sur l’écart consigne-mesure un peu inférieure à celle que tu proposais… pour voir. Comme elle donne des résultats acceptables pour moi, je l’ai gardé.

Estimateur
Sinon pour une estimation dynamique des pertes résiduelles, le principe est le suivant:
on se base sur un modèle de comportement:
Prad = Ci * dTint/dt + Ce * (Tint – Text) + Perte
où Prad est la puissance fournie par les radiateurs, dTint/dt la variation de température interne.

Les pertes sont « des pertes résiduelles » en plus ou moins de Ce*(Tint-Text). en effet, elles comprennent tout ce qui est mal estimé dans l’équation. Puissance efficace de chauffage vs puissance consommée par les radiateurs. Coefficient de perte, mesure de température externe (météo France).

On fait une prédiction de la mesure entre 2 échantillons espacés de Dt:
Tpredite(t+Dt) = T(t) + somme(Prad - Ce*(Tint – Text) - Perte)/Ci
où somme() est l’intégrale durant l’intervale Dt.

En supposant qu’elles sont constantes, nous pouvons les estimer de la façon suivante entre deux échantillonnages:
Perte(t+Dt) = Perte(t) - K *(Tmesurée(t) - Tprédite)

Il faut bien sur choisir K avec soin.
En prenant K=Ci/Dt et que la température n’a pas variée (Tmesurée = T(t)), on obtient
Perte = -Prad. C’est bien sur un cas au limite et on prendra K <Ci/Dt pour éviter d’avoir une estimation trop dynamique.

Problème
Je ne l’ai testé que sur un simulateur Simulink: pas le temps de le mettre sur HA.
Sur le simulateur, je commande une puissance PWcmd= K(Tconsigne-Tinterne) + Ce(Tconsigne-Text) + Perte et le résultat est concluant: la température est parfaitement réglée.
Par contre, les pertes varient beaucoup en dynamique parce que je connais mal l’inertie de la maison. Il faudra bloquer le calcul quand la température interne varie.

conclusion
Aujourd’hui, je n’ai pas l’intérêt d’implémenter ce calcul car le réglage TPI me va bien. Du coup, je ne progresse pas vite.

Très pertinent, en particulier sur la question des pertes.
La puissance par degré est bien ce qu’il faut mesurer. Après tu es sûr 100w seulement par degré ? Cela semble très faible.

Autrement, la question pour le ceofficient Ci est la pente de chauffe, soit le temps pour atteindre la consigne. Si trop forte, on oscille et le radiateur passe de bouillant a froid. Si trop faible, on converge mais on met trop de temps a atteindre la consigne. Je serai tenté de travailler la-dessus et trouver la pente la plus forte permettant de converger sans oscillation. Mais compliqué de le modéliser.

Salut
Pour être plus précis, le coefficient de perte du salon est d’environ 110W/°, d’après EDF compte tenu de ma consommation, la maison est considéré comme catégorie F donc mal isolée.

Ci dessous, l’exemple de cet après midi où il y a une zone stable:

Au sujet du réglage de la pente de chauffe (lié au gain sur Tconsigne-Tinterne), la température des radiateurs est encore un autre critère que je n’ai pas pris en compte. Je me suis fixé:

  • d’abord la stabilité, ne pas osciller en température.
  • ensuite ne pas surconsommer inutilement (ne pas relancer les radiateurs si la porte s’ouvre)
    Du coup, j’exclue a priori la partie dérivée d’un PID.
  • éviter d’allumer et éteindre les radiateurs trop souvent
    (on peut discuter de la pertinence de ce critère car ils fonctionnent déjà en PWM)
  • enfin il ne faut pas être trop loin de la consigne (maximum 1°)…
    Sachant qu’on ne peut pas être parfaitement sur la consigne sans intégrateur (ou estimateur de perte).

En relisant mes notes, je me souviens de ce site où on peut calculer ses déperditions thermiques:
http://www.radiateur-electrique.org/calcul.php

J’avais fait le calcul pour mon salon et j’obtenais 2.5x plus de déperdition que ce que je constate… donc plutôt un coefficient de 275W/°.
Il faudrait peut être que je prenne en compte l’apport d’énergie par le reste de la maison pour retrouver ce coefficient…

Oups, j’avais mal compris : c’est la puissance pour les pertes de 1 degré et non pour augmenter la température de 1 degré.
Merci pour le partage du site, je comprends mieux la logique.

oui le coefficient pour augmenter la température de 1° est en Wh/°.
C’est la puissance durant une heure pour augmenter la température d’un degré et il est entre 1000 et 3000Wh/° chez moi. Il est très difficile à estimer juste en regardant les courbes vu que cela demande des heures pour changer de température et que la température externe change en permanence…

Si le coef de déperdition thermique peut être mis tel quel dans le TPI (coef_t), ce coef là (le Ci) n’est pas à mettre sur l’écart de température (coef_c).

Concernant le point3 et le fait de passer de confort à off pour atteindre sa valeur de consigne à exécuter des on off sur le radiateur? C’est bon pour sa duree de vie?

C’est une bonne question. Je ne sais pas y répondre, mais une réponse partielle pourrait être d’observer le comportement du radiateur seul sans automatisme.

Ci dessous un copie de la courbe de puissance consommée par le radiateur:
image

On voit que le radiateur contrôle sa chauffe avec la méthode PWM. Ce n’est pas du tout étonnant, en effet, c’est, je crois, la façon la plus simple de ne consommer que le stricte nécessaire donc sans perte.
(là j’essaie d’imaginer d’autres méthodes… changer la tension aux bornes de la résistance électrique, changer la résistance).
Donc a priori, le radiateur est conçu pour accepter sans problème de nombreux passages on/off.

Maintenant je ne sais pas si le circuit éco/confort du radiateur ou de la prise connectée sont conçus pour en accepter beaucoup.

Ici une résistance digitale variable:
https://www.yoctopuce.com/FR/article/construire-une-resistance-variable-digitale

1 « J'aime »

Je viens de trouver un post sur un forum qui explique comment fonctionnent le contrôle de puissance des radiateurs.

  • le PWM s’appelle en bon français « gradateur de train d’onde », avec un on/off qui a lieu lorsque la phase est nulle.
    image

  • l’intervalle entre on/off doit réglementairement être supérieur à 70sec pour éviter la production de parasites électromagnétiques → ce sera la valeur minimum de toute commande de radiateur par PWM

  • on y évoque aussi les résistances variables: « éléments résistifs en gradins »

  • enfin, à la question de @Plouf34 d’allumer / éteindre le radiateur sans utiliser le fils pilote, j’ai la notice d’un radiateur qui me dit: « des coupures franches d’alimentation électrique intempestives et répétées peuvent provoquer une usure prématurée et une détérioration des cartes électroniques. »

1 « J'aime »

Oui, donc c ce que fait le thermostat de HA. Des on/off

oui mais le radiateur fonctionne déjà comme cela en on/off et, en utilisant le fil pilote, on utilise cette fonction on/off native du radiateur.

Il y a une différence entre

  • éteindre le radiateur de façon extérieure par la prise de courant (prise connectée et commandée par HA par exemple)
  • utiliser le fils pilote pour éteindre le radiateur car l’utilisation du fil pilote ne coupe pas l’électronique de contrôle et c’est l’électronique de contrôle qui éteint le radiateur.

Apres essai sur un poêle à pellet; cela fonctionne plutôt pas mal mais pour configurer un peu mieux; serait il possible de déterminer par exemple que ce dernier ne s’allume pas si la puissance est inférieur à 25%, afin de limiter l usure de la bougie et éviter que le poêle ne s’allume que pour 2 min.
Merci à toi Argonaute pour ce gros boulot.

1 « J'aime »

salut
je l’ai fait pour mes radiateurs… (bon pas tout à fait comme je te le présente)

Tu peux tenter de remplacer cette ligne

      {% elif val < 0 %} {% set val = 0 %}

par

      {% elif val < xx %} {% set val = 0 %}

où xx est choisi en fonction du temps minimum d’allumage.
En relisant le blueprint, le % de puissance est aussi un % de temps (il est multiplié par 600 qui est la durée en seconde de 10 minutes: période d’appel de la fonction). Donc tu pourra prendre xx = 0.2 pour ne pas allumer le poêle si la durée est < à 2mn (et si tu as conservé la période d’appel de 10mn).
Donc

      {% elif val < 0.2 %} {% set val = 0 %}
1 « J'aime »

Bonjour à tous,
excuser si je pose déjà une question qui à déjà été posées. j’ai lue pas mal du tuto mais je n’ai pas lus tout les commentaires il y en as trop.

Les différents modes, confort eco…je crois que comprendre que c’es juste des ordres envoyés par le fil pilote et que les températures qui y sont associés c’est le radiateur qui gère ?

mon radiateur a moi, il as que deuc possibilité basiques. tu chauffe ou pas.
est-ce possible de faire des presets perso ? confort = 22 , eco=19, nuits…, absence ??

Merci par avance

Hello,

L’idée est que HA règle via un thermostat logiciel (appelé TPI dans mon tuto) la température de la pièce.

  1. Le thermostat regarde la différence entre la consigne que tu souhaites et la température de la pièce.
  2. Il calcul une puissance en % proportionnel au delta (en rajoutant un peu de puissance si il fait froid dehors).
  3. Puis il pilote le convecteur en ON-OFF
    Exemple :
  • Si la puissance calculée est de 50%, il mettre en ON le radiateur 5 minutes puis en OFF 5 minutes.
  • Si la puissance calculée est de 20%, il mettre en ON le radiateur 2 minutes puis en OFF 8 minutes.
  • Si la consigne est atteinte, puissance à 0 et radiateur éteint (dans la réalité peut être 15% si il fait froid dehors pour compenser, car le thermostat en tient compte).

Ensuite, dans mon tuto, je propose de planifier des températures en fonctions des heures et de si on est ou non présent (mode confort/éco). Pour cela, je propose d’utiliser un scheduler (composant HACS). Il y a aussi un mode manuel qui permet d’avoir une température définie manuellement.
Mais tu peux simplifier. Tu peux donc utiliser le thermostat TPI, en lui mettant en entrée la consigne spécifiée dans un input_number comme je le fais. Puis tu définis des presets qui changent les températures de consigne de l’input number.

Concernant le pilotage du convecteur, je ne connais pas ton matériel, il est recommandé de passer par des fils pilotes. Couper-remettre l’alimentation peut endommager à terme la carte électronique du convecteur, sauf éventuellement si il est très ancien et a peu/pas d’électronique. Réfères toi au chapitre 8 de mon POST « quel matériel utiliser » que je viens de rajouter.