Leçon 42 : Utilisation du capteur de température LM35 | Cours Arduino étape par étape
Dans cette leçon, nous allons apprendre à utiliser le capteur de température LM35 avec un Arduino pour mesurer et afficher la température en Celsius, Fahrenheit et Kelvin. Ce capteur produit une tension qui est proportionnelle à la température, nous permettant de lire et de traiter facilement les données dans notre programme Arduino. À la fin de ce tutoriel, vous serez en mesure de mettre en œuvre des actions basées sur la température dans vos projets.

Le capteur de température LM35 comprend trois broches : la broche de gauche est pour l'alimentation, la broche du milieu délivre une tension correspondant à la température, et la broche de droite est pour la terre. Le capteur fonctionne dans une plage de tension de 4 à 30 volts et fournit une sortie de 10 millivolts par degré Celsius. Cette précision permet des lectures de température précises dans diverses applications.
Matériel expliqué
Le composant principal de ce projet est le capteur de température LM35. Il est conçu pour fournir une sortie de tension analogique qui est proportionnelle à la température en degrés Celsius. Le capteur est adapté à une large gamme de températures, allant de -55 °C à +150 °C, ce qui le rend polyvalent pour différents environnements.
Le LM35 nécessite peu de puissance (60 microampères) et fonctionne sur une large plage de tension. Son impédance de sortie est faible, ce qui lui permet de s'interfacer directement avec les broches d'entrée analogiques de l'Arduino sans circuit supplémentaire. Cette simplicité de conception fait du LM35 un excellent choix pour les tâches de mesure de température.
Détails de la fiche technique
| Fabricant | Texas Instruments |
|---|---|
| Numéro de pièce | LM35 |
| Tension logique/IO | 4-30 V |
| Courant de sortie (par canal) | 1 mA max |
| Plage de température | -55 à +150 °C |
| Tension de sortie | 10 mV/°C |
| Précision | ±0,5 °C à 25 °C |
| Paquet | TO-92 |
- Assurez une alimentation adéquate entre 4V et 30V pour des lectures précises.
- La tension de sortie est directement proportionnelle à la température (10 mV/°C).
- Utilisez des condensateurs de découplage près de la broche d'alimentation pour la stabilisation.
- Maintenez la polarité correcte lors de la connexion pour éviter d'endommager.
- Assurez de bonnes connexions pour éviter les entrées flottantes, qui peuvent causer des lectures erronées.
Instructions de câblage

Pour câbler le capteur de température LM35, connectez la broche de gauche (VCC) à la sortie 5V de l'Arduino. La broche du milieu (Sortie) doit être connectée à la broche d'entrée analogique.A0, que nous utiliserons pour lire la température. Enfin, connectez la bonne broche (Masse) à l'une des broches de masse sur l'Arduino. Assurez-vous que toutes les connexions sont sécurisées pour éviter tout problème pendant le fonctionnement.
Lors du câblage, rappelez-vous que le LM35 peut être alimenté avec une tension d'alimentation comprise entre 4V et 30V, mais utiliser 5V est suffisant pour les applications Arduino. Si vous voyez des relevés de température inattendus, vérifiez les connexions et assurez-vous que le capteur est correctement alimenté.
Exemples de code et guide pas à pas
Dans le code Arduino, nous définissons la broche d'entrée analogique pour lire la tension de sortie du LM35 avec l'identifiantinPin, qui est prêt àA0. De plus, nous définissons une constanteLM35_FACTORréglez sur 0,01 pour représenter la sortie du capteur par degré Celsius.
const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not change
Cette configuration nous permet de lire la température de manière straightforward. Ensuite, nous initialisons la communication série dans lesetup()fonction pour commencer à transmettre des données de température au moniteur série.
void setup() {
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
}
Dans leloop()fonction, nous lisons continuellement la température et l'imprimons dans différentes unités. LeprintTemperature()La fonction prend un paramètre de caractère pour spécifier le format de température souhaité, nous permettant d'afficher la température en Celsius, Fahrenheit ou Kelvin.
void loop() {
printTemperature('C');
printTemperature('F');
printTemperature('K');
delay(1000); // Wait for 1000ms
}
Pour agir en fonction de la température, nous pouvons vérifier si la température dépasse un certain seuil à l'aide dugetTemperature()fonction. Cette fonction calcule la température moyenne sur un nombre spécifié d'échantillons.
Pour plus de détails, regardez la vidéo associée pour un guide complet du code (dans la vidéo à 10:15).
Démonstration / Ce à quoi s'attendre
Lorsque le capteur LM35 est correctement connecté et que le code Arduino est téléchargé, vous devriez voir la température affichée en Celsius, Fahrenheit et Kelvin sur le moniteur série. Si vous appliquez de la chaleur au capteur, vous observerez une augmentation correspondante des lectures de température.
Soyez conscient qu'un câblage incorrect peut conduire à des lectures de température erratiques, comme des valeurs extrêmement élevées ou basses. Assurez-vous toujours que le capteur est correctement connecté pour éviter de tels problèmes (dans la vidéo à 12:30).
Horodatages vidéo
- 00:00- Introduction au LM35
- 02:30- Instructions de câblage
- 05:00- Explication du code
- 10:15- Démonstration des lectures de température
- 12:30- Problèmes courants et dépannage
++
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 42: Introduction to LM35
* This Arduino sketch is to use LM35 to measure temperature
* This code has two ways to get temperature
* 1-To print the temperature either in C, F or K on the serial monitor
* 2-To return the value in C, F and K
*
Please watch video instruction here https://youtu.be/DRIC4wDu878
This code is available at http://robojax.com/course1/?vid=lecture37
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
* Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
* in Ajax, Ontario, Canada. www.robojax.com
*
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int inPin =A0;//can change
const int iteration = 1000; //can change (see video)
const float LM35_FACTOR =0.01;// do not change
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
Serial.begin(9600);
Serial.println("Robojax LM35 for Arduino");
delay(500);
}
// the loop routine runs over and over again forever:
void loop() {
//robojax.com LM35 Code for Arduino
printTemperature('C');
Serial.println();
printTemperature('F');
Serial.println();
printTemperature('K');
Serial.println();
Serial.println();
// Serial.print(" Temperature: ");
// printDegree();
// Serial.print(getTemperature('C'));
if(getTemperature('C') >87)
{
// do something here (watch video)
}
// Serial.println();
delay(1000);//Wait for 1000ms (change it if you want)
}
/*
* getTemperature()
* @brief gets the average temperature
* @param average temperature
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return returns one of the values above
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
float getTemperature(char type)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value,voltage,temperature;//define variables
int sensorValue;
float averageTemperature =0;
for(int i=0; i< iteration; i++)
{
sensorValue = analogRead(inPin);//read analog value
voltage = sensorValue * (5.0 / 1023.0); //convert it to voltage
temperature = voltage / LM35_FACTOR; //convert voltage to temperature
averageTemperature += temperature;//add
}
averageTemperature /=iteration;
if(type =='F')
{
value = averageTemperature *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = averageTemperature + 273.15;//convert to Kelvin
}else{
value = averageTemperature;// return Celsius
}
return value ;
}//getTemperature()
/*
* printTemperature()
* @brief prints temperature on serial monitor
* @param charact type
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* @return none
* Written by Ahmad Shamshiri for robojax.com
* on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
*/
void printTemperature(char type)
{
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
float value;
float temp = getTemperature(type);
Serial.print(temp);
printDegree();
if(type =='F')
{
Serial.print("F");
}else if(type =='K')
{
Serial.print("K");
}else{
Serial.print("C");
}
}//printTemperature()
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\\xC2");
Serial.print("\\xB0");
}
Ce dont vous pourriez avoir besoin
-
AmazonPurchase LM35 from Amazonamzn.to
-
eBayPurchase LM35 from eBayebay.us
Ressources et références
-
Fiche techniqueLM35 Datasheetti.com
Fichiers📁
Aucun fichier disponible.