Temperaturen mit dem TMP36 und Arduino Messen

Mit einem Temperatursensor kann die Umgebungstemperatur gemessen werden. Der in dieser Anleitung verwendete TMP36 hat drei Pins – einen Pluspol, eine Masse und ein Signal. Dies ist ein linearer Temperatursensor. Eine Temperaturänderung von einem Grad Celsius entspricht einer Änderung von 10 Millivolt am Sensorausgang.

Der Sensor TMP36 hat eine Nennspannung von 750 mV bei 25°C (etwa Raumtemperatur). In der Anleitung wird gezeigt, wie die Messwerte des Sensors verbunden mit einem Arduino UNO über den seriellen Monitor am PC angezeigt werden können.

Der Versuchsaufbau:

TMP36Arduino UNO pins
GNDGND
Analoges SignalA0
Vin 2,7 bis 5V5V

Die Pinbelegung des TMP36:

Lesen des analogen Temperatursignals über den ADC

Der TMP36 kann mit einer Spannung von 2,7 V bis 5,5 Betrieben werden. In diesem Beispiel wird die 5 V Versorgung vom Arduino verwendet. Unabhängig von der Höhe der Versorgungspannung wird dar Signalausgang in Abhängigkeit von der Temperatur zwischen 0V und 1,75V betragen.

Bei der Verwendung eines Arduinos und dessen Analog-Pin A0, wird die folgende Formeln für den 10-Bit-ADC verwendet:

Spannung am Pin in mV = (Analog-Pin A0) * (5000/1024)
Diese Formel wandelt die Zahl 0-1023 vom ADC in 0-5000 mV (= 5 V) um.

Bei der Benutzung von 3,3V für den ADC ergibt sich die folgende Formel:

Spannung am Pin in mV = (Analog-Pin A0) * (3300/1024)
Diese Formel wandelt die Zahl 0-1023 vom ADC in 0-3300 mV (= 3,3 V) um.

 

Für die Umrechnung von mV in eine Temperatur wird die folgende Formel verwendet:

Temperatur in °C = [(analoge Spannung in mV) – 500] / 10

Diese Formel im Code integriert ergeben folgenden Code:

//TMP36 Pin Variable
int sensorPin = A0;                            // Analoger Eingangspin, an welchem der TMP36 angeschlossen ist
                                               // Die Auflösung beträgt 10 mV / Grad Celsius bei
                                               // 500 mV Offset um das Messen negativer Temperaturen zu ermöglichen

void setup()
{
  Serial.begin(9600);                          // Start des seriellen Monitors
}

void loop() 
{
  int reading = analogRead(sensorPin);         // Den Signalausgang des Temperatursensors lesen 
  float voltage = reading * 5.0;               // Umwandlung der Messung in mV
  voltage /= 1024.0; 
  
  Serial.print("Gemessene Spannung: ");
  Serial.print(voltage);                       // Ausgabe der gemessenen Spannung in mV
  Serial.print(" mV;\t"); 
  float temperatureC = (voltage - 0.5) * 100 ; // Umrechnung der Spannung in C°

  Serial.print("Gemessene Temperatur: ");
  Serial.print(temperatureC);                  // Ausgabe der berechneten Temperatur in °C
  Serial.println(" °C");

  delay(1000);                                 // 1 Sekunde warten bis zur nächsten Messung
}

Im seriellen Monitor lassen sich die werte dann wie folgt ansehen: