Temperatursensor TMP36: Unterschied zwischen den Versionen
| (15 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
[[Kategorie:Arduino]] | [[Kategorie:Arduino]] | ||
[[Kategorie:Sensoren]] | |||
[[Datei:TMP36.png|thumb|rigth|300px|Abb. 1: Integrierter Temperatursensor TMP36 von Analog Devices]] | [[Datei:TMP36.png|thumb|rigth|300px|Abb. 1: Integrierter Temperatursensor TMP36 von Analog Devices]] | ||
'''Autoren:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | '''Autoren:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | ||
| Zeile 27: | Zeile 28: | ||
|- | |- | ||
| Wenn der Sensor falsch angeschlossen wird, brennt er sofort durch.<br> | | Wenn der Sensor falsch angeschlossen wird, brennt er sofort durch.<br> | ||
Bei | 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. | ||
|} | |} | ||
| Zeile 46: | Zeile 47: | ||
== Pinbelegung== | == Pinbelegung== | ||
[[Datei:TMP36-comes-in-both-a-three-pin-package.jpg|thumb|rigth|300px|Abb. 3: Pinbelegung des TMP36 von Analog Devices]] | |||
Die Zuordnung der Pins sehen Sie in Abb. 2 und Abb. 3 | |||
{| class="wikitable" | {| class="wikitable" | ||
! style="font-weight: bold;" | Pin | ! style="font-weight: bold;" | Pin | ||
| Zeile 59: | Zeile 62: | ||
== Umrechnung == | == Umrechnung == | ||
<math>\vartheta=100\,\frac{ | <math>\vartheta=100\,\frac{^\circ C}{V}\cdot U- 50\,^\circ C</math> | ||
{| class="wikitable" | {| class="wikitable" | ||
! style="font-weight: bold;" | Ausgangspannung | ! style="font-weight: bold;" | Ausgangspannung | ||
| Zeile 70: | Zeile 73: | ||
| 2 V || +150 °C | | 2 V || +150 °C | ||
|} | |} | ||
= Software = | |||
== Arduino IDE == | |||
<syntaxhighlight lang="c" style="background-color: #EFF1C1; font-size:medium">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); | |||
} | |||
</syntaxhighlight> | |||
== Tutorials == | == Tutorials == | ||
* [TMP36_Temperatursensor|HSHL-Wiki: Funktion des TMP36] | * [[TMP36_Temperatursensor|HSHL-Wiki: Funktion des TMP36]] | ||
* [https://funduino.de/nr-9-temperatur-messen Temperaturen mit einem TMP36 am Arduino messen] | * [https://funduino.de/nr-9-temperatur-messen Funduino: Temperaturen mit einem TMP36 am Arduino messen] | ||
== Datenblatt == | == Datenblatt == | ||
*[[Medium:TMP35 36 37.pdf| Analog Devices TMP36]] | *[[Medium:TMP35 36 37.pdf| Analog Devices TMP36]] | ||
Aktuelle Version vom 3. Februar 2026, 14:32 Uhr

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);
}