Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Vergleich von Temperatursensoren für den Arduino & Raspberry PI

Posted on 6. Juni 20185. März 2024 by Stefan Draeger

Für den Arduino & dem Raspberry PI gibt es diverse Temperatursensoren auf dem Markt. In diesem Beitrag möchte ich nun ein paar dieser Temperatursensoren gegenüberstellen und mit einem genauen Referenzwert prüfen.

  • Ziel
  • Ermittlung des Referenzwertes
  • Ermittlung der Messwerte
    • Welche Temperatursensoren?
      • Aufbau der Schaltung
    • Quellcode
      • Hauptklasse
      • LM35DZ
      • DS18B20
      • LM393
      • DHT11
      • DHT22
      • BME280
      • SHT21
      • Download
    • Messwerte
  • Auswertung

Ziel

Das Ziel soll es sein, die Genauigkeit der Sensoren zu ermitteln, dazu nutze ich einen Referenzwert, welcher in einem Klimaschrank mit dem geeichten Temperaturmessgerät TESTO 650 aufgenommen wurde.

Aufnahme im Klimaschrank (WEIS SB22 160)
Aufnahme im Klimaschrank (WEIS SB22 160)

Ermittlung des Referenzwertes

Um zu erkennen, welcher Sensor wirklich genau ist, benötigt man einen Referenzwert.
Der Referenzwert wird mit dem Gerät TESTO 650 ermittelt, dieser Temperatursensor ist geeicht und hat eine Abweichung von ca. ±0,1 °C.

Messgerät TESTO 650
Messgerät TESTO 650

Der Klimaschrank von der Firma WEISS verfügt über einen eigenen Temperatursensor und einer Steuerung, mit welcher ein SOLL Wert eingestellt werden kann.

Hier findest du die Bedienungsanleitung zum Klimaschrank SB 22 160 50 von der Firma Weiss Umwelttechnik GmbH.

Bedienungsanleitung Klimaschrank Weiss SB22 160 40Herunterladen
Einstellungen des Klimaschrankes Weiss SB22 160 40
Einstellungen des Klimaschrankes Weiss SB22 160 40

Ermittlung der Messwerte

Die Messwerte werden mit der Software „CoolTerm“ aufgezeichnet, dabei gibt es alle 2,5 Sekunden einen neuen Messwert.

Weniger als 2 Sekunden ist in diesem Aufbau nicht möglich, da der vorhandene DHT11 Sensor „nur“ alle 2 Sekunden einen neuen Messwert liefert.

Anwendung CoolTerm von Roger Meier's
Anwendung CoolTerm von Roger Meier’s

Die Anwendung „CoolTerm“ ist kostenfrei unter http://freeware.the-meiers.org/ erhältlich.

Welche Temperatursensoren?

Folgende Temperatursensoren verwende ich in diesem Experiment:

SensorTemperaturmessbereichToleranz
LM35DZ0 °C – +100 °C±0,4 °C
DS18B20-55 °C – +125 °C±0,5 °C
LM393+20 °C – +80 °C-keine Angabe-
DHT110 °C – +60 °C±2 °C
DHT22-40 °C – +80 °C±0,5 °C
BME280-40 °C – +85 °C-keine Angabe-
SHT21-40 °C – +125 °C±0,3 °C

Der Temperatursensor SHT21 wurde mir von einem Arbeitskollegen bereitgestellt.
Vielen Dank an Florian W.

Die Sensoren habe ich jeweils in einzelnen Tutorials behandelt, daher möchte ich hier „nur“ auf die Genauigkeit eingehen.

Aufbau der Schaltung

Anschluss der Temperatursensoren am MakerUNO
Anschluss der Temperatursensoren am MakerUNO

Da ich leider keine passenden Schaltplanelemente für die Sensoren SHT21, BME280 sowie dem LM393 hatte, habe ich hier die Bilder eingefügt.

Für den Aufbau der Schaltung werden folgende Bauelemente benötigt:

Bezeichnung
400 Pin Breadboard*
Breadboardkabel*, männlich – männlich
Arduino UNO* (oder vergleichbarer Microcontroller)
4,7 kOhm Widerstand*
Sensor – DHT11*
Sensor – DHT22*
Sensor – LM393 (NTC)*
Sensor – DS18B20*
Sensor – LM35DZ*

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Quellcode

Den Quellcode habe ich in mehrere Dateien aufgeteilt. Dieses hat den deutlichen Vorteil das jede Logik für den Sensor getrennt ist.

Hauptklasse

/**
 * Dieser Sketch liefert die Temperaturen der Sensoren
 * - LM35DZ
 * - DS18B20
 * - LM393
 * - DHT11
 * - DHT22
 * - BME280
 * - SHT21
 */

int index = 1;
void setup() {
  Serial.begin(9600); //Beginn der seriellen Kommunikation
  //Ausgeben der Kopfzeile
  Serial.println("Index;LM35DZ;DS18B20;LM393;DHT11;DHT22;BME280;SHT21");
}

void loop() {
  Serial.print(index++);
  Serial.print(";");
  Serial.print(getLM35DZValue());
  Serial.print(";");
  Serial.print(getDS18B20Value());
  Serial.print(";");
  Serial.print(getLM393Value());
  Serial.print(";");
  Serial.print(getDHT11Value());
   Serial.print(";");
  Serial.print(getDHT22Value());
  Serial.print(";");
  Serial.print(getBME280Value());
  Serial.print(";");
  Serial.print(getSHT21Value());
  Serial.println("");
  delay(2000); //2 Sekunden Pause
}

LM35DZ

int temperatursensorPin = 0 ;// Bestimmen das der Temperatursensor LM35 an den analogen PIN 0 angeschlossen ist.

float getLM35DZValue(){
  int val = analogRead(temperatursensorPin); // Den analogen Wert des Temperatursensors lesen.
  float dat = (125*val)>>8;                   // Aus dem gelesenen Wert die Temperatur berechnen.
  return dat;
}

DS18B20

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 5  //Sensor DS18B20 am digitalen Pin 2

OneWire oneWire(ONE_WIRE_BUS); //

DallasTemperature sensors(&oneWire);

float getDS18B20Value(){ 
 sensors.begin(); //Starten der Kommunikation mit dem Sensor
 sensors.requestTemperatures(); 
 return sensors.getTempCByIndex(0);
} 

LM393

const int analogPin = A1; //A0 vom LM393
 
float getLM393Value(){
   int analogValue = analogRead(analogPin);
   return getTempC(analogValue);
}
 
double getTempC(int analogValue){
  int mappedAnalogValue = map(analogValue, 0, 1023, 1023, 0);
  double tempC = log(((10240000 / mappedAnalogValue) - 10000));
  tempC = 1 / (0.001129148 + (0.000234125 * tempC) + (0.0000000876741 * tempC * tempC * tempC));
  tempC = tempC - 273.15;
  return tempC;
}

DHT11

#include "DHT.h"

DHT dht11(2, DHT11);

float getDHT11Value() {
  dht11.begin();
  return dht11.readTemperature();
}

DHT22

#include "DHT.h"

DHT dht22(3, DHT22);

float getDHT22Value() {
  dht22.begin();
  return dht22.readTemperature();
}

BME280

#include <Wire.h>
#include "cactus_io_BME280_I2C.h"
 
BME280_I2C bme(0x76);  // I2C using address 0x76
 
float getBME280Value() {
  bme.begin();
  bme.setTempCal(-1);
  bme.readSensor(); 
  return bme.getTemperature_C();
}

SHT21

#include "SparkFunHTU21D.h"
 
HTU21D sht21; //Objekt instanzieren
  
float getSHT21Value(){
  sht21.begin();
  return sht21.readTemperature();
}

Download

Der gesamte Quellcode kann über nachfolgenden Link heruntergeladen werden.

Vergleich von Temperatursensoren – QuellcodeHerunterladen

Messwerte

Die ermittelten Messwerte (Rohdaten) werden Semikolon separiert in eine Datei geschrieben.
Wobei die erste Zeile die Spaltenüberschrift mit der Bezeichnung des Sensors enthält.

Vergleich von Temperatursensoren – DatenHerunterladen

Diese Daten können dann mit Microsoft Excel, tabellarisch sowie nach einer Aufbereitung grafisch dargestellt werden.

Die Temperaturwerte werden mit einem Punkt getrennt, für eine Verarbeitung mit Microsoft Excel müssen diese geändert werden, so dass die Werte mit einem Komma getrennt werden.

Auswertung

Fehlerbalkendiagramm der Standardabweichung
Fehlerbalkendiagramm der Standardabweichung

Aus diesem Diagramm ist gut zuerkennen, dass der analoge Sensor LM35DZ sehr ungenau ist und der etwa baugleiche Sensor DS18B20 und der Temperatursensor LM393 dagegen sehr genau sind. Preislich liegen diese Sensoren etwa im gleichen Preissegment. Der Vorteil des LM393 Sensors ist zusätzlich, dass an diesem ein Schwellwert eingestellt werden kann über welchen ein digitaler PIN auf High gesetzt werden kann.

Der DHT22 hat die drittstärkste Genauigkeit und kann neben der Temperatur zusätzlich noch die Luftfeuchtigkeit messen. Jedoch war das Messen der Luftfeuchtigkeit nicht Bestandteil dieses Experimentes.

Vergleich von Temperatursensoren – AuswertungHerunterladen

13 thoughts on “Vergleich von Temperatursensoren für den Arduino & Raspberry PI”

  1. Jürgen sagt:
    1. Juni 2019 um 12:11 Uhr

    Danke für die Darstellung der Messergebnisse. Du hast bei 23C gemessen. Mich würde interessieren wie die Genauigkeit bei Null Grad ist. Denn das wäre für die Frostüberwachung bei Pflanzen/Gewächshaus auch gut zu wissen. Da wären Fehler von 3Grad entscheident.

    Antworten
  2. Stefan Tiez sagt:
    24. Juli 2019 um 10:17 Uhr

    Guten Tag und vielen Dank für diese sehr Inhaltsreiche Auflistung der Sensoren für Klimaprüfschränke.
    Ich habe während eines Praktikums bei einem Fotovoltaik Unternehmen einen Klimaprüfschrank in Aktion gesehen und war fasziniert.
    Aufgabe dieses Schrankes war die Wettereinflüsse auf ein Fotovoltaik Panel für fünf Jahre zu simulieren.
    Der Klimaprüfschrank hat diese Aufgabe in 2 Monaten erledigt.
    Das fand ich schon sehr beeindruckend.
    LG
    Stefan Tiez

    Antworten
    1. Sven Bucher sagt:
      10. Oktober 2019 um 08:58 Uhr

      Mir geht es genauso wie Ihnen! Ich bin beeindruckt von der Technik solcher Klimaprüfschränke. In unseren Laboren an der Universität werden für die zu untersuchenden Proben so die Umwelteinflüsse von Temperatur, Luftfeuchte und allen möglichen Parametern der Tropen eingestellt. Damit simulieren wir quasi einen Stresstest an unseren Proben. Gerade für diese Geräte ist sicherlich die Wahl eines Temperatursensors, welcher mit ausreichender Sensitivität arbeitet obligatorisch.

      Antworten
  3. Jan Weisenberger sagt:
    8. Dezember 2019 um 12:29 Uhr

    Hallo,
    ich stehe etwas auf dem „Schlauch“. Wie erkenne ich denn die Abweichung? Bei welcher Temperatur wurde gemessen – und was bedeutet beipielsweise bei LM35DZ 23°, 33° und 34°?

    LM35DZ DS18B20 LM393 DHT11 DHT22 BME280 SHT21
    1 23,00 °C 24,12 °C 22,96 °C 24,00 °C 24,90 °C 25,45 °C 25,47 °C
    2 33,00 °C 24,00 °C 22,88 °C 24,00 °C 24,70 °C 25,39 °C 25,39 °C
    3 34,00 °C 23,94 °C 22,88 °C 24,00 °C 24,60 °C 25,32 °C 25,31 °C

    Und bei welchg

    Antworten
    1. Alex sagt:
      24. Januar 2020 um 14:38 Uhr

      Have same question 🙁

      Antworten
      1. Stefan Draeger sagt:
        26. Januar 2020 um 09:15 Uhr

        Hi,

        der gesamte Aufbau war in einem Klimaschrank, welcher konstant die Temperatur von 23°C gehalten / erzeugt hat.
        Der Sensor LM35DZ hatte immer so ca. +/1 1-2°C Abweichung von dem Sollwert.

        Der Aufbau ist aber nicht repräsentativ da der Sensor ja industrielle Massenware ist können hier bei der Produktion Schwankungen in der Qualität auftreten. Es wäre also ratsam den gleichen Test erneut jedoch mit mehreren Sensoren sowie öfter durchzuführen.
        Das Experiment wurde auch von einem Professor aus der TU Braunschweig bewertet und dieser gab mir viele nützliche Tips wie man dieses Experiment aussagekräftiger machen kann. (Vielleicht kommt ja noch ein zweiter Teil 🙂 )

        Ich hoffe ich konnte dir helfen.

        Gruß,

        Stefan Draeger

        Antworten
  4. Jens sagt:
    11. September 2020 um 23:12 Uhr

    Wer an einen analogen Temparatursensor (LM35 oder NTC) an den Arduino anschließt, der verpasst das es gut digitale Sensoren gibt. Den DHT11 würde ich auch gegen einen DHT22 ersetzen. DS18B20 (1Wire) , DHT22 (1 Pin) und BME280 (I2C) sind gut. Vieleicht ist der LM75A noch zu nennen (I2C). Außer wer extrem hohe Temparaturen (>120°C) messen muss, muss auf analoge Sensoren zurück greifen.

    Antworten
  5. Frank Rühl sagt:
    29. November 2020 um 11:54 Uhr

    Wenn man sehr genau messen will, führt wahrscheinlich kein Weg an einem Laser-abgeglichenen PT 100 oder PT 1000 RTD (Widerstandstemperaturfühler) vorbei.
    Vermutlich hat selbst ein „normaler“ PT 100 / 1000-Sensor noch eine geringere Messunsicherheit als die vorgestellten Sensoren. Außerdem ist die Langzeitstabilität sehr gut.
    Diese Klimaschränke werden sicherlich auch damit arbeiten. Entscheidend ist auch die Plazierung des Fühlers im Schrank (Boden, Decke Seitenwand, Mittelpunkt).
    Wer ein Multimeter mit Temperaturmessfunktion und ein passendes Thermoelement besitzt, kann ja mal im Haushaltsbackofen das Thermoelement an verschiedenen Punkten plazieren, um ein Gefühl für die Temperaturverteilung zu bekommen.
    Und nein, ich will einen Backofen überhaupt nicht mit einem Laborgerät gleichsetzen! Es geht nur darum, zu zeigen, dass die gleichmäßige Temperaturverteilung eine ganz schwierige Aufgabe ist.

    Antworten
    1. Stefan Draeger sagt:
      1. Dezember 2020 um 14:09 Uhr

      Hi Frank,

      danke für dein Kommentar, ich gebe dir da grundsätzlich recht nur sind die Temperatursensoren in einem ganz anderen Preissegment und auch der anwendungsfall ist ja ein ganz anderer einen DHTxx Sensor würde ich nie für kritische Anwwendungen einsetzen wollen.

      Gruß,

      Stefan

      Antworten
  6. Tobias Schrand sagt:
    28. Januar 2021 um 16:02 Uhr

    So teuer sind pt 1000 Fühler auch nicht
    Evtl mal beim heizungsbauer fragen
    Sind zumeist in solaranlagen eingebaut per schiebhülse so 5€ etwa!
    auch z.t. als speichertempfühler
    Die sind lange haltbar und recht genau

    Antworten
  7. Dirk S sagt:
    19. Mai 2021 um 19:30 Uhr

    PT1000 gibts günstig bei Heizungsdiscount24: https://www.heizungsdiscount24.de/zubehoer/hd24-pt1000-pt-1000-temperaturfuehler-sensor-widerstandsthermometer-250c.html
    Dieser kommt mit 1,5m Kabel.
    Einfach mal im Suchfeld PT1000 eingeben, es gibt da noch Kesselfühler usw. welche dann entsprechend der gewünschten Anwendung besser passen könnten.

    Antworten
  8. Pingback: Arduino Programmierung: serielle Kommunikation und Datenvisualisierung - Technik Blog
  9. Pingback: Genauigkeitstest bei der PTB: Luftdrucksensoren BMP180, BMP280 und BME680 - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}