C’est un TP de BTS SN (Systèmes numériques) 1° année. C’est le premier TP avec l’Arduino. Il s’agit de réaliser un thermomètre avec Arduino. Pour cela, nous allons modéliser un capteur de température réalisé avec une thermistance CTN puis calculer et afficher la température mesurée ! Le cahier des charges est le suivant :

Réaliser un thermomètre Arduino avec affichage de la température sur la liaison série.

Plage de température : -20°C à 50°C

Précision < +/- 1°C

La thermistance

Pour réaliser notre capteur, nous avons utilisé une thermistance. Nous avions au lycée un petit stock de thermistance 4,7 kΩ. La loi de variation de la résistance RTH (la résistance de la thermistance) en fonction de la température est donnée ci-après :

RTH = R0 e B(1/T -1/T0)

avec R0 = 4700 Ω et B = 3980 K-1 et T0 = 298,15 K

C’est assez facile à tracer avec un tableur. Voilà ce que ca donne entre -20°C et 50°C avec un point tout les 5°. J’utilise LibreOffice : efficace, gratuit et libre !

Caractéristique thermistance R en fonction de T°C
Caractéristique R(T) de la thermistance 4.7 k

C’est une CTN (résistance à coefficient de température négatif) cela signifie que lorsque la température augmente, la résistance diminue. Remarquez qu’à la température ambiante (25°C), la résistance a une valeur de 4700 Ω.

Le capteur

L’Arduino sait mesurer des tensions, pas des résistances. Il est donc nécessaire de transformer la variation de résistance en variation de tension. Pour cela, on réalise un pont diviseur en y associant une résistance de 4,7 kΩ conformément au schéma suivant.

Capteur de température diviseur de tension thermistance résistance
Capteur de température à thermistance

Calculons Vt, la tension fournie par le diviseur de tension :

Vt = Vcc. RTH / (RTH+R1)

Lorsque la température est basse, la résistance est haute, la tension est élevée (proche de 5V). Lorsque la température est haute, la résistance est faible, la tension est basse (proche de 0V). À la température de 25°C, la thermistance a une résistance de 4,7 kΩ et la tension est à Vcc/2.

Avec le tableur, nous pouvons maintenant tracer la courbe Vt(T°C), c’est-à-dire la tension fournie par le capteur en fonction de la température.

Caractéristique Vt(T) du capteur de température à thermistance
Caractéristique Vt(T°C) du capteur à thermistance

Entre -20 et 50°C, la tension Vt varie entre 4,5V et 1,2V.

Maintenant, ne perdons pas de vue notre objectif, ce qui nous intéresse, c’est de connaitre la température à partir de la mesure de Vt. En fonction de la tension mesurée, quelle température dois-je afficher ? C’est donc la courbe inverse qui nous intéresse soit T°C(Vt) :

Caractéristique T(Vt) du capteur à tehrmistance
Caractéristique T(Vt) du capteur à thermistance

Si la tension mesurée est égale à 2,5V, c’est que la température est à 25°C. Si par exemple, la tension mesurée est à 3,5V, la température est alors de l’ordre de 7°C.

Modélisation

La question est la suivante : à partir de la mesure de la tension, comment mon Arduino va déterminer la température. Comment l’Arduino peut-il reconstituer la courbe Vt(T°C) ? Il nous faut modéliser cette courbe.

Modèle linéaire

Demandons à notre tableur de calculer une courbe de tendance qui approxime la caractéristique T(Vt). Sur LibreOffice : clic droit sur la courbe puis « Insérer une courbe de tendance ».

Caractéristique du capteur et modélisation par courbe de tendance linéaire
T(Vt) et courbe de tendance linéaire

L’équation fournie par le tableur est (avec arrondi) :

T(°C) = -20,1 Vt + 75,69

C’est l’équation d’une droite.

Facile maintenant pour l’Arduino de calculer la température avec cette formule magique. Mais la courbe linéaire ne « colle » pas parfaitement avec la courbe réelle. En analysant les résultats donnés par le tableur, on constate une erreur de température comprise entre -4°C et +2 °C. On ne respecte pas notre cahier des charges puisque nous voulions une erreur inférieure à 1°C !

Modèle du second degré

On demande maintenant à notre tableur de calculer une courbe de tendance polynomiale de degré 2.

Caractéristique du capteur et modélisation par courbe de tendance polynomiale de degré 2.
T(Vt) et courbe de tendance de degré 2

L’équation fournie par le tableur est :

T(°C) = -0,82.Vt2-15,22.Vt+69,4

C’est mieux mais l’équation ne colle pas encore parfaitement à la courbe. On constate une erreur comprise entre -2.6°C et + 2°C. On ne respecte toujours pas le cahier des charges ! Il faut trouver autre chose !

Modèle du troisième degré

On demande maintenant à notre tableur de calculer une courbe de tendance de degré 3.

Caractéristique du capteur et modélisation courbe de tendance de degré 3
T°C(Vt) et courbe de tendance de degré 3

T°C = -1,634.Vt3 + 13,66.Vt2 – 54.93.Vt +102,43

Le modèle colle maintenant parfaitement à la courbe.

On constate maintenant une erreur comprise entre -0,6°C et +0,5°C. Notre cahier des charges est respecté. Notre Arduino pourra maintenant calculer précisément la température en fonction de Vt.

Le programme

Le programme est réalisé à partir de l’exemple AnalogReadSerial. Voici un exemple d’implémentation avec le rendu sur le terminal :

Code arduino thermomètre  et visualisation mesure température
Code Arduino et visualisation sur terminal Arduino

Le TP complet

Comment on le fait alors notre thermomètre ? Le TP complet est disponible si dessous. Enjoy !

Fabriquer un thermomètre avec un Arduino et deux composants de fond de tiroir ? Précis au degré près ? Facile !

Et qui on est, hein ?