Cas d’un capteur résistif CTN

Une CTN est un capteur résistif à coefficient de température négatif

Courbe d’étalonnage

Les mesures sont effectuées avec un thermomètre et un ohmmètre.

T (°C)

R (Ohm)

2.4

25455

5.1

22714

10.0

18622

15.1

15201

20.0

12607

25.0

10475

30.0

8740

35.1

7333

40.0

6194

45.0

5217

50.0

4358

55.1

3689

60.0

3120

65.1

2647

70.1

2264

75.1

1926

80.0

1658

Téléchargement : data_ctn_1.txt (mesures au format CSV).

Courbe d’étalonnage d’une CTN 10k

Note

Dans cet exemple, la résistance mesurée prend la valeur particulière de 10 \({\rm k\Omega}\) pour 25°C !

Relation de Steinhart-Hart

Sur une grande plage de variation, la relation entre la température (en K) et la résistance de la CTN est :

\[\dfrac{1}{T} = A + B \times \ln(R) + C \times (\ln(R))^3\]

A, B et C sont les coefficients de Steinhart-Hart. Ils sont donnés par le constructeur ou peuvent se déterminer expérimentalement à l’aide du programme Python steinhart-hart.py à partir de trois points de la courbe d’étalonnage.

Résultats obtenus à partir du programme Python :

\[A = 1,144 \cdot 10^{-3}K^{-1} \qquad B=2,078\cdot10^{-3}K^{-1} \qquad C=3,610 \cdot 10^{-7}K^{-1}\]

Relation simplifiée de Steinhart-Hart

Sur une plage de variation plus réduite de la température, la relation de Steinhart-Hart permet d’écrire :

\[R \approx R_0 \times e^{\beta(\frac{1}{T}-\frac{1}{T_0})}\]
  • \({R_0}\) est la valeur de la résistance pour la température \({T_0}\).

  • \({\beta}\) est le coefficient de température (en K).

Ces coefficients sont généralement donnés par le constructeur (datasheet).

Module

Référence CTN

\(R_0~{\rm (k\Omega)}\)

\(\beta~{\rm (K)}\)

Grove - Temperature Sensor V1.2

NCP18WF104F03RC

\(100\)

\(4255~(25/80{\rm^\circ C})\)

Velleman VMA320

NTC-MF52 3950

\(10\)

\(3950\)

Note

Expression de la constante \(\beta\) à partir des températures \(T_0\) et \(T\) :

\[\beta = \dfrac{\ln(\dfrac{R}{R_0})}{\dfrac{1}{T}-\dfrac{1}{T_0}}\]

Les coefficients \({R_0}\) et \({\beta}\) peuvent être également déterminés par une modélisation de la caractéristique sur la plage de température d’utilisation de la CTN.

Modélisation de la caractéristique de la CTN de 25°C à 80°C

Résultat de la modélisation de \(T_0 = 25{\rm^\circ C}\) à \(80{\rm^\circ C}\) :

\[R_0 \approx 10,6~{\rm k\Omega} \qquad\text{et}\qquad \beta \approx 3440~{\rm K}\]

Inversement, le calcul de la température (en K) s’obtient à partir de la relation suivante :

\[\boxed{\dfrac{1}{T} = \dfrac{1}{\beta}\times\ln(\dfrac{R}{R_0})+\dfrac{1}{T_0}}\]

Programme 1 : mesure de la résistance de la CTN

La CTN est connectée à la masse (montage 1). L’entrée analogique A0 mesure la tension du capteur.

Mesure de la résistance d’une CTN sur l’entrée analogique A0

/*
*  Mesure de la résistance d'une CTN
*/

// Déclaration des variables pour la mesure de la résistance
float Vcc = 5.0;    // Tension d'alimentation
float R1 = 10000;   // Résistance du pont diviseur de tension
float U;            // Tension de la CTN en volt
float R_mes;        // Résistance mesurée de le CTN en Ohm



void setup() {
   Serial.begin(9600);  // Paramétrage du port série
}

void loop() {
   U = analogRead(A0)*Vcc/1023;   // Lecture tension en V
   R_mes = R1*U/(Vcc-U);          // Calcul de la résistance
   Serial.print("R = ");          // Affichage
   Serial.print(R_mes);           // Affichage
   Serial.println(" Ohm");         // Affichage + sout de ligne
   delay(1000);                   // Temporisation de 1s
}

Résultats dans le moniteur série d’Arduino IDE

Programme 2 : thermomètre numérique (application)

Mesure de la température donnée par une CTN sur l’entrée analogique A0

Rappel de relation simplifiée de Steinhart-Hart :

\[\dfrac{1}{T} = \dfrac{1}{\beta}\times\ln(\dfrac{R}{R_0})+\dfrac{1}{T_0}\]

avec pour notre CTN :

\[R_0 \approx 10,5~{\rm k\Omega} \qquad\text{et}\qquad \beta \approx 3290~{\rm K}\]
/*
* Mesure de la résistance d'une CTN et
* Calcul de la température à partir de la relation simplifiée de Steinhart-Hart
*/

// Déclaration des variables pour la mesure de la résistance
float Vcc = 5.0;    // Tension d'alimentation
float R1 = 10000;   // Résistance du pont diviseur de tension
float U;            // Tension CTN en volt
float R_mes;        // Résistance CTN en ohm

// Déclaration des variables pour la calcul de la température
float T0 = 25;      // Température de référence (25°C)
float R0 = 10600;   // Resistance R0 à T0 = 25°C
float beta = 3440;  // Coefficient de temperature en K
float inverse;      // Inverse de la temperature en K-1
float T_K;          // Temperature en K
float T;            // Temperature en °C


void setup() {
   Serial.begin(9600);  // Paramétrage du port série
}

void loop() {
   U = analogRead(A0)*5.0/1023;                      // Lecture de la tension en V
   R_mes = R1*U/(Vcc-U);                             // Calcul de la résistance mesurée
   Serial.print("R = ");                             // Affichage
   Serial.print(R_mes);                              // Affichage
   Serial.println("Ohm");                            // Affichage + retour à la ligne

   inverse = 1/beta * log(R_mes/R0) + 1/(T0+273.15); // Calcul de l'inverse de la temperature
   T_K = 1/inverse;                                  // Calcul de la température en Kelvin
   T = T_K - 273.15;                                 // Caclul de la température en °C
   Serial.print("T = ");                             // Affichage
   Serial.print(T);                                  // Affichage
   Serial.println("°C");                             // Affichage + retour à la ligne
   delay(1000);                                      // Pause
}

Résultats dans le moniteur série d’Arduino IDE