Code de recherche

Leçon 42 : Utilisation du capteur de température LM35 | Cours Arduino étape par étape

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.

LM35_câblage

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

LM35_basic_wiring_bb

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

Images

LM35_basic_project
LM35_basic_project
LM35_basic_wiring_bb
LM35_basic_wiring_bb
LM35_pinout
LM35_pinout
503-Lesson 42: Using an LM35 Temperature Sensor with Arduino
Langue: C++
++
/*
 * 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

Ressources et références

Fichiers📁

Aucun fichier disponible.