Pages: [1]   Go Down
Author Topic: Capteur de température LM35  (Read 843 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous, aujourd'hui je vous propose un petit tuto su l'utilisation du capteur de température LM35.
Alors déjà pour commencer voici un code détaillé sur la programmation du capteur :
Code:
float volt; //le voltage du capteur
float temp; // On initialise la variable de température
void setup()
{
   Serial.begin(9600);
}
void loop()
{
    volt = analogRead(0); //On lit les données du capteur sur le port ou tu l'as branché (dans cet exemple c'est le port analogique 0)
    volt = 5*volt/1023; //on calcule le voltage
    temp = volt/0.01; //puis la température
    Serial.println(temp); //on affiche la valeur (ici dans ton IDE)
    delay(1000); //un délai pour que le tout soit lisible
}

Ensuite le calcule permettant de passer des Volts (du capteur) au degrés :

Le 5 est le voltage max de la sortie (ici 5v), les 1023 sont en fait le CAN : le convertisseur analogique numérique de la carte (donc sur  10 bits soit 1024-1 = 1023), les 0,01 la sensibilité du capteur soit 10mv donc 0,01V (rf doc du capteur).

Et pour le branchement c'est très simple :


Voilà en espérant que ce petit tuto pourra vous aider, sinon n'hésitez pas à commenter smiley-wink
« Last Edit: May 10, 2014, 05:29:22 am by alex877 » Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3626
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ce tuto mais je me permettrais 2 remarques:
  • La sensibilité du LM35 c'est 10mV/°C donc si on reste dans des températures inférieures à 100°C on à tout intérêt à utiliser la référence interne de 1,1V ce qui donne une bien meilleure résolution.
  • Le montage tel qu'indiqué ne permet pas de mesurer des températures négatives.

La doc pour les curieux : http://www.ti.com/lit/gpn/lm35
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ce tuto mais je me permettrais 2 remarques:
  • La sensibilité du LM35 c'est 10mV/°C donc si on reste dans des températures inférieures à 100°C on à tout intérêt à utiliser la référence interne de 1,1V ce qui donne une bien meilleure résolution.
La référence interne ?

Quote
  • Le montage tel qu'indiqué ne permet pas de mesurer des températures négatives.
Ah oui tien je n'y avais pas pensé :/
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2274
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
La référence interne ?
Oui, celle qui sert au convertisseur analogique et au comparateur analogique.

A noter que cette référence interne n'est précise qu'à 10% ce qui se répercute sur la précision de la température.

A cela deux solutions :
1) Utiliser une vraie référence de tension (1,25V, 2V, .....) raccordée sur la broche aref.
2) Mesurer pour chaque micro-controleur la valeur exacte de cette référence interne.
Elle est disponible sur la broche Aref quand la réference est activée.
La variation de +/- 10%  tient compte des différents lots de fabrication mais la valeur la référence interne est  quasiment fixe pour un lot de fabrication donné .

Autre point il faudrait préciser que le LM35 ne supporte pas des liaisons capacitives ce qui se manifeste par des mesures très instables. La solution, dès que les fils sont longs, est d'insérer  une résistance entre 2k et 5k entre sa sortie et le fil de mesure .
Logged

Offline Offline
God Member
*****
Karma: 12
Posts: 919
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut également tenir compte du fait que la première lecture donnée par l'ADC est fausse donc faire plutot:
Code:
float lm35dz(){
  analogRead(3);
  delay(10);
  reading = analogRead(3); //LM35DZ connect to Analog pin 3
  //convert the voltage into temperature because the LM35DZ is at 10mV per °C
  voltage = reading * 5.0 / 1024.0;
  temperature = voltage * 100 ;
  return temperature;
}

Dans ton code c'est mieux de préciser A0 que 0 dans la dclaration du pin utilisé, et même le mieux est de prévoir une constante à changer au début du programme directement, dans ta déclaration il faut spécifier:
Code:
analogRead(A0);
et non:
Code:
analogRead(0);
car cela peut poser des problèmes sur certaines carte.

Et je ne sais pas pourquoi mais ton schéma Fritzing ta sortie du LM35 ca entre les pins VIN et A0 mais pas sur A0?
smiley-wink
« Last Edit: May 21, 2014, 10:31:16 am by john_lenfr » Logged

Pages: [1]   Go Up
Jump to: