Mesure d’une température avec une thermistance HXJ-14

Une thermistance est une résistance dont la valeur varie avec la température. On trouve deux types de thermistance :

  • CTN (Coefficient de Température Négatif) dont la résistance varie en sens inverse de la température
  • CTP (Coefficient de Température Positif) dont la résistance varie dans le même sens que la température

CTN_CTP
À la vue de ces caractéristiques, on comprend pourquoi on préfère utiliser une CTN. Néanmoins, un étalonnage sera nécessaire. Lorsqu’on souhaite une mesure très précise, on va utiliser des résistance de platine (PT100 ou PT1000) dont la précision est excellente (+/- 0.01°C).

Cet article met en œuvre une CTN (module HXJ-14 de la boîte) montée en pont diviseur selon le schéma suivant :

Il est important de mettre la CTN en tête du pont de façon à ce que la tension Vout varie comme la température. La résistance de pied du pont doit être assez élevée (environ 10K) pour que le courant traversant le pont ne réchauffe pas la CTN par effet Joule.

HXJ-14
Le programme suivant réalise une mesure toutes les secondes et converti la mesure brute (entre 0 et 1024) en température Celsius. La formule de conversion a été obtenue à partir de 2 mesures brutes associées à 2 températures connues (27°C et 34°C) et en linéarisant la caractéristiques autour de 27°C.

/***
 *  Auteur:   Jean DEMARTINI
 *  Date:     15/07/2015
 *
 *  HXJ-14 - NTC type : TDK S869
 *
 *  +-------------+
 *  | +--(NTC)--+ |
 *  | | +-(10K)-+ |
 *  +-|-|-------|-+
 *    1 2       3
 *
 *  1: Vcc (3.3V)
 *  2: GND
 *  3: Vout
 ***/
 
int   VoutPin = A0;
int   Vout;
 
 /*** 
  * conversion mesure brute vers °C 
  *     465 > 27°C
  *     495 > 34°C
  ***/
float 
convert(int i) {
    float t;
   
    t = (float)(Vout - 465)/(float)(495 - 465)*7.0 + 27.0;
    return t;
 }
 
 void
 setup(){
    Serial.begin(115200);
    Serial.println("S869 TEST PROGRAM ");
 }
 
 void
 loop(){
    Vout = analogRead(VoutPin);
    Serial.print(Vout);
    Serial.print("\t");
    Serial.print(convert(Vout));
    Serial.println(" Celsius");
    delay(1000);
 }

Ce qui donne avec le moniteur série :

Capture du 2015-07-23 17:50:29