Les sondes TH
j'ai utilisé 2 types de sondes (pour une question de coût) :
-
4 sondes PT1000 pour les plages de températures "extrême" ( < 0° & > 80°C):
-
TH capteurs (jusqu'à 130°C cet été à vide) ........ x 1
-
TH ECS ....... x 1
-
TH de sécurité circuit grenier (est descendue jusqu'à -18°C cet hiver) ....... x 2
-
-
9 sondes type thermistances 10kOhm pour les autres plages de température (moins onéreuses) :
-
TH stock ........ x 4
-
TH entrée/sortie stock ..... x 2
-
TH entrée/sortie ECS .... x 2
-
TH piscine ..... x 1 (avec le recul j'aurais du mettre une PT1000)
-
Les PT1000 sont montées sur un simple pont diviseur de tension en veillant à travailler dans une tension moyenne de 2.5V (car un arduino travaille avec une plage de tension de 0 à 5V DC) :
On a donc une résistance fixe R = 1kOhm et une résistance variable (PT1000) forcément de 1 kOhm. J'ai rajouter en plus un condensateur de filtrage (1 mF) en parallèle pour stabiliser un maximum la tension Vs de sortie vers l'arduino.
Le "signal Ai" représente la tension qui rentre sur une "pin" analogique de l'arduino. Ce dernier code la tension linéairement de 0 à 1023 :
-
0 = 0V
-
1023 = 5V
On aura donc :
-
Rv = 1000 Ohm = 0°C = 512

Pour convertir ce signal codé en température, j'ai simplement chauffé de l'eau à 95°C et plongé un thermomètre au mercure de qualité (provenant de l'industrie pharmaceutique). Je relève donc tout les 5 °C la valeur renvoyée par l'arduino sur l'écran du PC. Cela me donne ceci (pour les 2 valeurs extrêmes) :

Il suffit de calculer l'équation de la droite qui est TH = (1.2 x signal) - 620
Je considère qu'en dehors de cette plage de température, la variation de température reste linéaire (c'est le propre d'une PT1000). Il suffit maintenant de le programmer en langage C sur arduino.
Ce thermistances sont également montées sur un simple pont diviseur de tension mais avec une résistance de linéarisation en parallèle de R = 10 kOhm. La résistance propore du pont diviseur du coup change et est de Rp = 1633 Ohm.
J'ai encore veillé à travailler dans une tension moyenne de 2.5V :

Cette fois le signal codé Ai n'a plus la même plage de variation mais la méthode pour convertir le signal en température reste la même :

La différence est que la variation n'est pas linéaire sur toute la plage de température et ce même avec la résistance de linéarisation. Il faut donc découper en portions de droites la variation courbée (on fait une petite erreur mais pas grand chose, c'est acceptable au vue du système).
On aura donc :
-
de 100°C à 40 °C inclus : TH = (-0.1297 x signal) + 130.37
-
de 40°C exclue à 30.8 °C inclus : TH = (-0.1692 x signal) + 157.55
-
de 30.8°C exclue à 26 °C inclus : TH = (-0.2182 x signal) + 194.22
-
de 26°C exclue à 20°C inclus : TH = (-0.2609 x signal) + 227.13
-
de 20°C exclue à 13°C inclus : TH = (-0.35 x signal) + 297.90
-
de 13°C exclue à 0°C et moins : TH = (-0.337 x signal) + 287.35
A programmer en conséquence sur l'arduino (cf un peu plus loin).
Voici le câblage que j'ai fait :

Doigts de gants dans stock & piscine
Stock
La fabrication des doigts de gants se font en cuivre et laiton avec des soudures tendres) :


On peut ensuite y loger une sonde (PT1000 ou autre). Personnellement, j'y ai mis mes thermistances.
piscine
Lissage sur la mesure et étalonnage de la température
Mes montages "électroniques" sont loin d'être du niveau de ce que l'on peut trouver dans le commerce ou de ce qu'on a sur ce site. Pour éviter au maximum d'avoir des températures fluctuantes, j'ai choisie de filtrer de manière "statistique" en me basant sur le principe de l'échantillonnage.
Pour avoir une température représentative de la réalité, je me base sur 5 mesures successives (qui constituent mon échantillon de mesures). En représentation graphique, cela donne ça :

On peut tracer donc en superposition une "loi normale" représentée par une cloche (pour plus d'infos, faites des recherches sur le net). La particularité de la loi normale est qu'elle fait apparaître 2 paramètres statistiques :
-
la moyenne qui positionne la cloche (au milieu)
-
l'écart-type qui caractérise la dispersion des mesures (largeur de la cloche)
Je prends donc comme température finale la moyenne des 5 mesures ce qui me permet de "filtrer" le caractère oscillant des mesures.
Elle se fait une seule fois par addition d'une valeur étalon déclarée dans le code arduino. Cette valeur étalon est obtenue par comparaison entre une température réelle mesurée au thermomètre et la valeur calculée par le programme. On a donc :
-
etalon_........ = valeur thermomètre - valeur programme
Il suffit alors de l'intégrer dans les lignes de code (voir ci-dessous)


Mes températures sont stables à 0.2 °C

Résultats sur la supervision excel
Voici un extrait du résultat final sur ma supervision excel :
