Senseur Température

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Présentation

Introduction

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

TMP36-intro.jpg

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.

TMP36-pinout.jpg

Parce qu'ils ne contiennent pas de "parties mécaniques", ces senseurs sont précis, ne s'usent pas, n'ont pas besoin d'être calibrés, fonctionne dans de nombreuses conditions environnementales, et restent cohérent entre la "partie senseur" et l'interface de lecture.

Le meilleur reste pour la fin, ils sont abordables et très faciles à utiliser.

Quelques informations

Ces données concernent le senseur de température disponible sur le WebShop de MCHobby, le senseur analogique TMP36 (-40 to 150C).

Il est très semblable au LM35/TMP35 (sortie en degrés Celsius) et LM34/TMP34 (sortie en degrés Farenheit). La raison pour laquelle nous utilisons des TMP36 au lieu des 35 ou 34, c'est parce que les TMP36 dispose d'une très large plage de mesure et qu'il ne nécessite pas d'alimentation négative pour lire les températures inférieures à 0.

Sinon, les fonctionnalités reste principalement les mêmes.

  • Taille: boitier TO-92 à 3 broches (similaire à un transistor)
  • Prix: ~2.50 eur disponible chez MCHobby
  • Gamme de température: -40°C a 150°C / -40°F a 302°F
  • Tension de sortie: 0.1V (-40°C) à 2.0V (150°C) mais la précision diminue après 125°C
  • Tension d'alimentation: 2.7V a 5.5V
  • Courant de charge: 0.05 mA
  • Fiche technique

Comment mesurer la température

Comment calculer la température Il faut donc convertir la tension analogique en degré. Comme le TMP36 permet de mesurer des température négatives, le 0 degré Celsius est placé à une offset de 500 milliVolts. Ainsi, toute mesure inférieur à 500 mv correspondra à une température négative.

TMP36-Graph.png

La formule est la suivante pour le TMP36:

Temp en °C = ( Tension_de_sortie_en_milliVolts - 500) / 10

Donc, si la tension de sortie est de 1 Volts, la température correspondante est de
(1000 - 500)/10

Soit 50 degrés Celcius.

si vous utilisez un LM35 ou similaire, la température se calcule comme suit (utiliser la ligne 'a' sur le graphique):

Temp en °C = ( Tension_de_sortie_en_millivolts) / 10

Utilisation de plusieurs senseurs

Vous pourriez rencontrer des problèmes si vous utilisez de multiples senseurs analogiques.

Si la température devient incohérente lorsque vous ajoutez plus de senseur, cela signifie que les senseurs interagissent entre eux quand le circuit de lecture analogique passe d'une entrée analogique à l'autre.

Vous pouvez régler ce problème en effectuant deux lectures consécutives avec un petit délai entre les deux. Il suffit de ne pas tenir compte de la première des deux lectures.

Vous obtiendrez plus d'information en lisant cet article (en anglais)

Tester le senseur

Tester le senseur est vraiment simple mais vous aurez besoin d'un bloc de piles (ou d'une alimentation).

Connectre une alimentation de 2.7 à 5.5V (2-4 piles AA fonctionnent bien) de façon à ce que la masse (GND) soit connecté sur la broche 3 (pin 3, celle de droite), et l'alimentation sur la broche 1 (pin 1, celle de gauche)

Raccordez ensuite un multimètre (en position mesure de tension continue) entre la masse (GND) et la broche 2 restée libre (pin 2, au milieu).

Si vous avez un TMP36 et que la température de la pièce avoisine 25°C, la tension lue devrait être environ 0.75 volts. Notez que si vous utilisez un LM35, la tension devrait être de 0.25V

TMP36-test.jpg

Le senseur indique que la température est de 26.3°C (ou 79.3°F)

Vous pouvez modifier la tension de sortie en pressant la partir en plastique du senseur entre vos doigts, vous allez constater que la tension monte en même temps que la température.

TMP36-test2.jpg

Avec mes doigts sur le senseur, pour le chauffer un peu, la température lue est maintenant de 29.7°C (85.5°F)

Vous pouvez aussi toucher le senseur avec un cube de glace, de préférence sur la partie en plastique pour ne pas mettre d'eau dans le circuit électrique. Vous allez constater que la tension diminue en même temps que la température chute.

TMP36-test3.jpg

J'ai pressé un cube de glace contre le senseur pour faire descendre la température jusqu'à 18.6°C (65.5°F)

Utiliser le senseur

Connecter un senseur de température

Connecting to a Temperature Sensor These sensors have little chips in them and while they're not that delicate, they do need to be handled properly. Be careful of static electricity when handling them and make sure the power supply is connected up correctly and is between 2.7 and 5.5V DC - so don't try to use a 9V battery!

They come in a "TO-92" package which means the chip is housed in a plastic hemi-cylinder with three legs. The legs can be bent easily to allow the sensor to be plugged into a breadboard. You can also solder to the pins to connect long wires. If you need to waterproof the sensor, you can see below for an Instructable for how to make an excellent case.

Lecture de la donnée analogique

Unlike the FSR or photocell sensors we have looked at, the TMP36 and friends doesn't act like a resistor. Because of that, there is really only one way to read the temperature value from the sensor, and that is plugging the output pin directly into an Analog (ADC) input.

TMP36-breadboard.jpg

Remember that you can use anywhere between 2.7V and 5.5V as the power supply. For this example I'm showing it with a 5V supply but note that you can use this with a 3.3v supply just as easily. No matter what supply you use, the analog voltage reading will range from about 0V (ground) to about 1.75V.

If you're using a 5V Arduino, and connecting the sensor directly into an Analog pin, you can use these formulas to turn the 10-bit analog reading into a temperature:

Voltage at pin in milliVolts = (reading from ADC) * (5000/1024)

This formula converts the number 0-1023 from the ADC into 0-5000mV (= 5V)

If you're using a 3.3V Arduino, you'll want to use this:

Voltage at pin in milliVolts = (reading from ADC) * (3300/1024)

This formula converts the number 0-1023 from the ADC into 0-3300mV (= 3.3V)

Then, to convert millivolts into temperature, use this formula:

Centigrade temperature = [(analog voltage in mV) - 500] / 10

Un thermomètre simple

This example code for Arduino shows a quick way to create a temperature sensor, it simply prints to the serial port what the current temperature is in both Celsius and Fahrenheit.

    //TMP36 Pin Variables
    int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
    //the resolution is 10 mV / degree centigrade with a
    //500 mV offset to allow for negative temperatures
    /*
    * setup() - this function runs once when you turn your Arduino on
    * We initialize the serial connection with the computer
    */
    void setup()
    {
    Serial.begin(9600); //Start the serial connection with the computer
    //to view the result open the serial monitor
    }
    void loop() // run over and over again
    {
    //getting the voltage reading from the temperature sensor
    int reading = analogRead(sensorPin);
    // converting that reading to voltage, for 3.3v arduino use 3.3
    float voltage = reading * 5.0;
    voltage /= 1024.0;
    // print out the voltage
    Serial.print(voltage); Serial.println(" volts");
    // now print out the temperature
    float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
    //to degrees ((volatge - 500mV) times 100)
    Serial.print(temperatureC); Serial.println(" degrees C");
    // now convert to Fahrenheight
    float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
    Serial.print(temperatureF); Serial.println(" degrees F");
    delay(1000); //waiting a second
    }

Obtenir une meilleure précision

For better results, using the 3.3v reference voltage as ARef instead of the 5V will be more precise and less noisy

This example from the light&temp datalogging tutorial has a photocell but you can ignore it

TMP36-BetterPrecision-Breadboard.jpg

    /* Sensor test sketch
    for more information see http://www.ladyada.net/make/logshield/lighttemp.html
    */
    #define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter!
    //TMP36 Pin Variables
    int tempPin = 1; //the analog pin the TMP36's Vout (sense) pin is connected to
    //the resolution is 10 mV / degree centigrade with a
    //500 mV offset to allow for negative temperatures
    int tempReading; // the analog reading from the sensor
    void setup(void) {
    // We'll send debugging information via the Serial monitor
    Serial.begin(9600);
    // If you want to set the aref to something other than 5v
    analogReference(EXTERNAL);
    }
    void loop(void) {
    tempReading = analogRead(tempPin);
    Serial.print("Temp reading = ");
    Serial.print(tempReading); // the raw analog reading
    // converting that reading to voltage, which is based off the reference voltage
    float voltage = tempReading * aref_voltage;
    voltage /= 1024.0;
    // print out the voltage
    Serial.print(" - ");
    Serial.print(voltage); Serial.println(" volts");
    // now print out the temperature
    float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
    //to degrees ((volatge - 500mV) times 100)
    Serial.print(temperatureC); Serial.println(" degrees C");
    // now convert to Fahrenheight
    float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
    Serial.print(temperatureF); Serial.println(" degrees F");
    delay(1000);
    }

Source: AdaFruit

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.