Header Ads

Tutoriel sur le TMP36


Nous venons de terminer un vrai tutoriel super complet concernant l'utilisation d'un TMP36 avec Arduino.

Introduction

Un senseur de température Analogique est vraiment facile à expliquer, c'est une puce qui vous informe sur la température ambiante actuelle!
Source: Tutoriel sur le TMP36 de MCHobby


Ces senseur utilisent la technologie des états solides (wikipédia) pour déterminer la température. Donc, il n'utilise pas de mercure (comme les vieux thermomètres), bilames (comme certains thermomètres ou thermomètre pour four), ni de thermistance (résistance qui varie avec la température). A la place, il utilise la caractéristique qui dit que "la tension aux bornes d'une diode augmente dans des proportions connues lorsque la température augmente". Techniquement, il s'agit de la chute de tnsion entre la base et l'émetteur - le Vbe - d'un transistor.
En amplifiant cette tension avec grande précision, il est facile de générer un signal analogique qui est directement proportionnel à la température. Il y a bien eu quelques améliorations sur la technique utilisée mais c'est essentiellement la technique utilisée pour mesurer la température.
Source: Tutoriel sur le TMP36 de MCHobby

Lecture de la donnée analogique

Au contraire des senseurs de force (FSR) déjà abordés dans un autre tutoriel, le TMP36 et similaire n'agit pas comme une résistance. A cause de cela (grâce à), il n'y a plus qu'une seule façon de lire la valeur de la température depuis le senseur, et c'est de raccorder la sortie du senseur directement sur une entrée analogique (ADC) de votre microcontroleur.
Source: Tutoriel sur le TMP36 de MCHobby (BY: AdaFruit)

Souvenez-vous que vous pouvez alimenter le senseur avec n'importe quelle tension située entre 2.7V et 5.5V. Dans l'exemple présenté, nous utilisons une alimentation de 5V, mais nous pourrions aussi bien utiliser tout aussi facilement la tension 3.3v. Peut importe la tension utilisée, la tension analogique lue est comprise dans le gamme de tension d'environ 0V (la masse/GND) à environ 1.75V.
Si vous utilisez un Arduino 5V, and que vous connectez the senseur directement sur une entrée analogique, vous pouvez utiliser les formules suivantes pour transformer la lecture de la valeur analogique 10 bit en température:

Tension sur la broche en milliVolts = (lecture depuis l'ADC) * (5000/1024)

ADC signifie Analogic to Digital Converter... convertisseur Analogique Digital (donc une entrée analogique d'Arduino).
La formule ci-dessus converti le nombre de 0 à 1023 produit par l'ADC en une valeur de 0 à 5000mV (= 5V)
Si vous utilisez un Arduino 3.3V, vous aurez besoin d'utiliser cette autre formule:
 
Tension sur la broche en milliVolts = (lecture depuis l'ADC) * (3300/1024)

La formule ci-dessus converti le nombre de 0 à 1023 produit par l'ADC en une valeur de 0 à 3300mv (= 3.3V)
La tension en millivolts est ensuite convertie en température (degré Celsius à l'aide de la formule suivante:
 
Température Centigrade = [(tension analogique en mV) - 500] / 10

Code pour Arduino

//Source: Tutoriel MCHobby sur le TMP36
//        http://mchobby.be/wiki/index.php?title=Senseur_Temp%C3%A9rature
//BY: AdaFruit Industries
//
//Variable de la broche pour le TMP36
int sensorPin = 0; //la broche analogique sur laquelle le sortie VOut du TMP36 est raccordé
// Résolution est de 10 mV / degrée centigrade avec une offset de 500 mV 
// pour permettre la lecture de température négative

/*
 * setup() - cette fonction est exécutée un fois au démarrage d'Arduino.
 * Nous initialisons la connexion série avec l'ordinateur.
 */
void setup()
{
    Serial.begin(9600); //Démarrer la connexion série avec l'ordinateur
    // Pour voir le résultat, ouvrez le moniteur série d'Arduino IDE
}

void loop() // Constamment exécute et ré-exécuté
{
    // acquisition de la tension lue sur le senseur de température
    int reading = analogRead(sensorPin);
    // convertir cette lecture en tension, utilisez 3.3 pour un Arduino 3.3v
    float voltage = reading * 5.0;
    voltage /= 1024.0;
    // Afficher la tension
    Serial.print(voltage); Serial.println(" volts");
    // Maintenant, afficher la température
    float temperatureC = (voltage - 0.5) * 100 ; //convertie de 10mv par degrés avec un décalage (offset) de 500 mV
    //En degrés ((volatge - 500mV) fois 100)
    Serial.print(temperatureC); Serial.println(" degres C");
    // Maintenant, convertir en degrés Fahrenheight
    float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
    Serial.print(temperatureF); Serial.println(" degres F");
    delay(1000); //attendre une seconde
} 

Encore plus ?

Notre wiki contient un article nettement plus complet. N'hésitez pas à venir le consulter.

Où acheter ?

Vous trouverez le TMP36 et de nombreux autres senseurs sur le WebShop de MCHobby.