Capteur de température, module Grove thermistance
Ce tutoriel explique comment mettre en œuvre un module capteur de température Grove v1.2 avec MicroPython. Ce module est constitué d’une thermistance à coefficient de température négatif de type NCP18WF104F03RC dont vous trouverez la fiche technique ici.
Le module Grove Temperature Sensor v1.2 :
Crédit image : Seeed Studio
Un tutoriel plus général sur les thermistances est déjà disponible sur notre site, ici, vous trouverez également une vidéo à ce propos ici.
Matériel requis et montage
- Une carte d’extension de base Grove avec son commutateur positionné sur 3.3V.
- La carte NUCLEO-WB55
- Un module Grove - Temperature Sensor v1.2
Connectez le capteur sur une broche analogique, dans notre exemple la prise A0.
Le code MicroPython
Vous pouvez télécharger les scripts MicroPython de ce tutoriel (entre autres) en cliquant ici.
Créez un fichier main.py dans PYBFLASH et copiez-collez dans celui-ci le code qui suit :
"""
Mesure de température à partir d'une thermistance d'un module Grove Temperature sensor V1.2 relié à l'entrée A0
L'ADC interne fonctionnant sur 3.3V, le capteur doit être alimenté en 3.3V sur la carte d'adaptation Grove.
Rappel: La valeur d'une thermistance CTN obéit à la relation R=R0 x exponentielle (B( 1/T -1/298))
avec B = 4275 Kelvins R0 = 100 KOhm et T en Kelvins = T en °C + 273
La tension U du capteur est reliée à A0 = 3.3V x R1 /( R1+R) avec R1=100K=R0
En déduire U en fonction de R0 puis T en °C:
U= 3.3 / (1 + exponentielle (B( 1/T -1/298)))
T= 1 / ((ln(3.3/U -1)/B)+1/298)
Voir https://wiki.seeedstudio.com/Grove-Temperature_Sensor_V1.2/#reference
Source : F HERGNIOT, Lycée Algoud-Laffemas, Valence
"""
from time import sleep_ms # Pour temporiser
from pyb import Pin, ADC # Pilotes des broches et de l'ADC
from math import log # Fonction logarithme (népérien)
adc_A0 = ADC('A0') # Initialisation de l'ADC sur l'entrée A0
print("Mesure de temperature à partir d'une thermistance Grove sensor V1.2")
VREF = const(3.3) # Tension de référence de l'ADC
RESOLUTION = const(4096) # Résolution e l'ADC
# Règle de 3 pour déduire la tension aux bornes de la thermistance à partir de la
# valeur convertie de l'ADC
quantum = VREF/RESOLUTION
def get_temperature_CTN_v12():
B = const(4275) # coeff B de la thermistance
R0 = const(100000) # R0 = 100k x correctif précision avec vraie mesure
N = adc_A0.read() # Conversion de 12 bits - 4096 valeurs de 0 à 3.3V
U = N * quantum # On déduit la tension de la valeur convertie de l'ADC
temp = 1.0/(log((3.3/U) -1)/B+1/298)-273 # Calcule la température à partir de la tension
return temp
def demo():
while True:
temperature = get_temperature_CTN_v12()
# Affiche la température sous forme de flottant xx,x
print("La valeur de la temperature est : %.1f °C" %temperature)
sleep_ms(1000)
if __name__ == '__main__':
demo()
Affichage sur le terminal série
Assurez-vous que le commutateur d’alimentation électrique du Grove base shield est bien positionné sur 3.3V. Appuyez sur [CTRL]-[D] dans le terminal série connecté à la NUCLEO-WB55. Une série de valeurs sera affichée dans le terminal :
La précision du ce capteur est étonnante : 22.7 - 22.8°C selon lui, à comparer à 22.7°C selon un système de mesure Velleman DEM500 !