Gestion Conditionnement Allsky

Écrit par le .

Page en cours de construction

Gestion du conditionnement thermique d'une caméra allsky

Présentation

 

Ayant commencé l'utilisation d'un Raspberry Pi (RPI) afin de gérer la caméra allsky à l'aide du logiciel édité par Thomas Jacquin, je me suis dit que je pouvais en profiter pour exploiter plus en profondeur ce RPI à d'autres finalités.

Le premier développement informatique sur RPI consiste en une petite application qui permet de gérer le conditionnement en température de ma caméra allsky. Ce conditionnement en température est réalisé par des résistances chauffantes situées à l'intérieur du boitier.

Ces résistances ont pour objectif de lutter contre le dépôt de buée et de givre aussi bien à l'intérieur qu'à l'extérieur du boitier.

Pour ce faire, je gère les paramètres de température et d'humidité indépendamment à l'intérieur et à l'extérieur du boitier.

 

Un peu de théorie ..... mais vite fait :

Pourquoi la condensation se forme t'elle ?

Pour comprendre comment se forme la condensation, il suffit de regarder le graphe à gauche, appelé couramment "Diagramme de Mollier".

Sur ce diagramme, on voit en échelle horizontale la température qui nous intéresse. L'échelle verticale définit la quantité d'eau contenue dans un volume d'air sec, exprimée en grammes par kilo d'air sec. Cette échelle ne nous intéresse pas directement pour nos problèmes de condensation.

L'important, ce sont les courbes rouges qui définissent le taux d'humidité absolue (10%, 20%, jusqu'à 100%) dans l'air. Tant que notre taux d'humidité reste inférieur à 100%, pas trop de risque de condensation car l'eau est dissous dans l'air.

Par contre, dès qu'on s'approche des 100%, l'air n'a plus la capacité de dissoudre de l'eau et cette dernière se retrouve à l'état d'eau, de la rosée en ce qui nous concerne.

Prenons un exemple : la température ambiante en fin de journée est de 14° et le taux d'humidité mesuré est de 70%. La flèche verticale part de l'axe horizontal à la température de 14° et monte jusqu'à rejoindre la courbe 70%.

Dans la nuit, la température diminue jusqu'à 4°. Sur notre courbe, notre flèche horizontale croise la courbe de 100% d'humidité. Nous venons d'atteindre la température à partir de laquelle l'air ne peut plus dissoudre d'eau. La flèche verticale jaune permet de trouver la température correspondante, soit 8°. Cette température s'appelle le point de rosée.

En passant sous 8°, la condensation se forme et se dépose sur tout objet ayant cette température. Et lorsqu'on passe sous une température de 0°, la rosée se transforme en givre.

La formule pour calculer le point de rosée est la suivante :

Tr = point de rosée en °C

T = température en °C

RH : taux d'humidité. Entre 0,01 (1%) et 1,00 (100%)

 

 

De ce qui vient d'être présenté, on peut en déduire plusieurs choses :

La rosée qui va se déposer dépend conjointement des paramètres température et humidité. Nous avons peu d'influence sur ces paramètres que la nature nous impose et qui de surcroit, ont des valeurs qui évoluent en permanence.

Il existe de fait, 2 leviers d'action :

1 - Réduire le taux d'humidité de l'air afin de rester en permanence sous les 100% d'humidité quelle que soit la variation de la température. C'est faisable dans un boitier étanche, mais ce n'est pas possible dans un espace ouvert.

 

2 - Maintenir une température suffisante de manière à ne pas arriver au delà des 100% d'humidité. Là également, c'est réalisable dans un environnement relativement confiné, mais très difficile dans un espace ouvert.

Si on arrive à maintenir la température au dessus du point de rosée, aucun phénomène de condensation ne se produit. En réalité, il est bon de conserver une marge de quelques degrés entre le point de rosée et la température minimale de conditionnement afin d'éviter tout risque de condensation.

 

Le logiciel de gestion

Afin de maitriser le risque de condensation, aussi bien à l'intérieur qu'à l'extérieur du boitier, il faut effectuer un suivi permanent des paramètres température et humidité.

Pour cela, j'utilise des capteurs type BME280 qui mesurent les 2 paramètres dont nous avons besoin. A partir de la température et de l'humidité, on calcul le point de rosée. Le BME280 permet également de mesurer la pression atmosphérique locale.

La différence entre température ambiante et point de rosée constitue la delta T réelle. Cette valeur est comparée à une consigne de delta T que l'on définit.

Lorsque la delta T réelle (intérieur ou extérieur) est inférieure à la consigne de delta T, le relais sur lequel sont raccordées les résistances chauffantes s'active et les résistances ... chauffent !

Dès que la température ambiante augmente, la delta T réelle redevient supérieure à la consigne de delta T et le relais se désactive.

La pression atmosphérique relevée par le capteur intérieur allsky est redondant avec la valeur du capteur extérieur. Je voulais voir si la valeur de pression intérieure évoluait en fonction de la température interne (application de loi des gaz parfaits pour voir si le boitier est totalement étanche).

 

Composants nécessaires

Pour pouvoir faire fonctionner l'ensemble, il faut :

- 1 Raspberry Pi. Pour celui qui utilise le logiciel de gestion d'une allsky développé par Thomas JAQUIN à base d'un Arduino, c'est le même Arduino qui permet gérer les résistances de désembuage, et éventuellement des relais de commutation complémentaires si souhaité.

- 2 capteurs BME280 en tension d'alimentation de 3,6V ou 5V. Prendre des capteurs à 6 pins de connexion pour permettre le changement d'adresse sur un des 2 capteurs.

- 1 carte relais fonctionnant en 5 volts, avec 1 relais à minima, qui se connecte directement sur le port GPIO du Raspberry Pi. Un exemple de cartes disponibles sur le site Aliexpress. Ces cartes sont destinés aussi bien au RPI qu'à l'arduino. Il suffit de mettre "relais arduino" en critères de recherche pour en avoir plus que de raison.

- Du câble blindé à 4 conducteurs pour raccorder les 2 capteurs BME280 au port GPIO du RPI.

- Du câble non blindé à 2 conducteurs pour alimenter les résistances. Du câble blindé fonctionne également mais ce n'est pas une nécessité.

Quelques remarques :

- Carte relais : il peut être pertinent de prendre une carte avec plusieurs relais. J'ai profité de ce développement pour créer une application de gestion de cartes relais avec le Raspberry Pi. Voir la présentation dans le menu "Développement informatique" ou directement sur l'article détaillé.

- Le logiciel de gestion des résistances de désembuage permet également de gérer des résistances de chauffage pour les rails d'un abri à toit roulant. En cas de basse température, le givre qui se dépose sur les rails lorsque le toit est ouvert entraine un effort supplémentaire pour la motorisation qui peut ne plus suffire pour manœuvrer le toit.

- BME280 : certains vendeurs sur le net n'hésitent pas à vendre des BMP280 à la place de BME280. Contrairement au BME280, le BMP280 ne mesure pas le taux d'humidité, il est donc impossible de calculer le point de rosée et de mettre en route les résistances en cas de besoin. D'une manière générale, en Europe, un BME280 coûte environ 10€ et un BMP, 3€. Ces capteurs sont nettement moins chers en Chine ! Mais avec un délai de livraison plus important.

Schéma de câblage

Définition des pins du connecteur GPIO du Raspberry Pi :

 

 

Câblages des capteurs BME280 :

Les capteurs BME280

L'utilisation du bus I2C implique l’affectation d'une adresse différente à chaque capteur. Pour éviter de paraphraser les explications qui existent sur le net, voici une page de Gilles THEBAULT qui explique parfaitement la mise en œuvre d'un BME280.

Faire les tests proposés dans cette page avant d'utiliser les capteurs avec le programme de gestion des résistances. Cela permet de garantir que la mesure s'effectue correctement.

Les 2 capteurs se branchent en parallèle sur les pins I2C du RPI (broches 3 et 5)

Si les capteurs sont des modèles 3,6V, la pin VCC des capteurs doit être raccordée au 3,3V du GPIO (broche 17). Si les capteurs sont des modèles 5V, la pin VCC des capteurs doit être raccordée au 5V du GPIO (broche 2 ou 4).

Pour avoir lune adresse différente pour chaque capteur, on raccorde la pin SDO à la masse (pin GND au choix du port GPIO) pour un des capteurs, et on relie la pin SDO du deuxième capteur au VCC (3,6V ou 5V selon la tension retenue pour les capteurs. Cette connexion de la pin SDO peut se faire directement sur chaque capteur. Cela permet aisément d'intervertir les 2 capteurs sans modification de filerie.

Le programme

Lien pour télécharger le programme en python

Après avoir téléchargé le fichier, il suffit de le transférer sur le RPI dans le dossier de votre choix, soit de faire un copier/coller en ayant ouvert préalablement l'application "Geany" sur le RPI. Enregistrer le programme dans le dossier de votre choix.

Il suffit ensuite de lancer le programme comme n'importe quel programme python

Quelques remarques concernant le programme :

Le capteur utilisé pour la allsky utilise l'adresse 0x76 et celui à l'extérieur, l'adresse 0x77. En cas de besoin, les adresses peuvent être permutées au niveau des lignes 203 et 204.

Le relais de commutation de la résistance de désembuage est connecté sur la pin GPIO18 (broche n°12 du connecteur). Il est possible de choisir un autre numéro de pin GPIO en modifiant la ligne 20 du programme.

Le relais de commutation éventuel de la résistance de chauffage des rails est connecté sur la pin GPIO26 (broche n°37 du connecteur). Un autre numéro de pin GPIO est possible en modifiant la ligne 21 du programme.

La température max de chauffe est évolutive. Elle dépend de la température extérieure. Dans tous les cas, cette température est limitée à 25°C car cela ne sert à rien de chauffer davantage.

Il est possible de forcer la mise en service des résistances avec le bouton ad'hoc. En plus de 5 ans d'exploitation, cela n'a pas été nécessaire.

Dans le cas d'utilisation de résistances chauffantes pour les rails d'un abri dotés de rails se retrouvant à l'air libre, l'activation de la résistance des rails s'effectue en cliquant sur le bouton "Suivi T° rails". Les résistance ne seront effectivement mises en service que lorsque la température extérieure passe sous les 3° pour éviter la formation de givre, la rosée n'ayant aucun effet néfaste sur la puissance nécessaire de la motorisation d'un toit roulant.

Il est possible de modifier la température en dessous de laquelle se mettront en service les résistances si le suivi est activé en modifiant la valeur en ligne 22 du programme.

Accessoirement, le logiciel crée un fichier texte qui contient les relevés des 2 sondes, de manière à pouvoir les exploiter via un autre logiciel sur le RPI ou, comme dans mon cas, sur un PC qui me permet de tracer les courbes journalières avec transmission du graphique sur mon site internet.

 

Après le texte en début de chaque ligne (Temp, press, hum), on trouve dans l'ordre : date et heure de mesure / temp extérieure / pression atmosphérique extérieure, taux d'humidité extérieur / température allsky / pression atmosphérique allsky, taux d'humidité allsky /état de fonctionnement des résistances de désembuage.

Ce fichier se nomme "BME.txt" et se trouve dans le dossier "/home/pi/Documents".

Vu la faible capacité mémoire du RPI, la taille du fichier est limité à 20000 octets. Dès que cette capacité est atteinte, le fichier est totalement vidé de son contenu et il se rempli au fur et à mesure des relevés.

Il est possible de modifier la taille maxi du fichier à la ligne 244 du programme.