


Der Temperatursensor TMP36 ist ein analoger Sensor und er wird an einem analogen Pin — in diesem Fall an A0 des UNO R3 — angeschlossen. Er kann Temperaturen zwischen ‑40° und 125° Celsius messen.
Die Temperatur soll im ⇒Seriellen Monitor angezeigt werden:
So sieht es beim Nähern einer Wärmequelle aus:

Benötigte Bauteile:
- Temperatursensor TMP36
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Im Kopf des Programms und im setup-Teil sind nur wenige Angaben notwendig:
1 2 3 4 5 6 7 8 9 | int TEMPERATURSENSOR = A0; void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} } |
Für diese Anleitung wird ein wenig Mathematik benötigt.
Der Arduino besitzt einen analog-digital-Umwandler. Dieser wandelt die Betriebsspannung des Arduinos (5 Volt oder 3,3 Volt) in Zahlenwerte zwischen 0 und 1023 um. Wird ein Sensor am analogen Eingang angeschlossen, liefert ⇒ analogRead() daher Werte zwischen 0 und 1023.
Laut Datenblatt müssen für die Berechnung der Temperatur verschiedene Besonderheiten berücksichtigt werden:

Quelle: 🔗https://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf
- der analoge Eingang hat einen Wert von 0 bis 1023
- der Arduino wird mit einer Spannung von 5 V = 5000 mV betrieben
- vom gemessenen Wert müssen 0,5 V = 500 mV abgezogen werden
- ein Grad Celsius entspricht 10 mV
Jetzt zur Rechnung im loop-Teil:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | void loop() { // Spannung am Eingang A0 messen float SensorWert = analogRead(TEMPERATURSENSOR); /* richtiges Verhältnis zwischen 5 V = 5000 mV (Eingangsspannung Arduino) und 1023 (maximaler Wert (nach analog-digital Umwandlung) am analogen Pin A0 herstellen -> gemessenen Wert mit 5000 malnehmen und dann durch 1023 teilen */ float gemesseneSpannung = SensorWert * 5000 / 1023; /* 1 Grad = 10 mV Versatz von 500 mV von der gemessenen Spannung abziehen und durch 10 = 1 Grad teilen */ float gemesseneTemperatur = (gemesseneSpannung - 500.0) / 10.0; // Ausgabe im Seriellen Monitor Serial.print(“Temperatur: ”); // Wert anzeigen Serial.print(gemesseneTemperatur); // \u00b0 = ° Serial.print(“ \u00b0”); Serial.println(“C”); // Wartezeit bis zur nächsten Messung delay(2000); } |
Leider wird das Ergebnis mit einem Punkt als Dezimaltrennzeichen angezeigt. Mit dem Befehl ⇒replace kannst du das Problem lösen.
Der geänderte loop-Teil:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | void loop() { // Spannung am Eingang A0 messen float SensorWert = analogRead(TEMPERATURSENSOR); /* richtiges Verhältnis zwischen 5 V = 5000 mV (Eingangsspannung Arduino und 1023 (maximaler Wert am anlogen Pin A0) herstellen -> gemessenen Wert mit 5000 malnehmen und dann durch 1023 teilen */ float gemesseneSpannung = SensorWert * 5000 / 1023; /* 1 Grad = 10 mV Versatz von 500 mV von der gemessenen Spannung abziehen und durch 10 = 1 Grad teilen */ float gemesseneTemperatur = (gemesseneSpannung - 500.0) / 10.0; // Ausgabe im Seriellen Monitor Serial.print(“Temperatur: ”); // gemesseneTemperatur von float zu String umwandeln String AnzeigeTemperatur = String(gemesseneTemperatur); // replace -> . durch , ersetzen AnzeigeTemperatur.replace(“.”, “,”); // Temperatur anzeigen Serial.print(AnzeigeTemperatur); // \u00b0 = ° Serial.print(“ \u00b0”); Serial.println(“C”); // Wartezeit bis zur nächsten Messung delay(2000); } |

Neben dem TMP36 kann auch der LM35 die Temperatur messen. Hier ein Vergleich der gemessenen Temperaturen über einen Zeitraum von einigen Sekunden.
Das dazugehörige ⇒Programm
Verwandte Anleitungen:
letzte Aktualisierung:





