Capteurs - Température
[Mise à jour le 28/6/2024]
1. Généralités
La température est une grandeur physique mesurée à l’aide d’un thermomètre et étudiée en thermométrie. Dans la vie courante, elle est reliée aux sensations de froid et de chaud, provenant du transfert thermique entre le corps humain et son environnement.
En physique, elle se définit de plusieurs manières : comme fonction croissante du degré d’agitation thermique des particules (en théorie cinétique des gaz), par l’équilibre des transferts thermiques entre plusieurs systèmes ou à partir de l’entropie (en thermodynamique et en physique statistique).
La température est une variable importante dans d’autres disciplines : météorologie et climatologie, médecine, et chimie.
- Ressource à consulter sur Wikiversité : Capteur de température
- Tableau comparatif des capteurs Groove
- Fichier Excel à télécharger ici
2. Capteurs analogiques
2.1 Thermistance
- Généralités
Résistance électrique dont la valeur varie rapidement en fonction de la température.
- CTN
Les CTN (Coefficient de Température Négatif, en anglais NTC, Negative Temperature Coefficient) sont des thermistances dont la résistance diminue de façon uniforme quand la température augmente. Leur modèle est donné ci-dessous.
- CTP
Les CTP (Coefficient de Température Positif, en anglais PTC, Positive Temperature Coefficient) sont des thermistances dont la résistance augmente avec la température. On distingue les thermorésistances (augmentation continue et régulière de la résistance avec la température, voir ci-dessus) des CTP dont la valeur augmente fortement avec la température dans une plage de température limitée (typiquement entre 0 °C et 100 °C).
2.2 CTN 10k
2.2.1 Présentation
- Distributeur : Gotronic
- Caractéristiques
- Résistance à 25°C : 10 kΩ
- Puissance: 0.25 W.
- Tolérance: ±10%.
- B=4300.
- Documentation
- Fichier Acrobat Reader à télécharger ici
- Modèle
- Résistance à 25°C : 10 kΩ
- B=4300.
- Tolérance: ±10%.
- Aide pour la simulation de la chaîne de mesure
- Algorithme
- L'algorithme T=f(N) donnant la température en fonction de la sortie du convertisseur analogique / numérique est téléchargeable ici
2.2.2 Exemples de code
- Connexion à un shield Tinkerkit v2 monté sur une Arduino Uno.
- Exemple pour tester le capteur
- ctn.cpp
/* Mesure de la température ambiante avec une CTN Bibliothèque math.h : https://www.arduino.cc/en/math/h */ // Constantes //------------------------------------------------------ // CTN const int Beta = 4300; // Kelvin const float T0 = 298.15; // Kelvin (25°C) const int R0 = 10000; // Résistance du capteur à 25°C // Diviseur de tension const int Vcc = 5; // Volt const int R1 = 12000; // Ohm // CAN const int n = 10; const int VPE = 5; // Variables //------------------------------------------------------ int CTN = A0; // La CTN et son conditionneur sont connectés sur la broche A0 int N = 0; // Image de la température, sortie du CAN double temperature = 0.0; // Résultat du calcul de la température : temperature=f(N) // Coefficient du CAN float kcan = pow(2, n) / VPE; // Coefficients utilisés pour simplifier le calcul de la température // k0, a double k0 = kcan * Vcc * R1; double a = R0 / exp(Beta / T0); // k1, k2 double k1 = k0 / a; double k2 = R1 / a; //------------------------------------------------------ void setup() { Serial.begin(9600); // Fenêtre "serial" pour la mise au point } //------------------------------------------------------ void loop() { N = analogRead(CTN); temperature = Beta / log((k1 / N) - k2) - 273.15; Serial.println(temperature); }
2.3 Module SEN23292P
2.3.1 Présentation
- Source : wiki seeed studio
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 5 Vcc
- Plage de mesure: -40 à +125 °C
- Précision: 1,5 °C
- Dimensions: 20 x 20 x 13 mm
- Modèle
- PDF à télécharger ici
- Aide pour la simulation de la chaîne de mesure
- Algorithme
- L'algorithme T=f(N) donnant la température en fonction de la sortie du convertisseur analogique / numérique est téléchargeable ici
2.3.2 Exemples de code
- Connexion à un shield Tinkerkit v2 monté sur une Arduino Uno.
- Exemple pour tester le capteur
A venir
3. Capteurs intégrés
3.1 LM35
3.1.1 Présentation
- Source : wiki DFROBOT
- Distributeur : Gotronic
- Caractéristiques
- Alimentation : 4 à 30 V
- Plage de mesure : -55 / +150°C
- Sensibilité : 10mV/°C
- Précision : +/-0,5°C (à 25°C)
- Boîtier : TO92
- Documentation
- PDF à télécharger ici
- Modèle
- Sensibilité : 10mV/°C
- Aide pour la simulation de la chaîne de mesure
- Le modèle à simuler est téléchargeable ici
3.1.2 Exemples de code
- Connexion à un shield Tinkerkit v2 monté sur une Arduino Uno
- Exemple pour tester le capteur
- lm35.cpp
void setup() { Serial.begin(9600); // Débit binaire : 9600 bps } void loop() { uint16_t N; double temperature; // Lecture N=analogRead(A0);//LM35 connecté à Analog 0 // Traitement temperature = (double) N * (5/10.24); // Ecriture Serial.print("Température:"); // Affiche la température sur le moniteur Serial.print(temperature); Serial.println("C"); delay(1000); }
Pour aller plus loin
Mesurer une température négative (Télécharger)
3.2 MM111
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 5 Vcc
- Plage de mesure: -50 à +150 °C
- Sensibilité: 21 mV/°C
- Précision: 0,4 °C
- Dimensions: 22 x 22 x 5 mm
- Documentation
- PDF à télécharger ici
4. Capteurs numériques
4.1 MLX90614
4.1.1 Présentation
- Sources
- wiki DFROBOT
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 3,3 à 5 Vcc
- Consommation: 1,2 mA
- Plage de mesure: -70 à 382 °C
- Résolution: 0.01 °C
- Interface I2C (SMBus) : SLA = 0x5A
- Dimensions: 32 x 18 mm
- Schéma-blocs
- DSP : processeur du signal numérique
- Principe de fonctionnement
- Rayonnement Infrarouge (IR) : Tout objet émet un rayonnement infrarouge proportionnel à sa température. Le MLX90614 capte ce rayonnement.
- Détecteur Thermopile : Le module du capteur MLX90614 comprend un détecteur thermopile infrarouge. Ce détecteur collecte le rayonnement infrarouge dans son champ de vision.
- Conversion en Signal Numérique : Le signal électrique généré par le thermopile est converti en un signal numérique par l’unité de traitement du signal DSP (Digital Signal Processing).
- Communication I2C : Le capteur transmet ensuite ces lectures de température via le bus I2C au microcontrôleur.
- Chronogrammes
- Relevé des signaux du bus I2C faite lors d'une mesure : TA=19,55°C et Tobj1=-13,73°C. A télécharger ici.
4.1.2 Bibliothèques
- Bibliothèque à installer dans l'IDE Arduino
4.1.3 Exemples de code
- Ressources
- wiki DFROBOT
- Fiche guide pour l'étude d'une chaîne d'information comprenant un MLX90614 [Télécharger]
- Connexion à un shield Tinkerkit v2 monté sur une Arduino Uno
- Exemple de l'IDE Arduino pour tester le capteur
Dans l'IDE Arduino, sélectionner : Fichier → Exemples → Adafruit MLX90614 Library → mlxtest
- Résultats dans la console
4.2 TMP102
4.2.1 Présentation
- Source : wiki Sparkfun
- Distributeur : Mouser
- Caractéristiques
- Alimentation: 1,4 à 3,6 Vcc
- Consommation: 10 µA maxi (1 µA en veille)
- Plage de mesure: -40 °C à +125 °C
- Précision: 0,5 °C (de -25 °C à +85 °C)
- Résolution: 12bits, 0,0625 °C
- Interface I2C : SLA = 0x48
- Dimensions: 16 x 16 mm
- Documentation
- PDF à télécharger : Datasheet Résumé Datasheet
- Schéma à télécharger ici
4.2.2 Bibliothèques
- Bibliothèque à installer dans l'IDE Arduino
4.2.3 Exemples de code
- Connexion à un shield Tinkerkit v2 monté sur une Arduino Uno.
- Exemple de l'IDE pour tester le capteur
Dans l'IDE Arduino, sélectionner : Fichiers → Exemple → SparkFun_TMP102_Breakout → Example1_Basic_Temperatue_Readings
- Résultat dans la console
4.3 TMP117
4.3.1 Présentation
- Source : wiki Sparkfun
- Distributeur : Mouser
- Caractéristiques
- Alimentation: 1,8 à 5,5 Vcc (3,3V avec câble Qwiic)
- Consommation: 3,5 µA maxi (150 nA en veille)
- Plage de mesure: -55 °C à +150 °C
- Précision: 0,1 °C (de -20 °C à +50 °C)
- Résolution: 16bits, 0,0078125 °C
- Interface série I2C : SLA = 0x48
- Schéma-blocs
- Chronogrammes
- Relevés des signaux du bus I2C : T=18,32°C (Tektronix MSO2012) et T=20°C (Analyseur IKALogic). A télécharger ici.
4.3.2 Bibliothèques
- Bibliothèques à installer dans l'IDE Arduino
ou
- GitHub
4.3.3 Exemples de code
- Ressources
- Fiche guide pour l'étude d'une chaîne d'information comprenant un TMP117 [Télécharger]
- Connexion à une Base Shield V2 montée sur une Arduino Uno
- Exemples de l'IDE Arduino pour tester le capteur. Dans l'IDE Arduino, sélectionner :
- Adafruit : Fichier → Exemples → Adafruit TMP117 → basic_test
- SparkFun : Fichier → Exemples → SparkFun High Precision Temperature Sensor TMP117 Qwiic → Example1_BasicReadings
- Un premier exemple pour tester le capteur avec l'IDE Arduino
→ Fichier → Exemples → SparkFun_High_Precision_Temperature_Sensor_TMP117_Qwiic → Example1_Basic_Readings.ino
- Mise en oeuvre avec un afficheur OLED
- Description : mesure de la température à l'aide d'un capteur Sparkfun TMP117, test des boutons-poussoirs et affichage sur un écran Oled Adafruit SH1107. L'écran et le capteur sont reliés via le système Qwiic de Sparkfun.
- Matériels
- Carte à microcontrôleur : Adafruit Feather Huzzah ESP8266 + Support Particle
- Afficheur : Adafruit OLED SH1107
- Capteur de température : Sparkfun TMP117
- Bibliothèques à installer dans l'IDE Arduino ou dans PlatformIO (VSCode)
- Code
- *.cpp
// Matériels : Adafruit Feather Huzzah ESP8266 + Support Particle, Adafruit OLED SH1107, Sparkfun TMP117, câble Qwiic // Logiciel : Arduino // A ajouter #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SH110X.h> #include <SparkFun_TMP117.h> #define BUTTON_A 0 #define BUTTON_B 16 #define BUTTON_C 2 // Constructeurs Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire); TMP117 sensor; // L'adresse du circuit TMP117 est 0x48 = (GND) par défaut void setup() { // Bus I2C Wire.begin(); // Initialisation Wire.setClock(400000); display.begin(0x3C, true); // L'addresse de l'afficheur est 0x3C par défaut // Configuration de l'affichage display.setRotation(1); // Affichage horizontal display.setTextSize(1); display.setTextColor(SH110X_WHITE); display.clearDisplay(); // Pour ne pas afficher le logo Adafruit chargé // automatiquement à la mise sous tension // Test de la communication avec le capteur if (sensor.begin() == false) { display.println("DEFAUT(s)"); display.print("1. Le capteur TMP117 ne repond pas ! "); display.println(); display.print("BLOCAGE du PROGRAMME"); display.display(); // Transfert du buffer sur l'écran while (1) delay(10); // Blocage du programme } // Connexion des boutons-poussoirs pinMode(BUTTON_A, INPUT_PULLUP); pinMode(BUTTON_B, INPUT_PULLUP); pinMode(BUTTON_C, INPUT_PULLUP); } void loop() { // Efface le buffer display.clearDisplay(); // Test des boutons display.setCursor(0, 0); if (!digitalRead(BUTTON_A)) display.print("[A]"); if (!digitalRead(BUTTON_B)) display.print("[B]"); if (!digitalRead(BUTTON_C)) display.print("[C]"); // Titre display.setCursor(20, 0); display.println("Sparkfun TMP117"); // Mesure et affichage // Data Ready est un indicateur de mode de conversion - en conversion continue, l'indicateur dataReady doit toujours être haut if (sensor.dataReady() == true) // Affiche les valeurs de température que lorsque les données sont prêtes { display.setCursor(0, 12); display.print("Temp : "); display.print(sensor.readTempC(), 1); display.print("C"); delay(500); display.display(); // Transfert du buffer sur l'écran } delay(10); }
4.4 MR312
- Distributeur : GoTronic
A terminer
4.5 DS18B20
4.5.1 Présentation
- Source : Guide de mise en marche du module ST029 pdf
- Distributeur : GoTronic
- Caractéristiques
- Alimentation : 3 à 5,5 V
- Plage de température : -55 à +125 °C
- Précision : +/- 0,5 °C (entre -10 et 85 °C)
- Communication : 1-Wire
- Résolution : 9 à 12 Bits
- Dimensions: 23 x 21 x 10 mm
- Schéma-blocs
- Documentation
- Chronogrammes
- Relevé des signaux du bus One Wire de Dallas faite lors d'une mesure. A télécharger ici.
4.5.2 Bibliothèques
- Bibliothèques à installer dans l'IDE Arduino
4.5.3 Exemples de code
- Ressource : document pdf
- Exemple de l'IDE Arduino pour tester le capteur
Dans l'IDE Arduino, sélectionner : Fichier → Exemples → DallasTemperature → Simple
5 Thermique
5.1 AMG8833
5.1.1 Présentation
- Source : wiki seeed studio
- Distributeur : Gotronic
- Caractéristiques
- Alimentation: 3,3 ou 5 Vcc
- Résolution: 8 x 8 pixels
- Plage de mesure: 0 à 80 °C
- Précision: ± 2,5 °C
- Portée: ± 7 m
- Angle de vision: 60°
- Interface I2C : SLA = 0x68 par défaut (0x69 via un pont à souder)
- Documentation
- PDF du datasheet AMG8833 à télécharger ici
5.1.2 Bibliothèques
- Bibliothèque à télécharger et à installer dans l'IDE : Seeed_AMG8833
5.1.3 Exemples de code
- Exemple de l'IDE Arduino pour tester le capteur
Dans l'IDE Arduino, sélectionner : Fichier → Exemples → Grove IR Matrix Temperature sensor AMG8833 → basic_demo - Résultat dans la console
- Mise en oeuvre du capteur avec un afficheur OLED
- Ressource : wiki seeed studio
- Matériels
- Carte à microcontrôleur : ESP8266 Feather Huzzah