Code de recherche

Comment utiliser un LM35 pour mesurer la température en Celsius, Fahrenheit et Kelvin

Comment utiliser un LM35 pour mesurer la température en Celsius, Fahrenheit et Kelvin

Dans ce didacticiel, nous allons apprendre à utiliser le capteur de température LM35 pour mesurer la température et l'afficher en Celsius, Fahrenheit et Kelvin sur le moniteur série. Le LM35 est un capteur simple mais efficace qui fournit une tension proportionnelle à la température, permettant des lectures et des conversions faciles. Ce projet est idéal pour les débutants cherchant à intégrer la détection de température dans leurs projets Arduino.

Le LM35 a trois broches : la broche de gauche est pour l'alimentation, qui peut être connectée à une source de tension comprise entre 4V et 30V ; la broche du milieu délivre une tension proportionnelle à la température ; et la broche de droite est pour la terre. Le capteur délivre 10 millivolts pour chaque degré Celsius, que nous utiliserons pour calculer la température dans notre code Arduino. (dans la vidéo à 02:30)

Matériel expliqué

Le capteur de température LM35 est un dispositif de précision qui fournit une tension de sortie analogique correspondant à la température en Celsius. Le capteur fonctionne dans une plage de -55°C à 150°C avec une précision de ±0,5°C. Sa faible consommation d'énergie de 60 microampères le rend adapté aux appareils fonctionnant sur batterie. L'impédance de sortie du LM35 est faible, ce qui lui permet de piloter une charge efficacement sans chute de tension significative, ce qui est crucial pour maintenir des lectures précises. Le capteur est souvent emballé dans un facteur de forme TO-92, ce qui le rend facile à intégrer dans divers projets.

Détails de la fiche technique

FabricantTexas Instruments
Numéro de pièceLM35
Tension logique/IO4-30 V
Courant de sortie (typ.)60 µA
Plage de température-55 à 150 °C
Tension de sortie10 mV/°C
Précision (typ.)±0,5 °C (jusqu'à 25 °C)
PaquetTO-92

  • Assurez une alimentation électrique adéquate entre 4V et 30V.
  • Soyez prudent concernant la polarité inversée sur les connexions d'alimentation.
  • Utilisez une connexion au sol stable pour éviter les bruits dans les lectures.
  • Gardez le capteur éloigné des sources de chaleur directe pour éviter des lectures erronées.
  • Envisagez un filtre passe-bas si vous constatez des fluctuations dans la tension de sortie.

Instructions de câblage

LM35_basic_wiring_bb

Pour câbler le capteur LM35, connectez la broche de gauche (VCC) à l'alimentation 5V de l'Arduino. La broche de droite (GND) doit être connectée à la masse (GND) de l'Arduino. La broche du milieu (Sortie) est celle où vous lirez les données de température ; connectez cette broche à la broche d'entrée analogique.A0sur l'Arduino. Cette configuration permettra à l'Arduino de lire la sortie de tension du LM35, qui correspond à la température. Si vous devez ajuster le câblage pour différentes configurations, assurez-vous de mettre à jour la référence de la broche analogique dans le code pour qu'elle corresponde à votre nouvelle configuration. (dans la vidéo à 03:15)

Exemples de code et tutoriel

Les extraits de code suivants montrent comment lire la température du LM35 et l'afficher dans différentes unités. Tout d'abord, nous définissons la broche d'entrée et le facteur de conversion du LM35 :

const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not change

Dans cet extrait,inPinreprésente la broche analogique connectée à la sortie de l'LM35, etLM35_FACTORdéfinit la conversion nécessaire pour convertir la tension en température en Celsius. Ensuite, nous configurons la communication série :

void setup() {
  Serial.begin(9600);
  Serial.println("Robojax LM35 for Arduino");
  delay(500);
}

Ici,Serial.begin(9600)initialise la communication série à un débit de 9600 bits par seconde, nous permettant d'envoyer et de recevoir des données vers et depuis le moniteur série. La fonction loop lit en continu la température et l'imprime :

void loop() {
  printTemperature('C');
  printTemperature('F');
  printTemperature('K'); 
  delay(1000);
}

Dans cette boucle, nous appelons leprintTemperaturefonction pour chaque unité (Celsius, Fahrenheit, Kelvin) pour afficher les températures respectives sur le moniteur série.

Démonstration / À quoi s'attendre

Lorsque le LM35 est correctement câblé, vous devriez voir les lectures de température affichées en Celsius, Fahrenheit et Kelvin sur le moniteur série. À mesure que vous appliquez de la chaleur au capteur, les lectures vont augmenter en conséquence. Si vous remarquez des valeurs aléatoires ou erratiques, vérifiez votre câblage pour des connexions lâches ou des affectations de broches incorrectes. (dans la vidéo à :00)

Horodatage vidéo

  • 00:00- Introduction
  • 01:00- Aperçu du LM35
  • 02:30- Instructions de câblage
  • 03:15- Explication du code
  • 05:00- Démonstration

Images

LM35_basic_project
LM35_basic_project
LM35_basic_wiring_bb
LM35_basic_wiring_bb
LM35_pinout
LM35_pinout
323-How to use an LM35 to measure temperature in Celsius, Fahrenheit, and Kelvin
Langue: C++
/*
 * 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
 * 
 * Watch Video instruction for this code:https://youtu.be/S5IBc_epa1A
 * 
 * Full explanation of this code and wiring diagram is available at
 * my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62

 * Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
 * in Ajax, Ontario, Canada. www.robojax.com
 * 

 * Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64

 *  * 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:
  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);
}



/*
 * 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)
{
    float value;
    float averageTemperature =0;
    int sensorValue = analogRead(inPin);
    float voltage = sensorValue * (5.0 / 1023.0); 
    float temperature = voltage / LM35_FACTOR;
    for(int i=0; i< iteration; i++)
    {
      averageTemperature += temperature;
    }

    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 character 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)
{
    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.