Arduino - TMP36 Temperatuursensor

Hardware Vereist

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×TMP36 Temperatuursensor
1×Breadboard (experimenteerprint)
1×Jumper draden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over TMP36 Temperatuursensor

Pinout

De TMP36 temperatuursensor heeft drie pinnen:

  • GND pin: moet verbonden worden met GND (0V)
  • VCC pin: moet verbonden worden met VCC (5V)
  • +Vs pin: is de voedingsspanning voor de sensor, die kan variëren tussen 2,7V en 5,5V
  • Vout pin: signaalpin die de uitgangsspanning geeft, lineair evenredig met de temperatuur, moet verbonden worden met een analoge pin op de Arduino
TMP36 temperatuursensor Pinout

Hoe Werkt Het

De TMP36 geeft een uitgangsspanning die lineair evenredig is met de temperatuur in graden Celsius. De uitgangsschaalfactor van de TMP36 is 10 mV/°C. Dit betekent dat de temperatuur wordt berekend door de spanning (in mV) van de output pin te delen door 10.

Bedradingsschema

Arduino TMP36 temperatuursensor Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Hoe Programmeert u Voor TMP36 Temperatuursensor

  • Verkrijg de ADC-waarde van de temperatuursensor met behulp van de functie analogRead().
int adcVal = analogRead(PIN_TMP36);
  • Zet de ADC-waarde om naar spanning in Volt
// Vervang 5.0 door 3.3 als u een 3.3V Arduino gebruikt float voltage = adcVal * (5.0 / 1024.0);
  • Zet de spanning om naar temperatuur in graden Celsius
float tempC = (voltage - 0.5) * 100;
  • (Optioneel) Zet Celsius om naar Fahrenheit
float tempF = tempC * 9 / 5 + 32;

Arduino Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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); }

Snelle Stappen

  • Kopieer de bovenstaande code en open deze met de Arduino IDE
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Houd de sensor vast met uw hand
  • Bekijk het resultaat in de Serial Monitor
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  

Verbeteren van de Temperatuurprecisie

In bovenstaande code gebruiken we standaard de ADC referentiespanning (5V ~ 5000mV). We kunnen de temperatuurnauwkeurigheid verhogen door de referentiespanning te veranderen naar 3,3V (3300mV). Deze referentiespanning kan worden gewijzigd door de pinnen 3.3V en AREF met elkaar te verbinden zoals in het onderstaande schema.

Arduino TMP36 temperatuursensor Bedradingsschema met Vref

This image is created using Fritzing. Click to enlarge image

De onderstaande tabel toont het verschil tussen het gebruik van 5000mV en 3300mV als referentiespanning

Vref(mV) 5000 mV (standaard) 3300 mV
Meetresolutie 5000/1024 = 4,88 mV 3300/1024 = 3,22 mV
Temperatuurresolutie 0,49°C 0,32°C

Arduino Code

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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); }

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!