Skip to Content

Tutoriel capteur de température analogique LM35 avec Arduino

Tutoriel capteur de température analogique LM35 avec Arduino

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

Dans la première partie de cet article, vous trouverez les spécifications et le brochage du LM35. Ensuite, nous verrons comment connecter le capteur à l’Arduino.

Le premier exemple de code peut être utilisé pour prendre des mesures de température avec le capteur et afficher les résultats dans le Moniteur Série. Dans le second exemple, je vous montrerai comment utiliser la tension de référence intégrée de 1,1 V de l’Arduino pour obtenir des mesures plus précises. Enfin, nous verrons comment afficher la température sur un  I2C LCD  pour créer un thermomètre autonome.

Matériel nécessaire

Composants matériels

LM35 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 du LM35

Le LM35 est un capteur de température centigrade précis et peu coûteux fabriqué par Texas Instruments. Il fournit une tension de sortie proportionnelle linéairement à la température en degrés Celsius, ce qui le rend très facile à utiliser avec l’Arduino.

Le capteur ne nécessite aucune calibration ou ajustement externe pour fournir une précision de ±0,5°C à température ambiante et ±1°C sur la plage de −50°C à +155°C.

Un des inconvénients du capteur est qu’il nécessite une tension de polarisation négative pour mesurer des températures négatives. Si cela est nécessaire pour votre projet, je recommande plutôt d’utiliser le DS18B20 ou le TMP36. Le TMP36 d’Analog Devices est très similaire au LM35 et peut mesurer des températures de -40°C à 125°C sans composants externes.

Vous pouvez trouver un tutoriel dédié pour le TMP36 et le DS18B20 ici :

Le facteur d’échelle de sortie du LM35 est de 10 mV/°C et il fournit une tension de sortie de 250 mV à 25°C (voir figure ci-dessous).

LM35 output voltage in mV versus temperature
Tension de sortie du LM35 en mV en fonction de la température

Notez que le capteur fonctionne sur une plage de tension de 4 à 30 V et que la tension de sortie est indépendante de la tension d’alimentation.

Le LM35 fait partie d’une série de capteurs de température analogiques vendus par Texas Instruments. Les autres membres de la série incluent :

  • LM335 – tension de sortie directement proportionnelle à la température absolue à 10 mV/°K.
  • LM34 – tension de sortie proportionnelle linéairement à la température en Fahrenheit à 10 mV/°F.

Brochage du LM35

Le LM35 est disponible en 4 boîtiers différents, mais le type le plus courant est le boîtier transistor 3 broches TO-92.

Boîtier TO-92

Le brochage du capteur est le suivant :

LM35 analog temperature sensor pinout

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.

Nom Broche Description
+V S 1 Broche d’alimentation positive (4 – 30 V)
V OUT 2 Sortie analogique du capteur de température
GND 3 Broche de masse du dispositif, à connecter au terminal négatif de l’alimentation

Vous trouverez les spécifications du LM35 dans le tableau ci-dessous.

Spécifications du capteur de température analogique LM35

Tension d’alimentation 4 V à 30 V
Courant de fonctionnement 60 µA
Plage de température -55°C à +155°C
Précision garantie ±0,5°C à +25°C
±1°C de -55°C à +150°C
Facteur d’échelle de sortie 10 mV/°C
Tension de sortie à 25°C 250 mV
Auto-échauffement <0,1°C dans l’air immobile
Boîtier TO-92 3 broches
Fabricant Texas Instruments

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

Câblage – Connexion du capteur de température analogique LM35 à l’Arduino

Connecter un LM35 à l’Arduino est très simple car il suffit de connecter 3 broches. Commencez par connecter la broche +V S  à la sortie 5 V de l’Arduino et la broche GND à la masse.

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

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

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

Connexions du capteur de température analogique LM35

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

Conversion de la tension de sortie du LM35 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 / 10

avec V OUT  en millivolts (mV). Ainsi, si la sortie du capteur est de 750 mV, la température est de 75°C.

Comme vous pouvez le voir dans le schéma de câblage ci-dessus, la sortie du LM35 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(). Cependant, cette fonction 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 de l’ADC * (Vref / 1024)

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

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

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

/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */

// Define to which pin of the Arduino the output of the LM35 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 degree Celsius:
  float temperature = voltage / 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 :

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

Tout d’abord, j’ai défini à quelle broche de l’Arduino la broche V OUT du capteur est connectée. Dans ce cas, 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 LM35 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 prendre une lecture 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 / 10;

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");

Améliorer la précision des mesures

Comme nous avons utilisé la tension de référence par défaut de l’Arduino pour l’entrée analogique (c’est-à-dire la valeur utilisée comme limite supérieure de la plage d’entrée), la résolution maximale que nous obtenons de l’ADC est de 5000/1024 = 4,88 mV ou 0,49°C.

Si nous voulons une précision plus élevée, nous pouvons utiliser la référence intégrée de 1,1 V de l’Arduino à la place. Cette tension de référence peut être modifiée avec la fonction analogReference().

Avec 1,1 V comme tension de référence, nous obtenons une résolution de 1100/1024 = 1,07 mV ou 0,11°C. Notez que cela limite la plage de température mesurable de 0 à 110 degrés Celsius.

J’ai mis en évidence les lignes que vous devez ajouter/modifier dans le code ci-dessous :

/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */

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

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

  // Set the reference voltage for analog input to the built-in 1.1 V reference:
  analogReference(INTERNAL);
}

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

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

  // Convert the voltage into the temperature in degree Celsius:
  float temperature = voltage / 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
}
Remarquez les incréments plus petits entre les mesures

Exemple de code LM35 avec écran LCD I2C et Arduino

Si vous souhaitez fabriquer un thermomètre autonome qui ne nécessite pas d’ordinateur, il peut être 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 16×2 character I2C LCD.

Le branchement de l’écran LCD I2C est assez simple comme vous pouvez le voir dans le schéma de câblage ci-dessous. Vous pouvez consulter mon tutoriel détaillé sur How to control a character I2C LCD with Arduino pour plus d’informations. Si vous souhaitez utiliser un écran LCD standard non-I2C, jetez un œil à How to use a 16×2 character LCD with Arduino.

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

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

Connexions de l’écran LCD I2C

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

Notez que le capteur de température LM35 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 cherchez 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 LM35 avec écran LCD I2C

/* LM35 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 output of the LM35 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 / 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 LM35 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, des suggestions, ou si vous pensez que des éléments manquent dans ce tutoriel, veuillez laisser un commentaire ci-dessous.

Raymond

Tuesday 3rd of March 2026

The displayed values are all wrong I tried with several sensors, what should I do?

Stefan Maetschke

Tuesday 3rd of March 2026

Hi, try the following simplified code and see if values change with temperature. If not, something with the wiring or the sensor is wrong. If yes, try to change the conversion from sensor readings to temperatures.

void setup() {} void loop { Serial.println(analogRead(A0)); }