2nde : Mesurer une température à l’aide d’une sonde Pt100 et d’un microcontrôleur.

Ressource proposée par : B. JAILLET

Démarche pédagogique choisie :

1ère étape : Étalonnage du capteur de température, la sonde Pt100.
  • mesure de la résistance de la sonde Pt100 lorsque sa température varie,
  • recherche d’un modèle mathématique R=f(T).
2ème étape : Utilisation du modèle pour programmer un système de mesure de température basé sur un microcontrôleur.
  • intégration du modèle mathématique dans le programme de mesure d’une température.
  • programmation du microcontrôleur avec affichage de la température.


Matériel nécessaire

  • Pour la première étape :
      • une sonde Pt100,
      • un agitateur magnétique chauffant,
      • un thermomètre,
      • un ohmmètre,
      • un logiciel tableur.
  • Pour la seconde étape :
      • la sonde Pt100 précédemment étalonnée,
      • un module d’amplification pour la sonde Pt100 : Exemple de maquette,
      • un microcontrôleur,
      • le logiciel de programmation du microcontrôleur.

Dans la suite de cet article, le microcontrôleur utilisé est une carte de type Arduino UNO. Le circuit d’amplification de la sonde Pt100 est un circuit MAX31865. Une bibliothèque est disponible pour ce module dans le logiciel Arduino. Cette bibliothèque a été modifiée pour ajouter une procédure “lecture_resistance()” qui permet d’accéder directement à la valeur de la résistance de la sonde Pt100 dans le programme.



Etape n°1 : Étalonnage de la sonde Pt100.

La sonde Pt100 est plongée dans un bécher d’eau placé sur un agitateur magnétique chauffant. Un thermomètre est plongé également dans l’eau. La température de l’eau augmente au cours de l’expérience. La résistance de la sonde Pt100 est mesurée à l’aide d’un ohmmètre. L’évolution de la résistance de la sonde est suivie en fonction de la température mesurée par le thermomètre.

image du montage expérimental

La courbe d’étalonnage obtenue est la suivante :

courbe d'étalonnage d'une sonde Pt100

La modélisation de la courbe d’étalonnage par une fonction affine donne le résultats suivant :

R = 0,378 T + 101,7

Etape n°2 : Programmation d’un système de mesure de température basé sur un microcontrôleur.

La sonde Pt100 étalonnée est reliée à un microcontrôleur par l’intermédiaire d’un circuit MAX31865. Ce circuit va permettre d’avoir accès directement à la valeur de la résistance de la sonde Pt100.

2.1 – En utilisant le langage Arduino.

Le programme  est très simple à rédiger :

#include <Adafruit_MAX31865.h>

Adafruit_MAX31865 mon_capteur = Adafruit_MAX31865(5, 6, 7, 8);

void setup() {
  Serial.begin(115200);
  mon_capteur.begin(MAX31865_2WIRE);
}

void loop() {
  float R = mon_capteur.lecture_resistance();
  float T=(R-101.7)/0.378;
  Serial.println(T);
}

A la ligne 3, mon_capteur est créé par un appel à la fonction Adafruit_MAX31865 avec quatre paramètres qui correspondent aux entrées/sorties numériques du microcontrôleur utilisées pour connecter le circuit MAX31865.

Dans la fonction setup(), on démarre la communication avec l’ordinateur sur le port série (USB) avec une vitesse de 115200 bauds. L’objet mon_capteur est initialisé comme utilisant une sonde Pt100 à 2 fils.

Le programme principal tournant dans la fonction loop() commence à la ligne 11 par créer un nombre flottant R qui stocke la valeur renvoyée par l’appel à la procédure lecture_resistance() sur mon_capteur. A la ligne 12, la valeur de la température est calculée à l’aide du modèle mathématique obtenue lors de l’étalonnage du capteur. La valeur obtenue de T est enfin envoyée sur le port série de l’ordinateur à la ligne 13.

La valeur de la température peut être visualisée dans le logiciel Arduino soit sur le moniteur série (menu Outils > Moniteur série) soit sous forme d’une représentation graphique dans le traceur série (menu Outils > Traceur série).

2.2 – En utilisant le langage Python.

En langage Python, le programme est tout aussi simple à écrire :

from microcontroleurs import arduino
import time

ma_carte = arduino("COM5")

for i in range(10):
    R=ma_carte.resistance_pt100(5,6,7,8)
    T=(R-101.7)/0.378
    print(T)
    time.sleep(1)

ma_carte.fermer()

Pour ce programme nous utilisons le module microcontroleurs.py présenté sur cette page de notre site. Il est enregistré dans le même répertoire que le programme ci-dessus. Le programme microcontroleur.ino présenté sur la même page a été chargé dans le microcontrôleur.

Les lignes 1 et 2 permettent d’importer les modules utiles.  La ligne 4 permet permet de créer l’objet ma_carte en tant qu’objet arduino connecté sur le port COM5 de l’ordinateur.

A la ligne 6 démarre une boucle qui va s’exécuter 10 fois et au cours de laquelle la valeur de la résistance de la Pt100 va être mesurée et stockée dans la variable R (ligne 7), la température va être calculée à l’aide du résultat de la modélisation de la courbe d’étalonnage (ligne 8) puis afficher dans la console sans aucune mise en forme  (ligne 9). Une pause d’une seconde est imposée à chaque itération de la boucle (ligne 10).

La communication avec le port série est fermée en ligne 12.

Câblage.

 

On utilise les connexions suivantes :

Microcontrôleur 5V GND 5 6 7 8
MAX31865 Vin GND CS SDI SDO CLK

Dans le cas de l’utilsation d’un shield, deux câbles seront nécessaires :

      • Un câble 4 fils relié au port D7 permettra les connexions Vin, GND, SDO et CLK,
      • Un câble 2 fils relié au port D5 permettra les connexions CS et SDI.

 

Propositions d’activité expérimentale :

TP mesure d’une température avec une sonde Pt100 (version Arduino)
TP mesure d’une température avec une sonde Pt100 (version Python)