Temperatursensor TMP36

Autoren: Prof. Dr.-Ing. Schneider
Einleitung
Ein nicht linearer Widerstandsverlauf und eine komplizierte Berechnung dieses Widerstandswertes sind die Nachteile der günstigen Heißleiter. Durch den stetig wachsenden Halbleitermarkt wurden integrierte Schaltungen und Transistoren immer komplexer. Die in den Halbleiterschaltungen verwendeten Technologien haben temperaturabhängige Verhalten, die bei höheren Frequenzen oder hohen Schaltströmen verstärkt wurden. Darum musste das Temperaturverhalten kompensiert werden.
Auf der anderen Seite kann aber das temperaturabhängige Verhalten der Halbleiterstoffe sinnvoll genutzt werden, um damit einfache und lineare Temperatursensoren herzustellen. Die unerwünschten Eigenschaften bei den Transistoren und integrierten Schaltungen können nun für integrierte Temperatursensoren verwendet werden, wobei die gleichen Herstellungsprozesse wie bei den anderen Halbleitern genutzt werden können.
Die daraus entstandenen integrierten Temperatursensoren sind sehr linear und einfach in der Anwendung. Mittlerweile gibt es viele verschiedene Typen und Hersteller.

| Vorsicht |
|---|
| Wenn der Sensor falsch angeschlossen wird, brennt er sofort durch. Bei schwankender Spannung am USB-Anschluss des Arduino können die Messwerte verfälscht werden. In so einem Fall empfielt es sich, eine externe Spannungsversorgung zu verwenden. |
Technische Daten
| Messbereich | -40 °C .. +125 °C (max. +150 °C) |
| Versorgungsspannung | 2,7 V .. 5,5 V |
| Skalierungsfaktor | 10 mV/°C |
| Versorgungsstrom | 0,05 mA |
| Messunsichererheit | ±2 °C |
Pinbelegung

Die Zuordnung der Pins sehen Sie in Abb. 2 und Abb. 3
| Pin | Belegung | Farbe |
|---|---|---|
| 1 | Versorgungsspannung 5 V (VCC) | Rot |
| 2 | Ausgang () | Gelb |
| 3 | Masse (GND) | Schwarz |
Umrechnung
| Ausgangspannung | Temperatur |
|---|---|
| 0 V | -50 °C |
| 0,5 V | 0 °C |
| 2 V | +150 °C |
Software
Arduino IDE
int rawValue= 0;
//Anschlusspin des TMP36 am Arduino
const int analogIn = A0;
//Variablen für die Messwerte
double voltage = 0;
double tempC = 0;
void setup(){
//Start des Seriellen Monitors mit der Baudrate 9600
Serial.begin(9600);
}
void loop(){
rawValue = analogRead(analogIn); //Einlesen des Messwerts
voltage = (rawValue / 1023.0) * 5000; // Umrechnen in Millivolt
tempC = (voltage-500) * 0.1; // Umrechnen in Grad Celsius
Serial.print("Rohwert = " ); // den rohen Sensorwert anzeigen
Serial.print(rawValue);
Serial.print("\t Millivolt = "); // die Spannung anzeigen
Serial.print(voltage,0); //
Serial.print("\t Temperatur in C = "); //die Temperatur anzeigen
Serial.println(tempC, 1);
//Delay bis zur nächsten Messung
delay(500);
}