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:
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:
- 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:
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:
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:
- BME280 -Messdaten anzeigen
- DHT11/DHT22 - Durchschnittstemperatur berechnen und auf einem OLED-Display anzeigen
- DHT11/DHT22 - Wetterdaten aufzeichnen
- DHT11/DHT22 - Wetterdaten mit Bluetooth-Modul übermitteln
- DHT11/DHT22 - Wetterstation LAN
- DHT11/DHT22 - Wetterstation Anzeige auf einem LCD
- DHT11/DHT22 - Wetterstation WiFi
- Wetterdaten von Openweather mit der API 3.0 auf einem TFT anzeigen
- Messdaten mit BME680 und ESP32 anzeigen
- BMP280 - Temperatur und Luftdruck messen
- Temperaturanzeige auf einem LCD mit einem ESP32-Wroom
- Wetterstation mit CO2-Messung
- Wetterstation mit Nano ESP32, ESP32-Wroom, NodeMCU, DHT11/DHT22 und OLED
- Wetterstation mit UNO R4 WiFi und LCD
- DHT11/DHT22 - Wetterstation LAN Daten speichern
letzte Aktualisierung: