Différences entre versions de « Senseur Température »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(18 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{tmbox | text = En cours de traduction}}
+
{{MCH-Aider}}
  
 
== Présentation ==
 
== Présentation ==
Ligne 5 : Ligne 5 :
 
Un senseur de température Analogique est vraiment facile à expliquer, c'est une puce qui vous informe sur la température ambiante actuelle!
 
Un senseur de température Analogique est vraiment facile à expliquer, c'est une puce qui vous informe sur la température ambiante actuelle!
  
[[Fichier:TMP36-intro.jpg|250px]]
+
{{ADFImage|TMP36-intro.jpg|250px}}
  
 
Ces senseur utilisent la technologie des [http://fr.wikipedia.org/wiki/%C3%89tat_solide états solides] ('''wikipédia''') pour déterminer la température. Donc, il n'utilise pas de mercure (comme les vieux thermomètres), [http://fr.wikipedia.org/wiki/Bilame bilames] (comme certains thermomètres ou thermomètre pour four), ni de [http://fr.wikipedia.org/wiki/Thermistance 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.
 
Ces senseur utilisent la technologie des [http://fr.wikipedia.org/wiki/%C3%89tat_solide états solides] ('''wikipédia''') pour déterminer la température. Donc, il n'utilise pas de mercure (comme les vieux thermomètres), [http://fr.wikipedia.org/wiki/Bilame bilames] (comme certains thermomètres ou thermomètre pour four), ni de [http://fr.wikipedia.org/wiki/Thermistance 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.
Ligne 11 : Ligne 11 :
 
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.
 
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.
  
[[Fichier:TMP36-pinout.jpg|250px]]
+
{{ADFImage|TMP36-pinout.jpg|250px}}
  
 
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.  
 
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.  
Ligne 18 : Ligne 18 :
  
 
=== Quelques informations ===
 
=== Quelques informations ===
Ces données concernent le senseur de [http://mchobby.be/PrestaShop/product.php?id_product=59 température disponible sur le WebShop de MCHobby], le [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html senseur analogique TMP36] (-40 to 150C).  
+
Ces données concernent le senseur de {{pl|59|température disponible sur le WebShop de MCHobby}}, le [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html 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.  
 
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.  
Ligne 25 : Ligne 25 :
  
 
* Taille: boitier TO-92 à 3 broches (similaire à un transistor)
 
* Taille: boitier TO-92 à 3 broches (similaire à un transistor)
* Prix: ~2.50 eur disponible chez [http://mchobby.be/PrestaShop/product.php?id_product=59 MCHobby]
+
* Prix: ~2.50 eur {{pl|59|disponible chez MCHobby}}
 
* Gamme de température: -40°C a 150°C / -40°F a 302°F
 
* 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 de sortie: 0.1V (-40°C) à 2.0V (150°C) mais la précision diminue après 125°C
Ligne 38 : Ligne 38 :
 
Ainsi, toute mesure inférieur à 500 mv correspondra à une température négative.
 
Ainsi, toute mesure inférieur à 500 mv correspondra à une température négative.
  
[[Fichier:TMP36-Graph.png]]
+
{{ADFImage|TMP36-Graph.png}}
 
   
 
   
 
La formule est la suivante pour le TMP36:
 
La formule est la suivante pour le TMP36:
Ligne 53 : Ligne 53 :
 
=== Utilisation de plusieurs senseurs ===
 
=== Utilisation de plusieurs senseurs ===
 
Vous pourriez rencontrer des problèmes si vous utilisez de multiples senseurs analogiques.
 
Vous pourriez rencontrer des problèmes si vous utilisez de multiples senseurs analogiques.
Problems you may encounter with multiple sensors:
+
 
If, when adding more sensors, you find that the temperature is inconsistant, this indicates that the sensors are interfering with each other when switching the analog reading circuit from one pin to the other. You can fix this by doing two delayed readings and tossing out the first one
+
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 [http://www.adafruit.com/blog/2010/01/29/how-to-multiplex-analog-readings-what-can-go-wrong-with-high-impedance-sensors-and-how-to-fix-it/ plus d'information en lisant cet article] ('''en anglais''')
 
Vous obtiendrez [http://www.adafruit.com/blog/2010/01/29/how-to-multiplex-analog-readings-what-can-go-wrong-with-high-impedance-sensors-and-how-to-fix-it/ plus d'information en lisant cet article] ('''en anglais''')
  
 
== Tester le senseur ==
 
== Tester le senseur ==
Testing these sensors is pretty easy but you'll need a battery pack or power supply.
+
Tester le senseur est vraiment simple mais vous aurez besoin d'un bloc de piles (ou d'une alimentation).
  
Connect a 2.7-5.5V power supply (2-4 AA batteries work fantastic) so that ground is connected to pin 3 (right pin), and power is connected to pin 1 (left pin)
+
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)
  
Then connect your multimeter in DC voltage mode to ground and the remaining pin 2 (middle). If you've got a TMP36 and its about room temperature (25°C), the voltage should be about 0.75V. Note that if you're using a LM35, the voltage will be 0.25V
+
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).
  
[[Fichier:TMP36-test.jpg|450px]]
+
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
  
The sensor is indicating that the temperature is 26.3°C also known as 79.3°F
+
{{ADFImage|TMP36-test.jpg|450px}}
  
You can change the voltage range by pressing the plastic case of the sensor with your fingers, you will see the temperature/voltage rise.
+
Le senseur indique que la température est de 26.3°C (ou 79.3°F)
  
[[Fichier:TMP36-test2.jpg|450px]]
+
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.
  
With my fingers on the sensor, heating it up a little, the temperature reading is now 29.7°C / 85.5°F
+
{{ADFImage|TMP36-test2.jpg|450px}}
  
Or you can touch the sensor with an ice cube, perferrably in a plastic bag so it doesn't get water on your circuit, and see the temperature/voltage drop.
+
Avec mes doigts sur le senseur, pour le chauffer un peu, la température lue est maintenant de 29.7°C (85.5°F)
  
[[Fichier:TMP36-test3.jpg|450px]]
+
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.
  
I pressed an ice-cube against the sensor, to bring the temperature down to 18.6°C / 65.5°F  
+
{{ADFImage|TMP36-test3.jpg|450px}}
 +
 
 +
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 ==
 
== Utiliser le senseur ==
 
=== Connecter un senseur de température ===
 
=== Connecter un senseur de température ===
Connecting to a Temperature Sensor
+
Ces senseurs sont équipés d'un petit circuit intégré et même s'ils ne sont pas fragiles, ils doivent être manipulés correctement.
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.
+
Soyez attentif aux décharges électrostatiques lorsque vous les manipulez, assurez-vous aussi de raccorder l'alimentation correctement et entre 2.7 et 5.5V continu - n'essayez pas avec une pile de 9v!
 +
 
 +
Ces senseurs sont fournit dans un boitier "TO-92" ce qui signifie que le circuit intégré ressemble à un demi-cylindre avec trois pattes. Les pattes peuvent être pliées facilement pour insérer le senseur dans un breadboard. Vous pouvez également souder des longs fils sur les broches.
 +
 
 +
Si vous avez besoin d'un senseur étanche, vous pouvez suivre les instructions ci-dessous qui expliquent comment faire un excellent boitier.
  
 
=== Lecture de la donnée analogique ===
 
=== 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.
+
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.
  
[[Fichier:TMP36-breadboard.jpg|550px]]
+
{{ADFImage|TMP36-breadboard.jpg|550px}}
  
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.
+
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.
  
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:
+
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:
  
''Voltage at pin in milliVolts = (reading from ADC) * (5000/1024)''
+
<nowiki>Tension sur la broche en milliVolts = (lecture depuis l'ADC) * (5000/1024)</nowiki>
  
This formula converts the number 0-1023 from the ADC into 0-5000mV (= 5V)
+
ADC signifie Analogic to Digital Converter... convertisseur Analogique Digital (donc une entrée analogique d'Arduino).
  
If you're using a 3.3V Arduino, you'll want to use this:
+
La formule ci-dessus converti le nombre de 0 à 1023 produit par l'ADC en une valeur de 0 à 5000mV (= 5V)
  
''Voltage at pin in milliVolts = (reading from ADC) * (3300/1024)''
+
Si vous utilisez un Arduino 3.3V, vous aurez besoin d'utiliser cette autre formule:
  
This formula converts the number 0-1023 from the ADC into 0-3300mV (= 3.3V)
+
<nowiki>Tension sur la broche en milliVolts = (lecture depuis l'ADC) * (3300/1024)</nowiki>
  
Then, to convert millivolts into temperature, use this formula:
+
La formule ci-dessus converti le nombre de 0 à 1023 produit par l'ADC en une valeur de 0 à 3300mv (= 3.3V)
  
''Centigrade temperature = [(analog voltage in mV) - 500] / 10''
+
La tension en millivolts est ensuite convertie en température (degré Celsius à l'aide de la formule suivante:
 +
 
 +
<nowiki>Température Centigrade = [(tension analogique en mV) - 500] / 10</nowiki>
  
 
=== Un thermomètre simple ===
 
=== 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.
+
Cet exemple de code pour Arduino montre comment créer rapidement un senseur de température, il affiche simplement la température it simply prints to the serial port what the current temperature is in both Celsius and Fahrenheit.
  <nowiki>   //TMP36 Pin Variables
+
  <nowiki>//Variable de la broche pour le TMP36
    int sensorPin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
+
int sensorPin = 0; //la broche analogique sur laquelle le sortie VOut du TMP36 est raccordé
    //the resolution is 10 mV / degree centigrade with a
+
// Résolution est de 10 mV / degrée centigrade avec une offset de 500 mV
    //500 mV offset to allow for negative temperatures
+
// pour permettre la lecture de température négative
    /*
+
 
    * setup() - this function runs once when you turn your Arduino on
+
/*
    * We initialize the serial connection with the computer
+
* 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()
+
*/
    {
+
void setup()
     Serial.begin(9600); //Start the serial connection with the computer
+
{
     //to view the result open the serial monitor
+
     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() // run over and over again
+
}
    {
+
 
     //getting the voltage reading from the temperature sensor
+
void loop() // Constamment exécute et ré-exécuté
 +
{
 +
     // acquisition de la tension lue sur le senseur de température
 
     int reading = analogRead(sensorPin);
 
     int reading = analogRead(sensorPin);
     // converting that reading to voltage, for 3.3v arduino use 3.3
+
     // convertir cette lecture en tension, utilisez 3.3 pour un Arduino 3.3v
 
     float voltage = reading * 5.0;
 
     float voltage = reading * 5.0;
 
     voltage /= 1024.0;
 
     voltage /= 1024.0;
     // print out the voltage
+
     // Afficher la tension
 
     Serial.print(voltage); Serial.println(" volts");
 
     Serial.print(voltage); Serial.println(" volts");
     // now print out the temperature
+
     // Maintenant, afficher la température
     float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
+
     float temperatureC = (voltage - 0.5) * 100 ; //convertie de 10mv par degrés avec un décalage (offset) de 500 mV
     //to degrees ((volatge - 500mV) times 100)
+
     //En degrés ((volatge - 500mV) fois 100)
     Serial.print(temperatureC); Serial.println(" degrees C");
+
     Serial.print(temperatureC); Serial.println(" degres C");
     // now convert to Fahrenheight
+
     // Maintenant, convertir en degrés Fahrenheight
 
     float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
 
     float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
     Serial.print(temperatureF); Serial.println(" degrees F");
+
     Serial.print(temperatureF); Serial.println(" degres F");
     delay(1000); //waiting a second
+
     delay(1000); //attendre une seconde
    }</nowiki>
+
}</nowiki>
  
 
=== Obtenir une meilleure précision ===
 
=== 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
+
Pour obtenir un meilleur résultat, utilisez la tension de référence 3.3v comme '''ARef''' à la place des 5V. La lecture sera plus précise et il y aura moins de "bruit" électrique.
  
This example from the light&temp datalogging tutorial has a photocell but you can ignore it
+
Cet exemple issu du tutoriel "Datalogging de la lumière et température" (AdaFruit) à une PhotoResistance mais vous pouvez simplement l'ignorez.
  
 
[[Fichier:TMP36-BetterPrecision-Breadboard.jpg|400px]]
 
[[Fichier:TMP36-BetterPrecision-Breadboard.jpg|400px]]
Ligne 156 : Ligne 167 :
 
| image      = [[File:StopHand.png|40px|alt=Stop]]
 
| image      = [[File:StopHand.png|40px|alt=Stop]]
 
| textstyle  = color: red; font-weight: bold; font-style: italic;
 
| textstyle  = color: red; font-weight: bold; font-style: italic;
| text      = To use the 3.3v pin as your analog reference, don't forget to specify "analogReference(EXTERNAL)" in your setup as in the code below.
+
| text      = Pour utiliser la broche 3.3v comme tension de référence analogique, n'oubliez pas de spécifier "analogReference(EXTERNAL)" dans la fonction '''setup''' comme dans le code ci-dessous. Sans cet appel, Arduino utilisera la tension de référence par défaut (5v) au lieu de la référence externe que nous voulons utiliser (3.3v).
 
}}
 
}}
  
  <nowiki>   /* Sensor test sketch
+
  <nowiki>/* Sketch de test du Senseur
    for more information see http://www.ladyada.net/make/logshield/lighttemp.html
+
  Traduit par MCHobby, vente de carte et kit Arduino/Raspberry
    */
+
 
    #define aref_voltage 3.3 // we tie 3.3V to ARef and measure it with a multimeter!
+
  Source: AdaFruit Industrie
    //TMP36 Pin Variables
+
  Pour plus d'information, voir le site d'AdaFruit
    int tempPin = 1; //the analog pin the TMP36's Vout (sense) pin is connected to
+
  http://www.ladyada.net/make/logshield/lighttemp.html
    //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
+
#define aref_voltage 3.3 // nous raccordons 3.3V à ARef!
    void setup(void) {
+
 
     // We'll send debugging information via the Serial monitor
+
//Variable identifiant broche utilisé pour lire le TMP36
 +
int tempPin = 1; // broche analogique sur laquelle la sortie VOut du TMP36 est raccordée
 +
 
 +
// La résolution est de 10 mV / degré centigrade avec une offset (décalage)
 +
// de 500 mV pour permettre la lecture de température négative
 +
int tempReading; // lecture de analogique provenant du senseur
 +
 
 +
void setup(void) {
 +
     // Nous envoyons les informations de débogage sur le port série
 
     Serial.begin(9600);
 
     Serial.begin(9600);
     // If you want to set the aref to something other than 5v
+
     // Nous voulons utiliser une aref avec une autre tension que 5v
 
     analogReference(EXTERNAL);
 
     analogReference(EXTERNAL);
    }
+
}
    void loop(void) {
+
 
 +
void loop(void) {
 
     tempReading = analogRead(tempPin);
 
     tempReading = analogRead(tempPin);
     Serial.print("Temp reading = ");
+
     Serial.print("Lecture de la Temp = ");
     Serial.print(tempReading); // the raw analog reading
+
     Serial.print(tempReading); // La valeur analogique brute
     // converting that reading to voltage, which is based off the reference voltage
+
 
 +
     // convertir cette lecture en tension, conversion basée sur la tension de référence
 
     float voltage = tempReading * aref_voltage;
 
     float voltage = tempReading * aref_voltage;
 
     voltage /= 1024.0;
 
     voltage /= 1024.0;
     // print out the voltage
+
     // Afficher la tension
 
     Serial.print(" - ");
 
     Serial.print(" - ");
 
     Serial.print(voltage); Serial.println(" volts");
 
     Serial.print(voltage); Serial.println(" volts");
     // now print out the temperature
+
     // Maintenant, afficher la température
     float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
+
     float temperatureC = (voltage - 0.5) * 100 ; //conversion de 10 mv par degrés avec une offset de 500 mV
     //to degrees ((volatge - 500mV) times 100)
+
     //en degrés ((volatge - 500mV) fois 100)
     Serial.print(temperatureC); Serial.println(" degrees C");
+
     Serial.print(temperatureC); Serial.println(" degres C");
     // now convert to Fahrenheight
+
     // maintenant en degrés Fahrenheight
 
     float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
 
     float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
     Serial.print(temperatureF); Serial.println(" degrees F");
+
     Serial.print(temperatureF); Serial.println(" degres F");
 
     delay(1000);
 
     delay(1000);
    }</nowiki>
+
}</nowiki>
 +
 
 +
== Encore plus ==
 +
* [http://www.instructables.com/id/Waterproof-a-LM35-Temperature-Sensor/ Instructions pour rendre un TMP36 étanche] ('''en anglais''')
 +
 
 +
== Où acheter ==
 +
 
 +
* Le {{pl|59|TMP36 est disponible sur le WebShop de MCHobby}}.
  
<small>Source: [http://learn.adafruit.com/tmp36-temperature-sensor AdaFruit]</small>
+
<hr />
 +
<small>Source: [http://learn.adafruit.com/tmp36-temperature-sensor Temperature sensor TMP36]. Crédit: [http://www.adafruit.com www.adafruit.com]</small>
  
 
{{ADF-Accord}}
 
{{ADF-Accord}}
  
 
{{MCH-Accord}}
 
{{MCH-Accord}}

Version actuelle datée du 4 janvier 2015 à 12:19


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

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
Crédit: AdaFruit Industries www.adafruit.com

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
Crédit: AdaFruit Industries www.adafruit.com

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.

{{{2}}}
Crédit: AdaFruit Industries www.adafruit.com

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
Crédit: AdaFruit Industries www.adafruit.com

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
Crédit: AdaFruit Industries www.adafruit.com

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
Crédit: AdaFruit Industries www.adafruit.com

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

Ces senseurs sont équipés d'un petit circuit intégré et même s'ils ne sont pas fragiles, ils doivent être manipulés correctement.

Soyez attentif aux décharges électrostatiques lorsque vous les manipulez, assurez-vous aussi de raccorder l'alimentation correctement et entre 2.7 et 5.5V continu - n'essayez pas avec une pile de 9v!

Ces senseurs sont fournit dans un boitier "TO-92" ce qui signifie que le circuit intégré ressemble à un demi-cylindre avec trois pattes. Les pattes peuvent être pliées facilement pour insérer le senseur dans un breadboard. Vous pouvez également souder des longs fils sur les broches.

Si vous avez besoin d'un senseur étanche, vous pouvez suivre les instructions ci-dessous qui expliquent comment faire un excellent boitier.

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.

TMP36-breadboard.jpg
Crédit: AdaFruit Industries www.adafruit.com

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

Un thermomètre simple

Cet exemple de code pour Arduino montre comment créer rapidement un senseur de température, il affiche simplement la température it simply prints to the serial port what the current temperature is in both Celsius and Fahrenheit.

//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
}

Obtenir une meilleure précision

Pour obtenir un meilleur résultat, utilisez la tension de référence 3.3v comme ARef à la place des 5V. La lecture sera plus précise et il y aura moins de "bruit" électrique.

Cet exemple issu du tutoriel "Datalogging de la lumière et température" (AdaFruit) à une PhotoResistance mais vous pouvez simplement l'ignorez.

TMP36-BetterPrecision-Breadboard.jpg

/* Sketch de test du Senseur
   Traduit par MCHobby, vente de carte et kit Arduino/Raspberry

   Source: AdaFruit Industrie
   Pour plus d'information, voir le site d'AdaFruit
   http://www.ladyada.net/make/logshield/lighttemp.html
*/

#define aref_voltage 3.3 // nous raccordons 3.3V à ARef!

//Variable identifiant broche utilisé pour lire le TMP36
int tempPin = 1; // broche analogique sur laquelle la sortie VOut du TMP36 est raccordée

// La résolution est de 10 mV / degré centigrade avec une offset (décalage)
// de 500 mV pour permettre la lecture de température négative
int tempReading; // lecture de analogique provenant du senseur
   
void setup(void) {
    // Nous envoyons les informations de débogage sur le port série
    Serial.begin(9600);
    // Nous voulons utiliser une aref avec une autre tension que 5v
    analogReference(EXTERNAL);
}

void loop(void) {
    tempReading = analogRead(tempPin);
    Serial.print("Lecture de la Temp = ");
    Serial.print(tempReading); // La valeur analogique brute

    // convertir cette lecture en tension, conversion basée sur la tension de référence
    float voltage = tempReading * aref_voltage;
    voltage /= 1024.0;
    // Afficher la tension
    Serial.print(" - ");
    Serial.print(voltage); Serial.println(" volts");
    // Maintenant, afficher la température
    float temperatureC = (voltage - 0.5) * 100 ; //conversion de 10 mv par degrés avec une offset de 500 mV
    //en degrés ((volatge - 500mV) fois 100)
    Serial.print(temperatureC); Serial.println(" degres C");
    // maintenant en degrés Fahrenheight
    float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
    Serial.print(temperatureF); Serial.println(" degres F");
    delay(1000);
}

Encore plus

Où acheter


Source: Temperature sensor TMP36. Crédit: www.adafruit.com

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.