Arduino - Capteur de température TMP36

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×TMP36 Temperature Sensor
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur de température TMP36

Brochage

Le capteur de température TMP36 possède trois broches :

  • Broche GND : doit être connectée à GND (0V)
  • Broche VCC : doit être connectée à VCC (5V)
  • Broche +Vs : est l'alimentation pour le capteur qui peut varier entre 2,7V à 5,5V.
  • Broche Vout : broche de signal donnant une tension de sortie qui est proportionnelle linéairement à la température, doit être connectée à une broche analogique sur Arduino.
Schéma de brochage du capteur de température TMP36

Comment ça marche

TMP36 délivre une tension proportionnelle de manière linéaire à la température en degrés Celsius. Le facteur d’échelle de sortie du TMP36 est de 10 mV/°C. Cela signifie que la température est calculée en divisant la tension (mV) sur la broche de sortie par 10.

Diagramme de câblage

Schéma de câblage du capteur de température Arduino TMP36

This image is created using Fritzing. Click to enlarge image

Comment programmer pour le capteur de température TMP36

  • Obtenez la valeur ADC du capteur de température en utilisant la fonction analogRead().
int adcVal = analogRead(PIN_TMP36);
  • Convertissez la valeur ADC en tension en volts.
// Remplacez 5.0 par 3.3, si vous utilisez un Arduino 3.3V float voltage = adcVal * (5.0 / 1024.0);
  • Convertir la tension en température en Celsius.
float tempC = (voltage - 0.5) * 100;
  • (Facultatif) Convertissez les Celsius en Fahrenheit.
float tempF = tempC * 9 / 5 + 32;

Code Arduino

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-tmp36-temperature-sensor */ #define ADC_VREF 5.0 // in volt #define ADC_RESOLUTION 1024.0 #define PIN_TMP36 A0 void setup() { Serial.begin(9600); } void loop() { // get the ADC value from the TMP36 temperature sensor int adcVal = analogRead(PIN_TMP36); // convert the ADC value to voltage float voltage = adcVal * (ADC_VREF / ADC_RESOLUTION); // convert the voltage to the temperature in Celsius float tempC = (voltage - 0.5) * 100; // convert the Celsius to Fahrenheit float tempF = tempC * 9 / 5 + 32; // print the temperature in the Serial Monitor: Serial.print("TMP36 Temperature: "); Serial.print(tempC); // print the temperature in Celsius Serial.print("°C"); Serial.print(" ~ "); // separator between Celsius and Fahrenheit Serial.print(tempF); // print the temperature in Fahrenheit Serial.println("°F"); delay(1000); }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload sur l'IDE Arduino pour téléverser le code vers Arduino
  • Saisissez le capteur avec votre main
  • Consultez le résultat sur le moniteur série.
COM6
Send
TMP36 Temperature: 26.31°C ~ 79.36°F TMP36 Temperature: 26.44°C ~ 79.59°F TMP36 Temperature: 26.50°C ~ 79.70°F TMP36 Temperature: 26.56°C ~ 79.81°F TMP36 Temperature: 27.06°C ~ 80.71°F TMP36 Temperature: 27.75°C ~ 81.95°F TMP36 Temperature: 28.37°C ~ 83.07°F TMP36 Temperature: 29.00°C ~ 84.20°F TMP36 Temperature: 29.56°C ~ 85.21°F TMP36 Temperature: 30.00°C ~ 86.00°F TMP36 Temperature: 30.31°C ~ 86.56°F TMP36 Temperature: 30.62°C ~ 87.12°F TMP36 Temperature: 30.87°C ~ 87.57°F
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Amélioration de la précision de la température

Dans le code ci-dessus, nous utilisons par défaut une tension de référence de l'ADC (5V~5000mV). Nous pouvons augmenter la résolution de la température en changeant la tension de référence à 3.3V (3300mV). Cette tension de référence peut être modifiée en connectant ensemble les deux broches 3.3V et AREF comme le montre le schéma ci-dessous.

Schéma de câblage du capteur de température Arduino TMP36

This image is created using Fritzing. Click to enlarge image

Le tableau ci-dessous montre la différence entre l'utilisation d'une tension de référence de 5000 mV et de 1100 mV.

Vref(mV) 5000 mV (by default) 3300 mV
Reading Resolution 5000/1024 = 4.88 mV 3300/1024 = 3.22 mV
Temperature Resolution 0.49°C 0.32°C

Code Arduino

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-tmp36-temperature-sensor */ #define ADC_VREF 3.3 // in volt #define ADC_RESOLUTION 1024.0 #define PIN_TMP36 A0 void setup() { Serial.begin(9600); analogReference(EXTERNAL); // set the voltage reference from VREF pin } void loop() { // get the ADC value from the TMP36 temperature sensor int adcVal = analogRead(PIN_TMP36); // convert the ADC value to voltage float voltage = adcVal * (ADC_VREF / ADC_RESOLUTION); // convert the voltage to the temperature in Celsius float tempC = (voltage - 0.5) * 100; // convert the Celsius to Fahrenheit float tempF = tempC * 9 / 5 + 32; // print the temperature in the Serial Monitor: Serial.print("TMP36 Temperature: "); Serial.print(tempC); // print the temperature in Celsius Serial.print("°C"); Serial.print(" ~ "); // separator between Celsius and Fahrenheit Serial.print(tempF); // print the temperature in Fahrenheit Serial.println("°F"); delay(1000); }

Vidéo

#Références de fonction

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!