Modifications

Sauter à la navigation Sauter à la recherche
10 454 octets ajoutés ,  4 janvier 2015 à 12:19
aucun résumé de modification
Ligne 1 : Ligne 1 : −
== Introduction ==
+
{{MCH-Aider}}
An analog temperature sensor is pretty easy to explain, its a chip that tells you what the ambient temperature is!
     −
[[Fichier:TMP36-intro.jpg]]
+
== 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!
   −
These sensors use a solid-state technique to determine the temperature. That is to say, they don't use mercury (like old thermometers), [http://en.wikipedia.org/wiki/Bimetallic_strip bimetalic strips] (like in some home thermometers or stoves), nor do they use [http://en.wikipedia.org/wiki/Thermistor thermistors] (temperature sensitive resistors). Instead, they use the fact as temperature increases, the voltage across a diode increases at a known rate. (Technically, this is actually the voltage drop between the base and emitter - the Vbe - of a transistor.) By precisely amplifying the voltage change, it is easy to generate an analog signal that is directly proportional to temperature. There have been some improvements on the technique but, essentially that is how temperature is measured.
+
{{ADFImage|TMP36-intro.jpg|250px}}
   −
[[Fichier:TMP36-pinout.jpg]]
+
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.
   −
Because these sensors have no moving parts, they are precise, never wear out, don't need calibration, work under many environmental conditions, and are consistant between sensors and readings. Moreover they are very inexpensive and quite easy to use.
+
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.
   −
== Quelques informations ==
+
{{ADFImage|TMP36-pinout.jpg|250px}}
These stats are for the temperature sensor in the Adafruit shop, the [http://www.ladyada.net/media/sensors/TMP35_36_37.pdf Analog Devices TMP36] (-40 to 150C). Its very similar to the LM35/TMP35 (celsius output) and LM34/TMP34 (farenheit output). The reason we went with the '36 instead of the '35 or '34 is that this sensor has a very wide range and doensn't require a negative voltage to read sub-zero temperatures. Otherwise, the functionality is basically the same.
+
 
 +
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 {{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.  
 +
 
 +
Sinon, les fonctionnalités reste principalement les mêmes.
    
* 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) to 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
 
* Tension d'alimentation: 2.7V a 5.5V
 
* Tension d'alimentation: 2.7V a 5.5V
 
* Courant de charge: 0.05 mA
 
* Courant de charge: 0.05 mA
 
* [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html Fiche technique]
 
* [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html Fiche technique]
   −
== Comment mesurer la température ==
+
=== Comment mesurer la température ===
 
Comment calculer la température
 
Comment calculer la température
 
Il faut donc convertir la tension analogique en degré.
 
Il faut donc convertir la tension analogique en degré.
Ligne 27 : 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 36 : Ligne 47 :  
Soit 50 degrés Celcius.
 
Soit 50 degrés Celcius.
   −
<small>Source: [http://learn.adafruit.com/tmp36-temperature-sensor AdaFruit]</small>
+
si vous utilisez un LM35 ou similaire, la température se calcule comme suit (utiliser la ligne 'a' sur le graphique):
 +
 
 +
<nowiki>Temp en °C = ( Tension_de_sortie_en_millivolts) / 10</nowiki>
 +
 
 +
=== 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 [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 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
 +
 
 +
{{ADFImage|TMP36-test.jpg|450px}}
 +
 
 +
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.
 +
 
 +
{{ADFImage|TMP36-test2.jpg|450px}}
 +
 
 +
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.
 +
 
 +
{{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 ==
 +
=== 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.
 +
 
 +
{{ADFImage|TMP36-breadboard.jpg|550px}}
 +
 
 +
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:
 +
 
 +
<nowiki>Tension sur la broche en milliVolts = (lecture depuis l'ADC) * (5000/1024)</nowiki>
 +
 
 +
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:
 +
 
 +
<nowiki>Tension sur la broche en milliVolts = (lecture depuis l'ADC) * (3300/1024)</nowiki>
 +
 
 +
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:
 +
 
 +
<nowiki>Température Centigrade = [(tension analogique en mV) - 500] / 10</nowiki>
 +
 
 +
=== 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.
 +
<nowiki>//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
 +
}</nowiki>
 +
 
 +
=== 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.
 +
 
 +
[[Fichier:TMP36-BetterPrecision-Breadboard.jpg|400px]]
 +
 
 +
{{Ambox
 +
| type      = delete
 +
| image      = [[File:StopHand.png|40px|alt=Stop]]
 +
| textstyle  = color: red; font-weight: bold; font-style: italic;
 +
| 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>/* 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);
 +
}</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}}.
 +
 
 +
<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}}
29 837

modifications

Menu de navigation