DHT22 falsche Temp wieso?

hallo,
habe hier einen DHT22 Temp_Sensor.
mit diesem sketch

#include "DHT.h"
 
#define DHTPIN 9     
#define DHTTYPE DHT22 //DHT11, DHT21, DHT22
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() 
{
  Serial.begin(9600); 
  Serial.println("DHT22 - Test!");
 
  dht.begin();
}
 
void loop() 
{
  float h = dht.readHumidity();     //Luftfeuchte auslesen
  float t = dht.readTemperature();  //Temperatur auslesen
 
  // Prüfen ob eine gültige Zahl zurückgegeben wird. Wenn NaN (not a number) zurückgegeben wird, dann Fehler ausgeben.
  if (isnan(t) || isnan(h)) 
  {
    Serial.println("DHT22 konnte nicht ausgelesen werden");
  } 
  else
  {
    Serial.print("Luftfeuchte: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatur: "); 
    Serial.print(t);
    Serial.println(" C");
  }
}

die Temp die er mir bringt weicht um ca 2,5° von der tatsächlichen ab.
Weiss jemand wieso oder muss ich da noch was berücksichtigen?

Gruß Jürgen

selfmade:
die Temp die er mir bringt weicht um ca 2,5° von der tatsächlichen ab.
Weiss jemand wieso oder muss ich da noch was berücksichtigen?

Bist Du sicher, dass die zur Vergleichsmessung verwendete Klimakammer in Ordnung ist und korrekt bedient wurde?

Hat das zur Messung der "tatsächlichen" Temperatur verwendete Thermometer ein gültiges Kalibrierungsprotokoll?

Und bist Du sicher, die Kalibrierungsdaten des Vergleichsthermometers bei der Vergleichsmessung sachgerecht berücksichtigt zu haben?

Allgemeine Toleranzen der unterschiedlichen (und vermutlich nicht geeichten) Messmittel?

jurs:

selfmade:
die Temp die er mir bringt weicht um ca 2,5° von der tatsächlichen ab.
Weiss jemand wieso oder muss ich da noch was berücksichtigen?

Bist Du sicher, dass die zur Vergleichsmessung verwendete Klimakammer in Ordnung ist und korrekt bedient wurde?

Hat das zur Messung der "tatsächlichen" Temperatur verwendete Thermometer ein gültiges Kalibrierungsprotokoll?

Und bist Du sicher, die Kalibrierungsdaten des Vergleichsthermometers bei der Vergleichsmessung sachgerecht berücksichtigt zu haben?

hallo,
ich habe hier eine Testo Tempretaurmessgerät rumliegen
das zeigte mir bis dato stets korrekte Werte an
ob das nun zu 100% 22,3 oder 22,4 oder 22,6 Grad sind interessiert mich nicht ich lege keinen Wert auf eine Abweichung von 0,5 Grad wie beim DHT22 angegeben.

nur wenn ich mit dem Testo messe und bei mir im Raum sind es 22,8 Grad
und der DHT lifert mir 25,1 Grad dann stört mich das schon... er zeigt eigentlich ständig zw. 2 und 2,5 Grad mehr an

Klaus_ww:
Allgemeine Toleranzen der unterschiedlichen (und vermutlich nicht geeichten) Messmittel?

siehe meinen letzten Post.

Du darfst mir glauben das ich es selber ohne Thermometer merken würde ob hier im Raum nun 23 oder 25 Grad sind.
Bzw. besser ausgedrückt.... ich würde es merken ob wir ich hier weit über 23 Grad im Raum hätte

und mit Sicherheit stimmt hier der DHT22 nicht wenn er 23,5 statt 23 oder 23,7 23,8 oder sogar 23,9 anzeigen würde dann würde ich das noch akzeptieren aber der hat stets Unterschiede von 2 Grad mehr

Dann

  • hat das Ding vielleicht ne Macke
  • heizt irgendwas in der Nähe vom DHZ (Spannungsregler o.ä.)
  • passt was beim Aufbau nicht
  • Versorgungsspannung bedenklich

Mir könnten jetzt noch mehr Möglichkeiten einfallen .... aber keine Lust auf Ratespiele :slight_smile:

ok
also das Gerät hängt an einem Testaufbau an einer Holztafel
mit dem testo habe ich in ca 30cm Entfernung vom dem DHT gemessen.

der DHT wurde an einem arduino Mega angeschlossen auf dem ein Ethernet-shield steckt .
an dem Mega ist noch ein Ultraschall-sensor und eine RealTime Clock angeschlossen.
Der Mega wird via ISB kabel mit Strom vom PC aus versorgt
mit dem Multimeter messe ich
4,73 Volt die der Arduino liefert
ich habe den sketch von hier

und auch den gleichen Aufbau verwendet

reicht das als Info

Grüße Jürgen

Bei meinem DHT22 liegt der Temperaturfühler flach auf der Platine auf.
Die Platine ist sehr dünn und genau auf der gegenüberliegenden Seite unter dem Temperaturfühler ist das OneWire IC montiert.
Möglicherweise heitzt die Abwärme vom IC den Fühler auf.
Vielleicht kannst du den Fühler etwas wegbiegen, in meinem Gehäuse ist da noch platz nach oben.

Ansonsten hat der Fühler 2 Anschlüsse (PTC oder NTC) und man kann an der Stelle durch einen Reihen- oder Parallelwiderstand eine "Eichung" vornehmen.

Gruß, Peter

peter_de:
Bei meinem DHT22 liegt der Temperaturfühler flach auf der Platine auf.
Die Platine ist sehr dünn und genau auf der gegenüberliegenden Seite unter dem Temperaturfühler ist das OneWire IC montiert.
Möglicherweise heitzt die Abwärme vom IC den Fühler auf.
Vielleicht kannst du den Fühler etwas wegbiegen, in meinem Gehäuse ist da noch platz nach oben.

hallo

nein, ich habe den DHT22 Fühler mit dem Kabel dran... das ist ca 30cm lang
der Fühler hängt auf einem Holzbrett... daran ist alles festgeschraubt und er ist ca 10 cm von allen Bauteilen weg
da heizt sich nichts auf

Ansonsten hat der Fühler 2 Anschlüsse (PTC oder NTC) und man kann an der Stelle durch einen Reihen- oder Parallelwiderstand eine "Eichung" vornehmen.

Gruß, Peter

das klingt interessant
kannst du das genauer erklären?
wie gesagt ich habe an dem Fühler schon einen 10k Widerstand siehe den Link oben.. ich habe ihn eins zu eins so angeschlossen
kannst Du das mit dem PTC und NTC mal genauer erklären und sagen was ich wie machen muss und wie der sketch dann lautet... so könnte ich ihn genauer testen bevor ich ihn zurück schicke

Ich habe auch die Version mit den 30cm Kabel und was ich beschrieben habe spielt sich im Fühlergehäuse ab.
Wenn du das Teil evtl. zurück schicken willst, dann lass es besser sein mit dem Abgleichversuch im Fühlergehäuse denn dazu muss das Teil geöffnet werden un man muss daran rumlöten.

Versuch es mal mit einer zusätzlichen Zeile im Skech.

...
  else
  {
    t = t - 2.5;    // 2,5 °C abziehen
    Serial.print("Luftfeuchte: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperatur: "); 
    Serial.print(t);
    Serial.println(" C");
  }

Das ist wohl die einfachste Lösung.

aha,
ok das leuchtet mir ein... du vermutest also dass das Teil ganz einfach 2 oder 2,5 Grad zuviel misst...
und das immer gleich.
oder?
ich dachte an diese Methode auch schon einfach die zuviel angezeigten Grad abzuziehen

ich habe nur schiss das dieser sensor eine Treffer hat und irgendwann mir ganz aussteigt

selfmade:
ich habe hier eine Testo Tempretaurmessgerät rumliegen
das zeigte mir bis dato stets korrekte Werte an
ob das nun zu 100% 22,3 oder 22,4 oder 22,6 Grad sind interessiert mich nicht ich lege keinen Wert auf eine Abweichung von 0,5 Grad wie beim DHT22 angegeben.

OK, also keine Klimakammer, kein geeichtes Vergleichsthermometer, kein speziell für Vergleichsmessungen geeigneter Messaufbau. Da brauchst Du Dich über Temperaturunterschiede nicht zu wundern. Wenn Du also zwei Thermometer einer Genauigkeitsklasse +/-1°C verwendest, wären angezeigte Temperaturunterschiede bis 2°C vollkommen normal. Wobei Du vor dem Ablesen zur Temperaturangleichung lange genug warten musst, siehe unten.

Wegen der fehlenden Klimakammer hast Du auch erhebliche systematische Messfehler.
Beispiel: Wenn die Lufttemperatur im Raum bei gut 20°C liegt, wo befindet sich Dein Körper in Bezug auf den DHT22 Sensor?

Der menschliche Körper hat eine Körpertemperatur von ca. 37°C und wenn Du einen Sensor in 22°C warme Luft hältst mit einem 37°C warmen Körper in der Nähe, dann zeigt der Sensor immer eine Temperatur zwischen den beiden verschiedenen Temperaturen an, also zwischen 22 und 37°C. Ob die Temperatur näher am einen oder näher am anderen Wert liegt, hängt von den konkreten Umständen ab.

Anderes Ursache Deiner Messfehler: Du heizt Deinen Sensor durch Messung in Dauerschleife, was natürlich auch zu einer Temperaturerhöhung beiträgt. Im Standby zieht Dein Sensor vielleicht 30µA, macht eine Standby-Leistung von 5V0,03mA = 0,15mW. Aber beim Messen zieht Dein Sensor 1,5mA, macht eine Verlustleistung von 5V1,5mA = 7,5mW.

Nun ist zwar eine Heizleistung von 7,5mW nicht viel, aber der Sensorchip ist klein und dann macht es eben doch einige Zehntel aus. Versuche mal, in größeren Zeitintervallen zu messen, so dass der Sensor zwischendurch nennenswerte Zeit im Standby mit geringster Verlustleistung verbringt und weniger Zeit bei voller Leistungsaufnahme im Messbetrieb! Z,B. eine Messung alle 10 Sekunden.

Darüber hinaus mußt Du die Zeitkonstante berücksichtigen: Wenn Du den Sensor z.B. mit den Fingern angefasst und das Sensorgehäuse deutlich gegenüber der Umgebung erwärmt hast, kann es danach locker eine halbe Stunde dauern, bis der Temperaturunterschied wieder auf weniger 0,2°C gegenüber der Raumtemperatur zurückgegangen ist.

veilen Dank für Deine sehr ausführliche Erklärung die ich in Deinen Berechnungen nachvollziehen kann.

Diesen Berechnungen selbst bzw. deren Zahlen in Bezug auf Abweichung etc. kann ich nicht zustimmen

der DHT22 hat eine Abweichung von ca. 0,5 Grad, mein Testo hat auch diese Abweichung.
Die messung Testo + DHT22 fand auf gleicher Höhe statt.
Auch ohne Schleife kommt diese hohe Abweichung beim DHT zustande.
Soeben war ich bei meiner Mutter und habe den Testo dort mit deren Raumthermometer verglichen. Abweichung hier 0,5 Grad. Passt also und ist auch akzeptabel.

Wenn ich also hier auch wieder mit dem Testo messe und dann auch wieder genau auf der Hohe des DHT22 usw. dann kann ich auch hier eine Abweichung von 0,5 bis maximal 1 Grad akzeptieren was auch ok wäre.
Wenn der DHT22 tatsächlich um 2 -2,5 Grad abweichen würde was ja erheblich ist, würde man im Netz viel mehr über diesen Zustand zu lesen bekommen.
da dies aber nicht der Fall ist und ich mit meinen Mitteln die zwar keiner Klimakammer standhalten udn auch nicht standhalten müssen bei 2 bis 2,5 Grad Unterschied dann trifft nur noch eines zu.
Der DHT22 hat einen Fehler und um das festzustellen zumindest bei dieser Abweichung brauch ich keine Klimakammer

so zumindest mein Verständnis

Trotzdem vielen Dank für Deine Ausführungen

Nur noch ein Beitrag aus meinen Erfahrungen:
Temperaturen im Raum können, abhängig von den Luftströmungen, stark differieren.

Ich habe auch, mit einem Messgerät und 4 Thermoelementen, die frei verteilt auf dem Schreibtisch liegen, bis zu 3°C Temperaturdifferenz gemessen. Da dachte ich auch, das sein den billigen China-Thermoelementen geschuldet.

Wenn ich dann die gleichen Thermoelemente zusammenbringe, und alle gemeinsam mit etwas Stoff umwickle, damit wirklich alle genau die gleiche Temperatur haben, dann stimmen plötzlich auch die Anzeigen überein.

Es reicht schon, wenn ein Sensor etwas näher an der Halogenschreibtischlampe liegt, und schon zeigt er ein paar Grad mehr an.
Oder der Lüfter des PC bläst in die Richtung, oder du atmest, oder einfach die Raumluft strömt anders.

2°C Temperaturunterschied in einem Raum sind völlig normal.

Hallo
das wäre der Fall wenn bei mir auch die Messungen bzw. Sensoren auch weiter auseinander wären.
Genau auf das habe ich geachtet das dem nicht so ist.

ich habe auch den Sensor an versch. Stellen verlegt und Messungen gemacht überall das Gleiche .. der zeigt einfach ca. 2 Grad mehr an und das darf er ganz einfach nicht.
Ich hatte diese Denkweise auch schon da mir das was Du geschrieben hast voll bewusst ist.

Ich habe hier 2 versch. Temp-Sensoren inkl. sind es 3 Stück einmal einen DHT22 und dann 2 wasserdichte Sensoren.
Alle bis auf den DHT22 zeigen einigermaßen im Toleranzbereich ähnliche Werte an nur der DHT22 tanzt aus der Reihe und das extrem.
2 bis 2,5 Grad sind schon heftig. Zumindest für mein Gefühl.

Grüße Jürgen

Dann deklarier das Teil einfach als defekt und gut isses.

Hallo selfmade,
ich hatte mit meinen DHT's ähnliche Probleme, und habe festgestellt, wenn ich den DHT nur alle 60 sec. mit Strom versorge, dann 5ms warte, dann die Messung durchführe und dann die Stromversorgung wieder abschalte, dann passen die Messwerte. Für mich heißt das, dass die Eigenerwärmung im Dauerbetrieb die Messabweichung bringt. Probier es mal aus und berichte ob es bei dir was gebracht hat.
Gruß Ardubu

selfmade:
Ich habe hier 2 versch. Temp-Sensoren inkl. sind es 3 Stück einmal einen DHT22 und dann 2 wasserdichte Sensoren.
Alle bis auf den DHT22 zeigen einigermaßen im Toleranzbereich ähnliche Werte an nur der DHT22 tanzt aus der Reihe und das extrem.
2 bis 2,5 Grad sind schon heftig. Zumindest für mein Gefühl.

Oder, wenn man die Abweichung kennt, kann man sie ja auch abziehen...

guntherb:

selfmade:
Ich habe hier 2 versch. Temp-Sensoren inkl. sind es 3 Stück einmal einen DHT22 und dann 2 wasserdichte Sensoren.
Alle bis auf den DHT22 zeigen einigermaßen im Toleranzbereich ähnliche Werte an nur der DHT22 tanzt aus der Reihe und das extrem.
2 bis 2,5 Grad sind schon heftig. Zumindest für mein Gefühl.

Oder, wenn man die Abweichung kennt, kann man sie ja auch abziehen...

Offset von 2.5 Grad in die Software einbeziehen und schon zeigt der Sensor den "richtigen" Wert an.
Ich betreibe zwei AM2302 und einen GY-65. Alle drei zeigen Unterschiedliche Werte (+/-1.5°C). Der GY-65 reagiert auch langsamer auf Temperaturänderungen. Alle drei via Offset auf gleichen Wert bringen, dann zeigen sie im weiteren Messverlauf auch annähernd das Gleiche (+/- 0.5°C) an...