Go Down

Topic: DHT11 Auflösung 0.1 (Read 2342 times) previous topic - next topic

skorpi08

Hallo, ich habe einige stunden mit dem Google verbracht und konnte nichts finden wie man ein DHT11 so programmieren kann dass der nicht zB 26.00 C anzeigt sondern zB 26.4
Also die Auflösung ist jetzt bei 1 C und ich brauch ne Auflösung von 0.1 C
Wie kann man es machen? Im datenblatt steht dass es ne Auflösung von 0.1 C hat.
Nicht Mensch, nicht Tier: Programmierer halt...

jurs


Hallo, ich habe einige stunden mit dem Google verbracht und konnte nichts finden wie man ein DHT11 so programmieren kann dass der nicht zB 26.00 C anzeigt sondern zB 26.4
Also die Auflösung ist jetzt bei 1 C und ich brauch ne Auflösung von 0.1 C
Wie kann man es machen? Im datenblatt steht dass es ne Auflösung von 0.1 C hat.


Welches Datenblatt? Link?

Ich sehe im Datenblatt zum DHT11:
Temperature Resolution 1? / 8Bit

Eine Auflösung von 0,1°C (und darüber hinaus eine höhere Genauigkeit) hätte der DHT21, aber meines Wissens nach nicht der DHT11.

skorpi08

Quote

The English version gives a resolution of 0.1 degrees C.

http://www.dfrobot.com/image/data/DFR0067/DFR0067_DS_10_en.pdf

Mark


ich habe noch ein LM335 (mit 2150 Ohm) und der zeigt mir diese Werte:
18.57 C  
18.57 C  
18.57 C  
18.57 C  
18.08 C  
18.57 C  
18.57 C  
19.06 C  


Ist es normal dass die Temperatur so schwankt? Eher nicht, oder? Gibts da eine Lösung dafür, nicht dass die Heizung angehen muss und nach 2 sec die Kühlung.
Nicht Mensch, nicht Tier: Programmierer halt...

guntherb

Der Sensor hat eine Genauigkeit von +/-2°C.

Was willst du da mit einer Auflösung von 0,1°C???       (die er, laut dem mir bekannten Datenblatt, auch nicht hat!)

Gunther
Grüße
Gunther

skorpi08

#4
Mar 05, 2013, 11:40 am Last Edit: Mar 05, 2013, 11:43 am by skorpi08 Reason: 1
okay, will jemand welche haben? Habe 5 Stück zum verkauf    :)

Welchen würdet ihr mir raten? Ich brauche es für eine Brutmaschine und da muss es schon genauer sein als der DHT11, aufjedenfall mit der Auflösung von 0.1
Nicht Mensch, nicht Tier: Programmierer halt...

jurs

#5
Mar 05, 2013, 12:24 pm Last Edit: Mar 05, 2013, 12:48 pm by jurs Reason: 1

The English version gives a resolution of 0.1 degrees C.

http://www.dfrobot.com/image/data/DFR0067/DFR0067_DS_10_en.pdf


Original-Datenblatt siehe hier:
http://www.adafruit.com/datasheets/DHT11-chinese.pdf

Englische Datenblätter dieses chinesischen Sensors gibt es nicht, aber Hobbyisten mit Google-Translate haben sich trotzdem dran versucht. Leider wird da wohl irgendjemand beim inoffiziellen Übersetzen von Chinesisch nach Englisch einen kleinen Fehler gemacht haben.

Im offiziellen Datenblatt steht eindeutig drin:
??? 1°C
Und das übersetzt Google-Translate eindeutig zu "Auflösung 1° C"

Der Sensor mit 0,1°C Auflösung ist wie schon oben geschrieben der mit der Bezeichnung: DHT21 oder DHT22.

Und auch die haben nur eine absolute Genauigkeit von +/-0,5°C.

uwefed


Quote

The English version gives a resolution of 0.1 degrees C.

http://www.dfrobot.com/image/data/DFR0067/DFR0067_DS_10_en.pdf

Mark


ich habe noch ein LM335 (mit 2150 Ohm) und der zeigt mir diese Werte:
18.57 C  
18.57 C  
18.57 C  
18.57 C  
18.08 C  
18.57 C  
18.57 C  
19.06 C  


Ist es normal dass die Temperatur so schwankt? Eher nicht, oder? Gibts da eine Lösung dafür, nicht dass die Heizung angehen muss und nach 2 sec die Kühlung.


Diese Werte ergeben sich wahrscheinlich durch die Meßungenauigkeit von 1 Digit des A/D Wandlers.

Auflösung und Genauigkeit sind 2 verschiedene Sachen und haben normalerweise ca die gleiche Größe. Auflösung ist die Stufung zwischen 2 benachbarten meßwerten. Genauigkeit ist der Unterschied zwischen gemessener und wirklicher Temperatur. Beide haben ca die gleiche Größe da es sinnlos ist, supergenau zu messen aber grob anzuzeigen bzw umgekehrt ungenu zu messen und Dezimalstellen zu "erfinden".

Um eine Genauigkeit von 0,1°C  bei 30°-40°C braucht es eine Genauigkeit der Schaltung von unter 1%. Da werden Widerstände teuer. Auch Temperatursensoren mit dieser Genauigkeit sind teuer.

Grüße Uwe

skorpi08

Wenn ich schon ein teuren kaufen muss dann lieber den DHT22 oder ist der DHT21 besser?
Nicht Mensch, nicht Tier: Programmierer halt...

guntherb

#8
Mar 05, 2013, 12:49 pm Last Edit: Mar 05, 2013, 12:57 pm by guntherb Reason: 1
Stimmt, in dem von dir verlinkten Datenblatt ist die Auflösung mit 0,1°C angegeben. Was mich allerdings misstrauisch macht, ist, dass dein Datenblatt keinerlei Firmenaufdruck, Hersteller adresse oder sonst etwas enthält, was schliessen läßt, wer dieses "Datenblatt" geschrieben hat.

Das hier gibt 1°C Auflösung an, ebenso wie das hier.

Zu deinem Temperaturproblem:
Ja, Temperaturen in Innenräumen schwanken stark. Bei einem schnellen Sensor reicht es aus, wenn jemand durchs Zimmer geht, dabei die Luftschichten durcheinanderwirbelt, um Schwankungen von 2°C hervorzurufen.

Bei deiner Messung allerdings scheint mir das eher Signalrauschen zu sein.
die Sprünge von 0,49°V entsprechen genau der AD-Auflösung von einem Bit. Die letzten zwei Bits eines AD sind eigentlich nie stabil.

Aber du brauchst eigentlich was ganz anderes:
Temperaturen sind vor allem eines: Träge.
Wenn du also Temperaturen regeln willst, dann mußt du für ein geglättetes Signal sorgen, das nicht jede kleine Schwankung der Luft registriert.
Das kannst du an 3 Stellen machen:
a) an der Quelle: Den Sensor an eine thermisch träge Masse anbinden, z.B. einen Alu-Klotz, das filtert Strömunssprünge raus.
b) in der Hardware: ein Tiefpass vor dem AD reduziert Signalrauschen
c) in der Software: nicht jeden Wert verarbeiten, sondern digital Filtern. Der einfachste aller digitalen Tiefpässe ist der
  gleitenden Mittelwert: Temp = (Temp * (FilterFaktor -1) + AktuellerMesswert) / FilterFaktor; Mit einem Filterfaktor von 10 geht jeder neue Messwert zu einem Zehntel in den Wert mit ein, damit werden Störungen egalisiert.

Wenn du dann ein langsames, sauberes Signal hast (das dir über die digtale Filterung sogar eine höhere Auflösung erzeugt), kannst du dann darauf regeln.

Und noch ein Satz zur Genauigkeit: Die Angabe +/-2°C bedeutet ja nichts anderes als das die einzelnen Exemplare dieses Typs um diesen Wert differieren können. Das kriegst du aber über einen einfachen Abgleich weg. Nimm einen Topf mit Wasser, dessen Temperatur du mit einem genauen Termometer misst, (bei 35°C-  40°C bieten sich Fieberthermometer an!) und mach einen Abgleich in der Software.

Wenn du aber wirklich auf den Nachkommastellen bestehst, probiers mal mit analogen Sensoren. Mit einem einfachen NTC und passendem Vorwiderstand kommst auf deine 0,1°C Auflösung.

Oder du nimmst einen DS18B20, der hat 0,5°C Genauigkeit und bis zu 0.0625°C Aullösung.

Wie genau muß denn die Temperatur geregelt werden?

Grüße

Gunther


edit:

Wenn ich schon ein teuren kaufen muss dann lieber den DHT22 oder ist der DHT21 besser?
So wie ich es sehe ist der Unterschied das Gehäuse. Der DHT21 mit Anschlusskabel, der DHT22 für Printmontage.
Grüße
Gunther

jurs


Wenn ich schon ein teuren kaufen muss dann lieber den DHT22 oder ist der DHT21 besser?


Nö, meines Wissens nach unterscheiden sich DHT21 und DHT22 nur dadurch, dass der DHT22 mit Anschlüssen zur Leiterplattenmontage im 2,54mm Rasterplattenmaß vorgesehen ist, und der DHT21 kommt mit einem etwas größeren Plastikgehäuse fertig konfektionierten Leitungen von einigen Zentimetern Länge vorverdrahtet, so daß man den Sensor bequem etwas abgesetzt vom Gehäuse anschließen kann. Ganz sicher bin ich mir aber nicht, ggf. mal ins Datenblatt sehen (möglichst ein fehlerfreies, wenn es nicht das Original ist), oder in die Library sehen, ob es einen Unterschied gibt.

skorpi08

Also ich brauche 37.8 grad und die Temperatur soll am Besten so bleiben. Bisher hatte ich dass Die Temperatur um 0.2 grad sinkt bevor die Heizung anspringt.  Die Genauigkeit stört mich eher weniger weil ich ein zusätzlichen Thermometer habe und an den kann ich mich dann richten. Ich wollte in meinem Sketch eine Funktion machen wo ich Kalibrieren kann, also die tatsächliche Temperatur richtig einstellen (ein WILLHI 7016S hat diese Funktion)
Nicht Mensch, nicht Tier: Programmierer halt...

uwefed


Und noch ein Satz zur Genauigkeit: Die Angabe +/-2°C bedeutet ja nichts anderes als das die einzelnen Exemplare dieses Typs um diesen Wert differieren können. Das kriegst du aber über einen einfachen Abgleich weg. Nimm einen Topf mit Wasser, dessen Temperatur du mit einem genauen Termometer misst, (bei 35°C-  40°C bieten sich Fieberthermometer an!) und mach einen Abgleich in der Software.


Es gibt Fehler die durch Kalibration (Vergleich mit anderem, genaueren Termometer) korrigiert werden kann, andere wiederum nicht (zB Nichtlinearität, Rauschen, ecc.)

Grüße Uwe

guntherb


Also ich brauche 37.8 grad


da mußt du Sensortechnisch wirklich aufrüsten.

Das beste, was es momentan auf dem Markt gibt, ist meines Wissens der
MAX31725   mit 0.0039°C  Auflösung
deutlich günstiger ist der DS18B20  mit 0.0625°C Auflösung, da kosten 5Stk, wasserdicht verkabelt, 10€ aus China.


@Uwe: da es sich hier um eine Messung für eine bestimmte Tempertur handelt, reicht der meiner Meinung nach auch der Abgleich an diesem einen Punkt. Für einen Größeren Temperaturbereich, da hast du recht, müßte ich an mehreren Punkten abgleichen, um auch die nichtlinearitäten zu erwischen, aber das brauchts hier nicht.



Gunther



Grüße
Gunther

uwefed


@Uwe: da es sich hier um eine Messung für eine bestimmte Tempertur handelt, reicht der meiner Meinung nach auch der Abgleich an diesem einen Punkt. Für einen Größeren Temperaturbereich, da hast du recht, müßte ich an mehreren Punkten abgleichen, um auch die nichtlinearitäten zu erwischen, aber das brauchts hier nicht.
Gunther

Es kommt darauf an ob der Sensor intern die A/D Umwandlung macht und somit auf einer konstanten Temperatur gehalten wird oder ob das ein IC außerhalb des Temperaturgeregelten Raums macht. Da können verschieden Umgebungstemperaturen der Verstärkungs und A/D Wandler-Elektronik Einfluß auf das Meßergebnis bzw dessen Genauigkeit haben.
Deine Ausage kann nicht generell auf jede Temperaturmessung gemacht werden.
Ich gebe Dir Recht, daß eine Temperaturregelung auf eien bestimmte Temperatur den Linaeritätsfehler eliminiert.

skorpi08
Versuchs mit einer PID-PWM Regelung. Das ist am genausten ohne viel Welligkeit.

Grüße Uwe

guntherb



@Uwe:






oder ist dir als Südtiroler das lieber?


Gunther :)
Grüße
Gunther

Go Up