2nde : Mesurer une température à l’aide d’une CTN 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 CTN.
  • mesure de la résistance de la CTN lorsque sa température varie,
  • Le capteur n’étant pas linéaire, son utilisation dans un pont diviseur de tension permet d’obtenir un capteur de température dont la caractéristique en tension U=f(T) peut être linéarisée sur une plage de température.
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 CTN 10kΩ,
      • un agitateur magnétique chauffant,
      • un thermomètre,
      • un ohmmètre,
      • un logiciel tableur/grapheur,
      • une résistance de 10kΩ (1%).
  • Pour la seconde étape :
      • le pont diviseur précédemment étalonné : Exemple de maquette,
      • un microcontrôleur,
      • le logiciel de programmation du microcontrôleur.

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

La CTN 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 CTN est mesurée à l’aide d’un ohmmètre. L’évolution de sa résistance est suivie en fonction de la température mesurée par le thermomètre.

La courbe d’étalonnage obtenue est la suivante :

 

Cette courbe d’étalonnage montre que la CTN n’est pas un capteur linéaire de température. Sa caractéristique n’est pas modélisable par un élève de seconde.  Nous allons donc associer la CTN en série avec un conducteur ohmique de résistance r=10 kΩ. La tension aux bornes de ce conducteur ohmique, noté Ur, peut être calculée dans le tableur à l’aide de la relation :

Ur = ( r / (RCTN + r)) x U

La tension U est la tension appliquée aux bornes du pont diviseur de tension. Elle est égale à 5V. C’est le microcontrôleur qui servira de générateur dans la suite des expériences. Les résultats des calculs sont affichés dans la fenêtre de tableur ci-contre.

La courbe Ur = f(T) est tracée :

 

Il est maintenant possible de considérer que le pont diviseur de tension ainsi fabriqué constitue un capteur de température dont la caractéristique Ur=f(T) est linéaire pour des températures comprises entre 0 et 40°C. Il est alors possible de modéliser la caractéristique avec un modèle affine :

Ur = 52,8×10-3 T + 1,19

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

2.1 – En utilisant le langage Arduino.

La tension Ur va être mesurée à l’aide de l’entrée analogique A0 du microcontrôleur. Elle est associée à un convertisseur analogique/numérique 10 bits travaillant sur une plage de tension par défaut de 0 à 5V. La tension maximale de 5 V est donc associée à la valeur maximale d’un nombre codé sur 10 bits soit 1023. Par proportionnalité, il est possible de calculer la valeur de la tension Ur à partir du nombre noté EAO fourni par le convertisseur analogique/numérique à l’aide de la relation :

Ur = 5xEA0/1023

La valeur de la température peut ensuite être calculée à l’aide du modèle mathématique issu de l’étape 1 :

T = ( Ur – 1,19 )/52,8×10-3

Le programme en langage Arduino peut alors s’écrire de la manière suivante :

float EA0;
float Ur;
float T;

void setup() {
  Serial.begin(9600);
}

void loop() {
    EA0 = analogRead(A0);
    Ur=5*EA0/1023;
    T=(Ur-1.19)/52.8E-3;
    Serial.println(T);
    delay(1000);
}

Dans les trois premières ligne sont déclarées trois variables utiles aux calculs (trois nombres flottants).

A la ligne 6, dans la fonction setup(), le port série permettant la communication entre le microcontrôleur et l’ordinateur est initialisé avec une vitesse 9600 bauds.

Dans la fonction loop(), la première ligne permet de stocker la valeur envoyée par convertisseur analogique/numérique associé à l’entrée A0 du microcontrôleur. Cette valeur est utilisée à la ligne suivante (ligne 11) pour calculer la valeur de la tension Ur qui est à son tour utilisée à la ligne 12 pour calculer la valeur de la température T.

La valeur de T est ensuite envoyée sur le port série pour être accessible dans le moniteur série du langage Arduino (accessible depuis le menu “Outils > Moniteur série”). Attention, la vitesse du moniteur doit être réglée sur 9600 bauds.

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):
    EA0=ma_carte.entree_analogique(0)
    Ur=5*EA0/1023
    T=(Ur-1.19)/52.8E-3
    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.

Après l’importation des deux modules utiles dans le programme, le premier pour pouvoir communiquer avec le microcontrôleur et le second pour gérer le temps, l’objet “ma_carte” est créé et communique avec l’ordinateur sur le port “COM5”. La ligne 7 permet de lire le nombre EA0 envoyé par le convertisseur analogique/numérique de l’entrée analogique A0 du microcontrôleur. Ce nombre est utilisé à la ligne 8 pour calculer la valeur de la tension Ur aux bornes du conducteur ohmique r.  Il est alors possible de calculer la valeur de la température T à la ligne 9. Cette valeur est affichée dans la console (ligne 10).

Câblage.

Dans le cas de l’utilisation d’un shield, un seul câble est nécessaire. Seuls 3 des 4 fils seront utilisés. Le fil blanc ne sera pas utilisé et pourra être mis à la masse.

Propositions d’activité expérimentale :

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