Mesure de température avec le capteur LM35

Descriptif du programme

Ce programme très simple ne fait que mesurer la température sur demande de l’utilisateur en utilisant le capteur LM35.

L’intérêt de ce programme est de mettre en oeuvre sur un exemple minimal le schéma général de l’utilisation de la liaison série.

Le capteur de température LM35

lm35.gif

Ce capteur est très facile à utiliser puisqu’il suffit de l’alimenter avec les pattes VCC et GND et la patte centrale à une entrée analogique d’Arduino.

La conversion elle aussi est simple puisqu’un volt correspond à 100 degrés Celsius.

La lecture analogique d’u signal de 0 à 5V étant codée de 0 à 1023, on a la formule

Temp = Volt * 5./1023*100 ;

Le code

/* 
 Sur demande de l"utilisateur via la liaison serie (caractere m),
 le programme mesure la temperature en degre Celsius.
 */

//------------------------------------------------------------
// Librairies
//------------------------------------------------------------

// pour le traitement du message recu sur la liaison serie
#include <SerialDLF.h>

//------------------------------------------------------------
// Constantes
//------------------------------------------------------------

// Classe de SerialDLF
SerialString messageRecu;

const int LM35=A0; // pin analogique du capteur de temperature LM35


//------------------------------------------------------------
// Setup
//------------------------------------------------------------

void setup()
{
  // Initialisation de la liaison serie
  Serial.begin(9600); 
  Serial.flush();
  Serial.println("Liaison serie operationnelle !");
  Serial.println("------------------------------");
  delay(1000);
  Serial.println("Descriptif du programme :");
  Serial.println("--------------------------");
  Serial.println("Ce programme mesure la temperature a la demande.");
  Serial.println("--------------------------");
  Serial.println("Pour connaitre les commandes, taper sur h ou H.");
  Serial.println("--------------------------");


  // Autres initilisations


} // fin setup

//------------------------------------------------------------
// Loop
//------------------------------------------------------------

void loop()
{ 
  messageRecu.renew();  // on lit un eventuel message.
  if (messageRecu.empty()==false) // Si le message est non vide ...
  {
    //Serial.println(messageRecu.get());
    traitement();
    Serial.flush();
  }
} //fin loop


//------------------------------------------------------------
// Fonction traitement()
//------------------------------------------------------------
/*
Execute le traitement des caracteres recus par la liaison serie
 qui sont stockes dans messageRecu.
 */

void traitement()
{
  float temp;

  if ((messageRecu.equals("Descriptif")) || (messageRecu.equals("d")))
  {

    Serial.println("--------------------------");
    Serial.println("Descriptif du programme :");
    Serial.println("--------------------------");
    Serial.println("Ce programme mesure la temperature a la demande.");
    Serial.println("--------------------------");
  }
  else if  ((messageRecu.equals("Help")) || (messageRecu.equals("h")))
  {
    Serial.println("--------------------------");
    Serial.println("Liste des commandes :");
    Serial.println("--------------------------");
    Serial.println("--> Descriptif ou d : affiche le descriptif du programme.");
    Serial.println("--> Help ou h : affiche la liste des commandes.");
    Serial.println("--> Mesure ou m : demande une mesure.");
    Serial.println("--------------------------");
  }
  else if  ((messageRecu.equals("Mesure")) || (messageRecu.equals("m")))
  {
    temp=analogRead(LM35)*5./1023*100;  // lecture et conversion en degres Celsius.
    Serial.print("Temperature en degres Celsius : ");
    Serial.println(temp);
  }

  else
  {
    Serial.println("Erreur de saisie !");
  }

} // fin traitement