Comme les graphiques le montrent, la stabilisation en température est moins bonne qu'avec mon installation de chauffage central, où la température était stabilisée à 0.1°C (même avec des convertisseurs A/D avec 256 pas). Je peux jouer avec la température de l'eau et la vitesse du circulateur. Ici, je ne peux jouer qu'avec la puissance du bruleur, et en fait je ne dispose que de trois niveaux: puissance élevée (11kW), basse puissance (6kW) et arrêt.
La puissance du bruleur est trop élevée pendant l'entre-saisons: le bruleur doit constamment être mis en marche et stoppé. Le but de l'arduino, c'est d'accélérer le cycle de commutation, pour avoir l'oscillation la moins prononcée possible.
Thermostaat et servomoteur
Il y a une équivalence entre la température réglée par le thermostat et la position du servomoteur. En fonctionnement manuel, la position 90 correspond à une température moyenne de 20°, 80 correspond à 19°, 70 avec 18°. La stabilisation de la température est naturellement moins bonne en mode manuel car la régulation par l'arduino est hors fonction, mais en fonctionnement automatique sur par exemple 19° la position du servomoteur oscille entre 65 et 85.
Cette équivalence permet de déterminer aisément la position de départ du servomoteur (et donc du thermostat) quand une température est sélectionnée. Je tiens également compte de la température de la pièce pour déterminer la position de départ du thermostat (voir plus loin).
Positionnement du thermostat d'ambiance
La position du thermostat d'ambiance est importante pour un fonctionnement correct. Le thermostat ne peut pas être placé près du courant d'air chaud du convecteur, ce qui ferait se déclencher trop rapidement le chauffage. Ce n'est pas trop grave, mais cela réduit la vitesse de stabilisation de la température.
Les rayons du soleil ne peuvent pas frapper le thermostat, et ne peuvent pas frapper le sol près du thermostat, cela ferait monter la température mesurée de quelques degrés. Le chauffage risque ainsi de ne pas s'enclencher quand cela est nécessaire. Le thermostat de mon chauffage central était idéalement placé (la mesure de la température est encore utilisée pour les graphiques). Le chauffage au gaz est placé assez près du thermomètre, ce qui fait qu'on voit assez bien dans le graphique quand le chauffage au gaz est mis en route.
Température extérieure
Mon installation n'a pas de capteur extérieur. Cela peut être interessant pour paufiner la stabilisation de la température. Quand je met la consigne sur 19° le soir quand je rentre, le servomoteur va se mettre sur une position de départ qui dépend de la consigne et de la température actuelle à l'intérieur.
cette position de départ a été déterminée empiriquement, mais ne tient pas compte de la température extérieure. Or quand il fait très froid, les dépertitions sont plus importantes. Les murs qui sont plus froids se réchauffent moins rapidement. Quand il fait très froid, la température désirée n'est pas atteinte aussi rapidement.
Stabilisation de la température en fonctionnement chauffage central
Stabilisation chauffage au gaz sans correction
Stabilisation chauffage au gaz avec correction par arduino
Minuterie pour remettre l'horloge interne à zéro une fois par jour
|
---|
Graphiques à droite
Premier graphique:
La stabilisation de la température à 0.1° près sans dérive.
Secong graphique:
Stabilisation avec chauffage au gaz en n'employant que le thermostat incorporé du chauffage. Stabilisation à un degré près et influence de la température extérieure.
Troisième graphique:
Chauffage au gaz avec arduino et servomoteur pour corriger la position du thermostat de gaz. La température est stabilisée à 0.3°. Il n'est pas possible de faire mieux, car la demande en chaleur en cette fin de mars n'est pas très élevée. Le bruleur est constamment mis en route et à l'arrêt. La température de consigne est rapidement atteinte, mais il y a une légère oscillation amortie. L'oscillation est bien visible car le thermostat de mesure (qui permet le graphique) se trouve assez près du chauffage. Il y avait du soleil entre 15 et 17 heures, ce qui a fait monter la température sans que le chauffage ne se mette en route.
J'ai enregistré la position du servomoteur pendant 3h30. On voit que le servo reste à une position fixe tant que la température est dans les limites, pour se mettre à augmenter quand la température s'approche de la limite inférieure et à descendre quand la température s'approche de la limite supérieure. Le servomoteur continue sa course jusqu'au moment où l'arduino détecte que le bruleur se met en marche ou s'arrête.
Modifications du logiciel après la mise en fonction
Il est très aisé d'apporter une modification au logiciel.
- Démarrage et régulation
Lors de la sélection d'une température de consigne, le robinet de gaz est mis sur une position de départ, déterminée par expérimentation. Quand il fait relativement chaud, le chauffage fonctionne trop fort et la température désirée est dépassée. Quand il fait froid, cette position est trop basse et la température désirée n'est pas atteinte. Le système de régulation ne commence à fonctionner qu'au bout de 10 minutes environ (à l'origine pour permettre au système de stabiliser, puisque le robinet de gaz est en fait déjà un thermostat).
La position de départ est maintenant établie en tenant compte de la demande en chaleur nécessaire (différence entre la température demandée et la température effective).
- Zone morte trop importante
Pour éviter que le servo-moteur ne soit constamment activé, j'avais instauré une zone morte de -0.1 à +0.1° entre la température demandée. tant que la température est dans cette zone, le servo-moteur ne fonctionne pas. Mais cela fait qu'il y a une oscillation de 0.2° avant que le servomoteur ne corrige.
En pratique cela ne se remarque pas, mais j'ai éliminé la zone morte. le servomoteur répond maintenant dès que la température dépasse (dans un sens ou l'autre) la température de consigne.
- Fonction minuterie
Contrairement au chauffage central, la température monte relativement vite une fois que le chauffage est mis en route. Mais pour atteindre rapidement la température de consigne, le chauffage fonctionne alors au maximum. Une fonction interessante de mon ancienne installation (commandée par ordinateur), c'était d'indiquer un nombre d'heures d'arrêt (en dehors du programme normal).
L'arduino n'a pas d'horloge RTC par manque de pattes de libre, mais l'horloge intégrée est suffisamment précise pour permettre une minuterie. La fonction OFF permet d'indiquer une durée, une température pendant la minuterie et une température à la fin du décompte. Contrairement à la régulation normale qui tente d'obtenir la température de consigne rapidement, ici le réglage est beaucoup plus lent: 35 minutes avant la fin de la période l'arduino remet tout doucement le bruleur en route et à l'heure demandée la température est atteinte sans overshoot.
- Maintient de l'heure
L'arduino n'a pas de vraie horloge. La minuterie est assez précise à condition qu'elle soit resynchronisée au bout de 24 heures. L'heure se perd également en cas de coupure de courant.
J'utilise un minuteur externe qui donne une impulsion d'une minute à minuit. Cela suffit amplement pour avoir l'heure exacte le restant de la journée. J'utilise pour cela une des portes analogiques pour remettre l'horloge interne à zéro.
- Touches de fonction
Il manque des touches pour appeller rapidement certaines fonctions qui sont souvent utilisées, comme par exemple "je pars travailler = arrêt pendant 11h". Il n'y plus d'entrées numériques de disponibles.
Il est possible de brancher une dixaine de boutons poussoirs (en plus du signal de remise à zéro de l'horloge interne) via des résistances qui forment un diviseur de tension. Chaque bouton-poussoir lance un programme de températures déterminé.
|