Mesurer la température avec le capteur LM 35 et Arduino.

Mesurer la température avec le capteur LM 35 et Arduino.
Mesurer la température avec le capteur LM 35 et Arduino.

Dans ce tutoriel nous allons apprendre à mesurer la température avec le senseur analogique LM 35 et montrer la valeur sur le moniteur série ou sur un dispositif à quatre digits.

Le dispositif LM 35 est un capteur de température très populaire: il est précis, peu coûteux, très simple d’utilisation et d’une excelente fiabilité. Il peut mesurer des températures entre les -55 et les 150ºC . La sortie analogique du capteur est proportionnelle à la température. Il suffit de mesurer la tension en sortie du capteur pour en déduire la température: chaque degré Celsius correspond à une tension de +10mV.

Capteur LM35 á trois broches pour Arduino.
Broches du capteur LM35

Le capteur a trois pattes: VCC (alimentation) couvrant un intervalle de 4 à 30V, Vout (sortie des donnes) et GND (masse).

Mesurer la température avec ce dispositif est très simple: à une température de 24ºC, la mesure du LM 35 serait de 240 mV (0.240 V); à une température de 16.4, la mesure serait de 164 mV (0.164 V).

Comment calculer la température partant de la tensión du capteur LM 35.

Le pin VCC du capteur se connecte à la broche de 5V de la carte et la broche centrale se relie à l’entrée analogique A0. De cette façon, avec la fonction analogRead(A0) on pourra lire la valeur enregistrée dans la variable capteur (une valeur entre 0 et 1023 équivalente à une tension entre 0 et 5V).

Règle de trois pour transformer la valeur analogique prise par le capteur à une donnée digital

La formule pour transformer la valeur de la sortie analogique du capteur à une valeur digital:

Température = ((capteur x 5000) / 1023) / 10

Mesurer la température avec le capteur LM 35 et montrer le résultat à travers du moniteur série.

Il est nécessaire:

  • Carte Arduino ou équivalente.
  • Breadboard.
  • Capteur de température LM 35.
  • Cables.

Schéma:

Connexion du capteur LM 35 avec Arduino
Connexion du capteur LM 35 avec Arduino

Code:

int capteur;  // Pour enregistrer la valeur de A0
float temperature;

void setup(){
  Serial.begin(9600);
}

void loop(){
  capteur = analogRead(A0);
  temperature = ((capteur * 5000.0) / 1023) / 10;
  Serial.print(temperature, 1); // un seul décimal
  Serial.println(" C");
  delay(1000);
}

Téléversant le code au IDE de Arduino on peut tester les résultats des lectures du capteur, sur le moniteur série.

Valeurs enregistrées vues via le moniteur série
Valeurs enregistrées vues via le moniteur série

On peut constater une variation des valeurs dû à que nous travaillons avec des tensions très basses et la précision n’est pas exacte… comme solution à ces variations on peut faire la moyenne de ces lectures. Ce-ci nous donnera une mesure finale plus réelle.

Mesurer la température et faire la moyenne.

Partant du schéma antérieur, on va faire cinq lectures de la température et montrer sur le moniteur série la moyenne de ces données.

code:

int capteur;
float temperature;
float addition;

void setup(){
  Serial.begin(9600);
}

void loop(){
  addition = 0;
  for (int i=0; i<5; i++){
    capteur = analogRead(A0);
    temperature = ((capteur * 5000.0) / 1023) / 10;
    addition = temperature + addition;
    delay(500);
  }
  Serial.print(addition/5.0, 1);
  Serial.println(" C");
}

Dans le code ci dessus on ajoute une nouvelle variable nomée addition, pour enregistrer la somme des cinq mesures avec lesquelles on va faire la moyenne.

Dans la fonction loop(), nous avons une boucle for() pour réaliser les cinq lectures de la température à intervalles d’une demie seconde. On calcule la moyenne et on imprime le résultat sur le moniteur série.

Mesurer la température et montrer le résultat à travers d’un afficheur à 4 digits.

Il est beaucoup plus simple de voir la température sur un dispositif que sur l’écran du moniteur série. Pour connaitre le fonctionnement d’un afficheur à quatre digits on vous conseille de lire l’article Fonctionnement de l’afficheur de 7 segments à 4 digits.

Il est nécessaire:

  • Carte Arduino ou équivalente.
  • Breadboard.
  • Capteur de température LM 35.
  • Afficheur à 4 digits (nous allons utiliser le 3461 AS)
  • 4 résistances.
  • Cables.

Schéma:

Montage du capteur LM035, le dispositif à 4 digits et la carte Arduino
Montage du capteur LM035, le dispositif à 4 digits et la carte Arduino

Code:

#include "SevSeg.h"
SevSeg sevseg;
int capteur;
float temperature;
unsigned long start;

void setup(){
  Serial.begin(9600);
  byte numDigits = 4;
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
  bool resistorsOnSegments = true; 
  bool updateWithDelaysIn = true;
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
}

void loop(){
  if (millis() - start > 1000){
    capteur = analogRead(A0);
    temperature = ((capteur * 5000.0) / 1023) / 10;
    Serial.print(temperature, 1);  // un seul décimal
    Serial.println(" C");
    sevseg.setNumber(temperature,1);  
    start = millis();
  }
  sevseg.refreshDisplay();
}

Mesurer la température et montrer la moyenne à travers d’un afficheur à 4 digits.

Partant du dernier schéma on applique ce nouveau code:

#include "SevSeg.h"
SevSeg sevseg;
int capteur;
float temperature;
unsigned long start;
float adition;
float resultat;

void setup(){
  Serial.begin(9600);
  byte numDigits = 4;
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {9, 2, 3, 5, 6, 8, 7, 4};
  bool resistorsOnSegments = true; 
  bool updateWithDelaysIn = true;
  byte hardwareConfig = COMMON_CATHODE; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
  sevseg.setBrightness(90);
}

void loop(){
  if (millis() - start > 1000){
    adition = 0;
    for (int i=0; i<10; i++){
      capteur = analogRead(A0);
      temperature = ((capteur * 5000.0) / 1023) / 10;
      adition = temperature + adition;
    }
    resultat = adition/10.0;    
    Serial.print(resultat, 1);
    Serial.println(" C");
    sevseg.setNumber(resultat,1);    
    start = millis();
  }
  sevseg.refreshDisplay();
}

Articles similaires
Laisser un commentaire