Skip to Content

Tutoriel capteur de température analogique TMP36 avec Arduino

Tutoriel capteur de température analogique TMP36 avec Arduino

Dans ce tutoriel, vous apprendrez à utiliser un TMP36 capteur de température analogique avec Arduino. J’ai inclus un schéma de câblage et plusieurs exemples de code pour vous aider à démarrer !

Dans la première partie de cet article, vous trouverez les spécifications et informations sur les capteurs TMP35, TMP36 et TMP37. Ensuite, nous verrons comment connecter le capteur à l’Arduino.

Le premier exemple de code permet de prendre des mesures de température avec le capteur et d’afficher les résultats dans le Moniteur Série. Dans le second exemple, je vous montrerai comment afficher la température sur un écran LCD I2C pour créer un thermomètre autonome.

Fournitures

Composants matériels

TMP36 analog temperature sensor (TO-92) × 1 Amazon
Arduino Uno × 1 Amazon
Breadboard × 1 Amazon
Jumper wires ~ 10 Amazon
16×2 character I2C LCD × 1 Amazon
USB cable type A/B × 1 Amazon

Logiciel

Arduino IDEArduino IDE

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

À propos des capteurs de température analogiques TMP35/TMP36/TMP37

Les TMP35/TMP36/TMP37 sont des capteurs de température centigrade de précision à basse tension fabriqués par Analog Devices. Ils fournissent une sortie en tension proportionnelle linéairement à la température en degrés Celsius (°C) et sont donc très faciles à utiliser avec Arduino. De plus, ils sont précis, ne s’usent jamais et sont très abordables !

Les capteurs TMP35/TMP36/TMP37 ne nécessitent aucune calibration externe pour offrir une précision typique de ±1°C à +25°C et ±2°C sur la plage de température de −40°C à +125°C.

La différence entre le TMP35, TMP36 et TMP37 réside dans leur plage de fonctionnement et leur facteur d’échelle de sortie. Le TMP35 mesure des températures de 10°C à 125°C et fournit une sortie de 250 mV à 25°C. Ce capteur est fonctionnellement compatible avec le LM35 de Texas Instruments. Voir le LM35 analog temperature sensor with Arduino tutoriel pour plus de détails.

Le TMP36 mesure des températures de -40°C à 125°C, fournit une sortie de 750 mV à 25°C, et fonctionne jusqu’à +125°C avec une alimentation unique de 2,7 V. Ce capteur est fonctionnellement compatible avec le LM50. Le TMP35 et le TMP36 ont le même facteur d’échelle de sortie de 10 mV/°C.

Le TMP37 est prévu pour une plage de fonctionnement de 5°C à 100°C et fournit une sortie de 500 mV à 25°C. Ce capteur offre une précision légèrement supérieure aux autres et a un facteur d’échelle de sortie de 20 mV/°C.

tmp35 tmp36 tmp37 output voltage versus temperature
Tension de sortie (V) en fonction de la température (°C). Source : Analog Devices

Comme vous pouvez le voir sur la figure ci-dessus, la plage de sortie de tous les capteurs est comprise entre 0,1 V et 2 V. Notez que la tension de sortie est indépendante de la tension d’alimentation utilisée.

Brochage TMP35/TMP36/TMP37

Les capteurs TMP35/TMP36/TMP37 existent en 3 formats différents, mais le type le plus courant est le 3-pin TO-92 boîtier TO-92, qui ressemble à un transistor. La version TMP36 de ce capteur porte la référence TMP36GT9Z.

Le brochage du capteur est donné dans la figure ci-dessous :

Brochage du TMP36

Notez que la broche 1 (+V S ) est la broche la plus à gauche lorsque la face plate du capteur (avec le texte imprimé) est tournée vers vous.

Vous pouvez trouver plus de spécifications du TMP36 dans le tableau ci-dessous.

Spécifications du capteur de température analogique TMP36

Tension d’alimentation 2,7 V à 5,5 V
Courant de repos 50 µA
Plage de température -40°C à +125°C
Précision ±1°C à +25°C
±2°C de -40°C à +125°C
Facteur d’échelle de sortie 10 mV/°C
Tension de sortie à 25°C 750 mV
Boîtier TO-92 3 broches
Fabricant Analog Devices
Coût Check price

Pour plus d’informations, vous pouvez aussi consulter la fiche technique ici :

Câblage – Connexion du capteur de température TMP36 à Arduino

Connecter un TMP36 à l’Arduino est très simple car il suffit de brancher 3 broches. Commencez par connecter la broche +V S au 5 V de l’Arduino et la broche GND à la masse. Si vous utilisez un Arduino 3,3 V, connectez simplement +V S à 3,3 V à la place.

Ensuite, connectez la broche centrale (V OUT ) à une des entrées analogiques de l’Arduino. Ici, j’ai utilisé la broche analogique A0.

TMP36 analog temperature sensor with Arduino Uno wiring diagram
Schéma de câblage du capteur de température analogique TMP36 avec Arduino Uno

Les connexions sont aussi indiquées dans le tableau ci-dessous :

Connexions du capteur de température analogique TMP36

TMP36 Arduino
Broche 1 (+V S ) 5 V
Broche 2 (V OUT ) Broche A0
Broche 3 (GND) GND

Pour améliorer la stabilité du capteur, la fiche technique recommande d’ajouter un condensateur céramique de 0,1 μF entre la broche +V S et la masse. Lorsque vous utilisez des câbles longs, ajouter une petite résistance (par exemple 750 Ω) en série avec la ligne de signal (V OUT ) peut aussi réduire le bruit.

TMP36 with capacitor and resistor
TMP36 avec résistance et condensateur optionnels

Lors de mes tests avec un Arduino Uno, j’ai obtenu des mesures stables sans le condensateur ni la résistance, mais vos résultats peuvent varier.

Conversion de la tension de sortie du TMP36 en température

Pour convertir la tension de sortie du capteur en température en degrés Celsius, vous pouvez utiliser la formule suivante :

Température (°C) = (V OUT – 500) / 10

avec V OUT en millivolts (mV). Donc si la sortie du capteur est de 750 mV, la température est :

(750 – 500) / 10 = 25°C

Comme vous pouvez le voir dans le schéma de câblage ci-dessus, la sortie du TMP36 est connectée à une des entrées analogiques de l’Arduino. La valeur de cette entrée analogique peut être lue avec la fonction analogRead() comme vous le verrez dans les exemples de code ci-dessous. Cependant, la fonction analogRead(pin) ne renverra pas directement la tension de sortie du capteur.

Les cartes Arduino contiennent un convertisseur analogique-numérique (ADC) multicanal 10 bits, qui mappe les tensions d’entrée entre 0 et la tension d’alimentation (5 V ou 3,3 V) en valeurs entières entre 0 et 1023. Sur un Arduino Uno, par exemple, cela donne une résolution entre lectures de 5 volts / 1024 unités, soit 0,0049 volts (4,9 mV) par unité.

Donc, si vous utilisez analogRead() pour lire la tension sur une des entrées analogiques de l’Arduino, vous obtiendrez une valeur entre 0 et 1023.

Pour convertir cette valeur en tension de sortie du capteur, vous pouvez utiliser :

V OUT = lecture ADC * (5000 / 1024)

Et si vous utilisez un Arduino 3,3 V :

V OUT = lecture ADC * (3300 / 1024)

Nous utiliserons ces formules dans les exemples de code ci-dessous.

Exemple de code Arduino pour le capteur de température analogique TMP36

Avec l’exemple de code suivant, vous pouvez lire la température d’un capteur TMP36 et l’afficher dans le Moniteur Série.

/* TMP36 analog temperature sensor with Arduino example code. 
   https://www.makerguides.com */

// Define to which pin of the Arduino the output of the TMP36 is connected:
#define sensorPin A0

void setup() {
  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);
}

void loop() {
  // Get a reading from the temperature sensor:
  int reading = analogRead(sensorPin);

  // Convert the reading into voltage:
  float voltage = reading * (5000 / 1024.0);

  // Convert the voltage into the temperature in Celsius:
  float temperature = (voltage - 500) / 10;

  // Print the temperature in the Serial Monitor:
  Serial.print(temperature);
  Serial.print(" \xC2\xB0"); // shows degree symbol
  Serial.println("C");

  delay(1000); // wait a second between readings
}

Vous devriez voir la sortie suivante dans le Moniteur Série (Ctrl + Shift + M).

Sortie du Moniteur Série

Assurez-vous que le débit en bauds du Moniteur Série est également réglé sur 9600.

Comment fonctionne le code

D’abord, j’ai défini à quelle broche de l’Arduino la broche V OUT du capteur est connectée. Ici, nous avons utilisé la broche analogique A0. L’instruction #define peut être utilisée pour donner un nom à une valeur constante. Le compilateur remplacera toutes les références à cette constante par la valeur définie lors de la compilation du programme. Ainsi, partout où vous mentionnez sensorPin, le compilateur le remplacera par A0 lors de la compilation.

// Define to which pin of the Arduino the output of the TMP36 is connected:
#define sensorPin A0

Dans la section setup du code, nous commençons la communication série à un débit de 9600 bauds.

void setup() {
  // Begin serial communication at a baud rate of 9600:
  Serial.begin(9600);
}

Dans la section loop du code, nous commençons par lire la valeur du capteur avec la fonction analogRead(pin).

  // Get a reading from the temperature sensor:
  int reading = analogRead(sensorPin);

Ensuite, nous utilisons les formules mentionnées plus tôt dans l’article pour convertir la lecture en tension puis en température.

  // Convert the reading into voltage:
  float voltage = reading * (5000 / 1024.0);

  // Convert the voltage into the temperature in degree Celsius:
  float temperature = (voltage - 500) / 10;

Si vous utilisez un Arduino 3,3 V, comme le Arduino Due ou le Arduino Nano 33 BLE, vous devez connecter la broche +V S à 3,3 V et remplacer la ligne mise en évidence par :

  // Convert the reading into voltage:
  float voltage = reading * (3300 / 1024.0);

Enfin, les résultats sont affichés dans le Moniteur Série :

  // Print the temperature in the Serial Monitor:
  Serial.print(temperature);
  Serial.print(" \xC2\xB0"); // shows degree symbol
  Serial.println("C");

Afficher les mesures de température TMP36 sur un écran LCD I2C

Si vous souhaitez créer un thermomètre autonome qui ne nécessite pas d’ordinateur, il est utile de savoir comment afficher les mesures de température sur un écran LCD.

Avec l’exemple de code ci-dessous, vous pouvez afficher les mesures de température sur un écran LCD I2C 16×2 caractères. Le branchement de l’écran LCD I2C est assez simple comme vous pouvez le voir dans le schéma de câblage ci-dessous.

TMP36 analog temperature sensor with 16x2 character I2C LCD and Arduino wiring diagram.
Schéma de câblage du capteur de température analogique TMP36 avec écran LCD I2C 16×2 et Arduino.

Voir le How to control a character I2C LCD with Arduino et le How to use a 16×2 character LCD with Arduino tutoriel pour plus de détails sur les écrans LCD I2C.

Les connexions sont aussi indiquées dans le tableau ci-dessous :

Connexions LCD I2C

Écran LCD caractère I2C Arduino
GND GND
VCC 5 V
SDA A4
SCL A5

Notez que le capteur de température TMP36 est connecté de la même manière qu’auparavant.

Installation des bibliothèques Arduino requises

Pour utiliser un écran LCD I2C, vous devez installer la bibliothèque Arduino LiquidCrystal_I2C.

Pour installer cette bibliothèque, allez dans Tools > Manage Libraries (Ctrl + Shift + I sous Windows) dans l’IDE Arduino. Le gestionnaire de bibliothèques s’ouvrira et mettra à jour la liste des bibliothèques installées.

Installing an Arduino library step 1 open Library Manager
Gestionnaire de bibliothèques

Recherchez maintenant ‘liquidcrystal_i2c’ et trouvez la bibliothèque de Frank de Brabander. Sélectionnez la dernière version puis cliquez sur Installer.

Installation de la bibliothèque Arduino LiquidCrystal_I2C

Exemple de code TMP36 avec écran LCD I2C

/* TMP36 analog temperature sensor with I2C LCD and Arduino example code. 
   https://www.makerguides.com */

// Include the required Arduino libraries:
#include "LiquidCrystal_I2C.h"

// Create a new instance of the LiquidCrystal_I2C class:
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Degree symbol:
byte Degree[] = {
  B00111,
  B00101,
  B00111,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000
};

// Define to which pin of the Arduino the TMP36 is connected:
#define sensorPin A0

void setup() {
  // Start the LCD and turn on the backlight:
  lcd.init();
  lcd.backlight();

  // Create a custom character:
  lcd.createChar(0, Degree);
}

void loop() {
  // Get a reading from the temperature sensor:
  int reading = analogRead(sensorPin);

  // Convert the reading into voltage:
  float voltage = reading * (5000 / 1024.0);

  // Convert the voltage into the temperature in degree Celsius:
  float temperature = (voltage - 500) / 10;

  // Print the temperature on the LCD;
  lcd.setCursor(0, 0);
  lcd.print("Temperature:");
  lcd.setCursor(0, 1);
  lcd.print(temperature);
  lcd.write(0); // print the custom character
  lcd.print("C");

  delay(1000); // wait a second between readings
}

Vous devriez voir la sortie suivante sur l’écran LCD :

DS18B20-16x2-I2C-LCD-output
Sortie LCD

Conclusion

Dans ce tutoriel, je vous ai montré comment utiliser un capteur de température analogique TMP36 avec Arduino. Si vous souhaitez en savoir plus sur d’autres capteurs de température, consultez les articles ci-dessous.

Si vous avez des questions, n’hésitez pas à les poser dans la section commentaires.