” Mesure de températures avec une
thermistance CTN ”
. Objectif
Pour mesurer une température avec une thermistance CTN, il faut connaitre ses grandeurs caractéristiques. Le plus souvent, le constructeur fourni les valeurs suivantes :
– La valeur de sa résistance R0 (résistance nominale en Ω) à la température de référence T0 = 25 °C (298,15 K)
– La valeur de β (en K)
– La plage de température pour laquelle la relation entre la température T (en K) et RT, la résistance (en ohms) de la CTN à cette température, est vérifiée :
Par exemple, le capteur de température Groove est basé sur une thermistance CTN :
Le constructeur donne les informations suivantes :
. Voltage : 3.3 ~ 5V
. Zero power resistance : 100 KΩ
. Resistance Tolerance : ±1%
. Operating temperature range : -40 ~ +125 ℃
. Nominal B-Constant: 4250 ~ 4299K
En l’absence de ces grandeurs caractéristiques, il faut procéder à un étalonnage (cf. activité précédente), afin de les déterminer expérimentalement.
L’objectif de l’activité est d’écrire un programme généraliste permettant de mesurer une température avec une thermistance CTN quelconque, avec ce montage :
Le code demande, à l’initialisation du programme, de renseigner les valeurs de T0, R0 et β afin de pouvoir calculer la température à partir de la mesure de la résistance de la CTN.
. Le programme
Voici le code de l’activité :
Déroulement du programme :
– 1. Inclusion des librairies
Pour effectuer les calculs de température, le code nécessite l’importation de la librairie ”math.h”.
– 2. Déclaration des constantes et variables :
. const int PinCTN = 5 (constante nombre entier correspondant à la broche de la CTN)
. const int PinButton = 12 (constante nombre entier correspondant à la broche du bouton poussoir)
. int ValCTN = 0 (variable nombre entier pour stocker la valeur de la broche de la CTN)
. float Temp = 0.0 (variable nombre décimal pour stocker la valeur de la température)
. float OldTemp = 0.0 (variable nombre décimal pour stocker la valeur précédente de la température)
. float Rt = 0.0 (variable nombre décimal pour stocker la valeur de la résistance de la CTN)
. float Vctn = 0.0 (variable nombre décimal pour stocker la valeur de la tension de la broche de la CTN)
. int TempRef = 0 (variable nombre entier pour stocker la valeur de la température de référence)
.long Ro = 0 (variable nombre entier long pour stocker la valeur de la résistance de la CTN à la température de référence)
. int B = 0 (variable nombre entier pour stocker la valeur de la constante β)
. int ValButton = 0 (variable nombre entier pour stocker la valeur de la broche bouton poussoir)
. int OldValButton = 0 (variable nombre entier pour stocker la valeur précédente de la broche du bouton poussoir)
. int State = 0 (variable nombre entier correspondant à l’action à effectuer)
. int OldState = 0 (variable nombre entier correspondant à l’action effectuée précédemment)
– 2. Initialisation des entrées et sorties :
. Initialisation de la liaison série à un débit de 9600 bauds,
. Initialisation de la broche du bouton poussoir en entrée,
. Saisie des valeurs de T0, R0 et β afin de pouvoir calculer la température à partir de la mesure de la résistance de la CTN.
Remarque :
La fonction ”parseInt()” de la classe ”Serial” retourne le premier entier long du tampon de la liaison série. Les caractères lettres ou le signe ”‐” sont ignorés. Au‐delà, d’un certain temps (par défaut, 1 s), la fonction se termine et retourne ”0” si le tampon est vide ou ne contient pas de nombre.
– 3. Fonction principale en boucle :
. Début des mesures en appuyant sur le bouton poussoir :
–>Lecture de la valeur de la broche de la CTN
–> Calcul de la résistance de la CTN
–> Calcul de la température
–> Affichage de la valeur de la résistance et de la température dans le moniteur série si la valeur de la température est différente de celle mesurée précédemment
. Fin des mesures en appuyant de nouveau sur le bouton poussoir
Résultats dans le moniteur série :