Aziz Bench

Calcul de thermistance CTN

De la température à la résistance et inversement avec l’équation Beta, plus le pont diviseur devant votre ADC : la lecture à chaque température, ce que vaut chaque pas en degrés et la résistance fixe adaptée à votre plage.

Résistance
5,3kΩ
à 40,0 °C · 0,53 × R25
Tension sur l’ADC
1,143 V
Lecture ADC
1 419
Par pas de l’ADC
0,027 °C
Lecture ADC en fonction de la température
02 0004 0000°20°40°60°80°100°
Thermistance
Ω
K

Dans la datasheet. B25/50 convient mieux autour de la température ambiante, B25/85 aux plages plus chaudes.

Calculer
Point de départ
°C
Pont diviseur et ADC
V
V

Identique à l’alimentation sur un Arduino Uno avec la référence par défaut. L’ADC de l’ESP32 a sa propre référence : si possible, utilisez des tensions calibrées.

Ω
Thermistance reliée à
Résolution de l’ADC
Plage de température
°C
°C

Sert pour le tableau, le graphique et la meilleure résistance fixe.

Meilleure résistance fixe

De 0 °C à 100 °C, le pont est le plus sensible au milieu de la plage avec 3,59 kΩ, la résistance de la thermistance à 50 °C. Valeur E24 la plus proche : 3,6 kΩ.

Lectures de 0 °C à 100 °C

TempératureRésistanceTensionADCPar pas
0 °C33,6 kΩ2,543 V3 1560,026 °C
10 °C20,2 kΩ2,206 V2 7380,022 °C
20 °C12,5 kΩ1,836 V2 2780,022 °C
30 °C8,04 kΩ1,470 V1 8250,023 °C
40 °C5,3 kΩ1,143 V1 4190,027 °C
50 °C3,59 kΩ0,871 V1 0810,033 °C
60 °C2,49 kΩ0,657 V8150,043 °C
70 °C1,76 kΩ0,494 V6130,057 °C
80 °C1,27 kΩ0,372 V4620,077 °C
90 °C934 Ω0,282 V3500,1 °C
100 °C698 Ω0,215 V2670,14 °C

À prendre en compte

Code

Arduino
// CTN 10 kΩ, B 3950, CTN vers GND
const float R_FIXED = 10000.0;  // résistance fixe, ohms
const float R25 = 10000.0;      // résistance de la CTN à 25 °C, ohms
const float BETA = 3950.0;
const float V_SUPPLY = 3.3;    // alimentation du pont, volts
const int PIN = 34;  // GPIO34

float readTempC() {
  long sum = 0;
  for (int i = 0; i < 16; i++) sum += analogReadMilliVolts(PIN);  // moyenne de 16 lectures
  float ratio = (sum / 16.0) / 1000.0 / V_SUPPLY;  // ESP32: calibrated millivolts, not raw counts
  if (ratio <= 0.0 || ratio >= 1.0) return NAN;          // en court-circuit ou déconnectée
  float r = R_FIXED * ratio / (1.0 - ratio);   // CTN vers GND
  return 1.0 / (1.0 / 298.15 + log(r / R25) / BETA) - 273.15;
}
ESPHome
sensor:
  - platform: adc
    id: ntc_voltage
    pin: GPIO34
    attenuation: 12db
    update_interval: 10s
  - platform: resistance
    id: ntc_resistance
    sensor: ntc_voltage
    configuration: DOWNSTREAM  # CTN vers GND
    resistor: 10kOhm
    reference_voltage: 3.3V
  - platform: ntc
    sensor: ntc_resistance
    name: Température
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 10kOhm
Texte brut, pour vos notes ou un message sur un forum.

L’équation Beta

La résistance d’une thermistance CTN baisse quand elle chauffe, de façon à peu près exponentielle. Les datasheets donnent sa résistance à 25 °C (R25) et une valeur B, qui décrivent ensemble la courbe :

R(T) = R25 × e^(B × (1/T − 1/298,15))
T = 1 ÷ (1/298,15 + ln(R ÷ R25) ÷ B) − 273,15
(T en kelvins : °C + 273,15)

Exemple : une thermistance de 10 kΩ B3950 à 50 °C. 1/323,15 − 1/298,15 = −0,00025948 ; × 3950 = −1,0249 ; e^−1,0249 = 0,3588 ; R = 10 kΩ × 0,3588 ≈ 3,59 kΩ.

B25/50 ou B25/85 ?

B se calcule à partir de la résistance à deux températures, et la datasheet précise lesquelles : B25/50 utilise 25 et 50 °C, B25/85 utilise 25 et 85 °C. Pour un même composant, les deux valeurs diffèrent légèrement : la NCP18XH103F03RB de Murata a un B25/50 de 3380 K et un B25/85 de 3434 K. Prenez celle dont la seconde température est la plus proche de celle où vous mesurez.

Choisir la résistance fixe

Dans un pont diviseur, la tension varie le plus vite avec la température quand la résistance fixe est égale à celle de la thermistance à cette température. Prenez donc pour résistance fixe la valeur de la thermistance au milieu de la plage qui vous intéresse : 10 kΩ pour une thermistance de 10 k autour de la température ambiante, environ 3,6 kΩ pour 0–100 °C (3,59 kΩ à 50 °C). Plus on s’éloigne du milieu, plus chaque pas de l’ADC couvre de degrés.

Le côté où se trouve la thermistance ne fait qu’inverser la courbe : thermistance vers GND, la tension baisse quand elle chauffe ; thermistance vers l’alimentation, elle monte.

Résistance d’une thermistance 10 kΩ B3950

TempératureRésistanceα
-20 °C105 kΩ-6,16 %/°C
-10 °C58,2 kΩ-5,7 %/°C
0 °C33,6 kΩ-5,29 %/°C
10 °C20,2 kΩ-4,93 %/°C
20 °C12,5 kΩ-4,6 %/°C
30 °C8,04 kΩ-4,3 %/°C
40 °C5,3 kΩ-4,03 %/°C
50 °C3,59 kΩ-3,78 %/°C
60 °C2,49 kΩ-3,56 %/°C
70 °C1,76 kΩ-3,35 %/°C
80 °C1,27 kΩ-3,17 %/°C
90 °C934 Ω-3 %/°C
100 °C698 Ω-2,84 %/°C
110 °C529 Ω-2,69 %/°C
120 °C407 Ω-2,56 %/°C

Calculée avec l’équation Beta, R25 = 10 kΩ, B = 3950 K. α est la variation de résistance par degré. Les composants réels suivent le tableau de leur datasheet, surtout loin de 25 °C.

Précision

Trois choses fixent en général l’erreur. La tolérance de la thermistance : ±1 % sur R25 représente environ ±0,26 °C autour de la température ambiante pour un composant à B 3380, car sa résistance y varie d’environ 3,8 % par degré. Le modèle : l’équation Beta est exacte à ses deux températures de référence et s’écarte de la courbe réelle au-delà ; sur une large plage, utilisez l’équation de Steinhart–Hart avec trois points de calibration. Et l’auto-échauffement : le courant du pont chauffe la thermistance, gardez-le donc faible, ou n’alimentez le pont que pendant la mesure.

Questions fréquentes

Que signifie B3950 sur une thermistance ?

C’est la valeur B, 3950 K : elle indique à quel point la résistance chute vite avec la température. Avec la résistance à 25 °C (10 kΩ pour une « 10k B3950 »), elle définit la courbe qu’utilise le calculateur. La datasheet précise entre quelles températures elle a été mesurée, par exemple 25/50 °C.

10 kΩ ou 100 kΩ ?

Prenez celle dont la résistance reste dans une plage que votre pont peut lire à vos températures. Une 10 kΩ convient pour la température ambiante, l’eau et le réfrigérateur. À 250 °C, une 10 kΩ B3950 descend à environ 34 Ω : c’est pourquoi les hotends d’imprimantes 3D utilisent des thermistances de 100 kΩ comme la Semitec 104GT-2, qui d’après l’équation Beta fait encore environ 500 Ω à 200 °C.

Quelle résistance fixe utiliser ?

La résistance de la thermistance au milieu de votre plage de température : le pont est alors le plus sensible là où vous mesurez. Le calculateur la déduit de la plage saisie et l’arrondit à une valeur normalisée.

CTN, CTP ou DS18B20 ?

Une CTN est bon marché, petite et rapide, mais demande un pont diviseur, un ADC et la formule. La résistance d’une thermistance CTP augmente avec la température, souvent brusquement à un point donné : les CTP servent donc surtout de fusibles réarmables et de protections contre la surchauffe plutôt que de capteurs. Le DS18B20 est un capteur numérique : pas de calibration et ±0,5 °C de −10 à +85 °C selon sa datasheet, mais il est plus lent et limité à −55…+125 °C.

Pourquoi mes mesures sont-elles fausses de quelques degrés ?

Vérifiez dans l’ordre : que R25 et B correspondent à votre composant ; la valeur réelle de la résistance fixe ; que le code suppose le même câblage (thermistance vers GND ou vers l’alimentation) ; que la référence de l’ADC est bien celle que le code attend ; et l’ADC lui-même. L’ADC de l’ESP32 n’est pas linéaire près de 0 V ni en haut de sa plage : gardez la tension du pont au milieu, ou utilisez des lectures calibrées.

Comment brancher une thermistance sur un ESP32 ou un Arduino ?

Une patte de la thermistance à GND, l’autre à une entrée analogique et, via la résistance fixe, au 3,3 V (5 V sur un Arduino en 5 V). Ajoutez un condensateur de 100 nF entre la broche et GND. Sur un ESP32, utilisez une broche de l’ADC1 comme GPIO34 : l’ADC2 n’est pas utilisable quand le Wi-Fi est actif.