Hallo ! Habe hier ein kleines Problem mit einem SHT11 Sensor. Ich verwende bei einem Projekt insgesamt 3 Sensoren, zwei NTC und eben den SHT11. Habe ich alle direkt beeinander liegen, so bekomme ich vom SHT11 über 2°C mehr als von den NTC-Sensoren angezeigt. Habe jetzt zusätzlich ein Multimeter mit Temperatursensor hingestellt und auch dieser zeigt im Bereich der NTC-Sensoren an. Auch gefühlsmässig (Raumtemperatur) zeigt der SHT11 zu viel an. Eigentlich hatte ich angenommen, dass gerade der SHT sehr genau sein müsste, da er laut Datenblatt kalibriert ist. Meine Berechnung der Temperatur dürfte ebenfalls stimmen: Den Rohwert vom SHT überprüfe ich mittels CRC und auch ein händisches Nachrechnen ergibt den angezeigten Temperaturwert. Die einschaltbare Heizung des SHT ist auch nicht schuld, das hab ich schon getestet. Meine Frage ist nun ob jemand schon ähnliche Probleme/Phänomene hatte. Muss ich davon ausgehen, dass mein SHT11 einen Defekt aufweißt ? Schöne Grüße, Thomas B.
Mal ein "Analoges" Thermometer probiert? Korrekten Wert in der Formel für die eingestellte Betriebsspannung? Irgenwo hatten wir hier schonmal so eine Diskussion... Beitrag "SHT11 an AVR liefert falsche Werte"
Hallo ! Danke für deine Antwort! Ja also die Werte für Berechnung hab ich inzwischen schon einige Male überprüft. Wenn ich hier die falschen Konstanten nehmen würde, bekäme ich zudem eigentlich unrealistische Werte heraus. Als Betriebsspannung verwendet ich 5V, hier ist die Berechnung ja dann sehr einfach -40 + 0.01 * Wert vom Sensor (wobei ich konkret 'Wert_vom_Sensor - 4000' rechne) Den Beitrag kannte ich schon - den Tipp mit dem Einschalten der Heizung und schauen ob die Luftfeuchtigkeit sinkt hab ich auch schon probiert. Der Sensor an sich dürfte also funktionieren ... Wegen dem analogen Thermometer muss ich schaun, hier hab ich keines. Bin eh schon am überlegen wie ich mir am besten und einfachsten eine "Referenz" besorge oder auch selber bastle (z.B. Eiswasser)
> so bekomme ich vom SHT11 über > 2°C mehr als von den NTC-Sensoren angezeigt. Wie oft misst du?
1 | Furthermore, there are self-heating effects in case the |
2 | measurement frequency is too high. |
3 | |
4 | 3.3 |
5 | Important: To keep self heating below 0.1°C, SHT1x |
6 | should not be active for more than 10% of the time – e.g. |
7 | maximum one measurement per second at 12bit accuracy |
8 | shall be made. |
Hast du den Sensor (zur Kühlung) auf einer SMD-Platine? Oder hast du Drähte angelötet?
@A.K. Ja das ist ne gute Idee, daran hab ich noch gar nicht gedacht. Mein Infrarotfieberthermometer (zumindest nehm ich an, dass es so misst) kann leider so "geringe" Temperaturen nicht anzeigen - muss schaun ob ich noch wo ein "analoges" hab ;) Vielleicht bringt auch die Heizung vom Sensor etwas, muss ich testen. @Lothar Miller Zur Zeit messe ich ungefähr alle 10 Sekunden. Nachdem ich gelesen hatte, dass sich das "self heating" im Nachkommabereich abspielt vermute ich mal, dass es daran nicht liegt. Der Wert an sich ist auch die ganze Zeit relativ konstant - direkt beim Einschalten und auch Minuten danach.
Thomas B. schrieb: > Infrarotfieberthermometer (zumindest nehm ich an, dass es so misst) kann > leider so "geringe" Temperaturen nicht anzeigen Ich hatte das eher andersrum gedacht. Nicht dass du dir den SHT11 in den A. stecken sollst ;-), aber bissel dem angenäherte Temperatur wird sich ja wohl irgendwie machen lassen.
@A.K Naja, das hatte ich eigentlich auch nicht vor. ;) Aber so blöd ist die Idee prinzipiell gar nicht, zumindest wäre die Körpertemperatur eine halbwegs geeignete Referenz. :)
Alle 10 Sekunden messen, ist zu oft. Probiere es mal 1x die Minute.
Hallo Thomas B. habe das gleiche Problem. Messe alle 5 Sekunden. auch 2 Grad zu viel. Konntest du das Problem schon lösen? Ich werde bald wahnsinnig. Source-Code O.K. Keine Bauteile die warm werden. Heizung aus, trotzdem 2 Grad zu viel. Freue mich auf eine Antwort von dir. noeppkes ...
>Messe alle 5 Sekunden. auch 2 Grad zu viel.
Ist zu oft -> Eigenerwärmung. Wie lang ist Dein Verbindungskabel zum
SHT11? Hast Du direkt am SHT11 einen Keramikkondensator zwischen Vcc und
Masse und einen 10k-Pullup für die Datenleitung angeschlossen? Wie hoch
ist Vcc?
Hallo ! Also ich bezweifle ehrlich gesagt, dass es etwas mit Eigenerwärmung zu tun hat. Im Sample Code von Sensirion steht z.B. das Kommentar "wait approx. 0.8s to avoid heating up SHTxx". Da sollten dann 5s Messintervall völlig ok sein - außerdem hab ichs auch schon mit 30 Sekunden probiert. Zudem: Im Datenblatt steht, dass beim Messen ein Strom von typisch 0.55mA fließt. Beim Heater steht dann dabei, dass dieser 8mA bei 5V zieht und das Teil um 5-10°C erwärmt - und das ja auch nicht schlagartig. Ohne da jetzt zu rechnen würd ich mal behaupten, dass ich 2°C Selbsterwärmung nicht so schnell erreiche. Ich vermute mal (so wie ich die Datenblätter und Erfahrungen anderer User interpretiere), dass sich die Selbsterwärmung im Normalfall auf den Bereich hinter dem Komma auswirkt. Zwei weitere Punkte wieso ich nicht davon ausgehe, dass es sich bei diesem Problem (bei mir) um Selbsterwärmung handelt: Die Temperatur ist auch bei der ersten Messung um 2°C zu hoch und zweitens ist sie in jedem Temperaturbereich und mit und ohne "Wind" (praktisch bei offenem Fenster bei 4°C Außentemperatur) immer ungefähr die selbe Differenz zu hoch. @noeppkes Nein, leider, konnte das Problem nicht lösen. Ich gehe zur Zeit mal davon aus, dass mein Sensor defekt ist. Hab inzwischen alles getestet und geprüft was mir so eingefallen ist. Auch im 12/8-Bit Modus erhalte ich die selbe Abweichung. Schöne Grüße, Thomas
Habe hier genug SHTs am Laufen und kann Dir sagen, daß die Eigenerwärmng auch bei 5 sek. Intervall noch zuschlägt. Vielleicht nicht um 2 Grad aber ein paar Zehntel sind es. Du hast die anderen Fragen nicht beantwortet. Bevor Du den Sensor wegwirfst, schick ihn mir, ich kann ihn für Dich überprüfen.
@Travel Rec Also das Verbindungskabel ist ca. 5cm, 10k Pullup ist auf der Seite vom Prozessor und die 100nF sind direkt am SHT. Die Betriebsspannung liegt bei 5V (ich weiß, dass 3.3V empfohlen werden, aber aufgrund einiger anderer Komponenten habe ich die Spannung bei diesem Projekt auf 5V). Den Sensor hab ich übrigens als Sample von Sensirion erhalten - werde mir wohl noch einen zulegen müssen. Zur Zeit behelfe ich mir mit einem Offset im Source-Code. Aber vielen Dank für das Angebot mit dem Prüfen ! Schöne Grüße, Thomas
Hallo, Selbsterwärmung läßt sich auch leicht ausschließen wenn man alle 3 Sensoren vor einen kräftigen PC-Lüfter legt. Der Unterschied wird bei Selbsterwärmung drastisch kleiner.
Hast Du mal die Taktfrequenz beim Auslesen des Sensors heruntergenommen? Woher stammen die Ausleseroutinen?
@Travel Rec Ja, mit dem Takt hab ich schon herumgespielt, hat leider nichts gebracht. Die grundsätzlichen Ausleseroutinen hab ich aus den Sample-Routinen von Sensirion. Hatte es aber auch schon mit Routinen verglichen, die ich glaub ich hier aus Forum hatte. Hab natürlich auch schon jeden Schritt des Codes mit dem Datenblatt gegengeprüft. Bisher alles ohne Erfolg. CRC-Prüfung ist übrigens ein.
Ich wuerde sagen der SHT11 misst korrekt und die NTC-Sensoren sind halt einfach entsprechend ungenau. Da muesst ich mir nicht lange ueberlegen, welcher nun eher die Wahrheit spricht.
Travel Rec. schrieb: > Habe hier genug SHTs am Laufen und kann Dir sagen, daß die Eigenerwärmng > auch bei 5 sek. Intervall noch zuschlägt. Vielleicht nicht um 2 Grad > aber ein paar Zehntel sind es. Du hast die anderen Fragen nicht > beantwortet. Bevor Du den Sensor wegwirfst, schick ihn mir, ich kann ihn > für Dich überprüfen. Aus Interesse: Versorgst du die auch mit 5V?
Hast du den den EIS_Wasser_Test schon mal versucht um zu sehen wie groß die Abweichungen von 0C° sind ? LG
Ich glaube, Eiswasser mag der SHT11 nicht wirklich - zumindest nicht in nächster Nähe ;-)
Man sollte auch noch folgendes bedenken: Der SHT11 hat ein schwarzes Gehaeuse und wird sich somit staerker erwaermen als z.B. ein nackter NTC. Ausserdem ist der SHT im Vergleich z.B. zu einem DS1621 viel flinker und reagiert leichter auf Schwankungen. Gewisse Abweichungen wird man also immer haben, vor allem zu so ungenauen Sensoren.
Und wenn man dann noch hechelnd in 30cm Abstand auf den Sensor guckt, oder den Aufbau auf dem Schoss balanciert ... ;-)
Es reicht uebrigens schon, den Sensor nur in der Naehe der Hand zu halten, um ca. 1-2 Grad an Erwaermung zu bekommen. Hatte ihn auf einer kleinen Platine und am Flachbandkabel angefasst, das merkt der schon ;)
Eiswassertest hab ich noch keinen gemacht - da bin ich noch am Überlegen wie ich sowas am besten aufbaue (eventuell Schale mit Eiswasser und den Sensor in ein dünnes Glasröhrchen - da sollte ich ja nach einiger Zeit eine Temperatur nahe 0 haben, geht ja nur um eine Abschätzung ob und wie viel die Temperatur ungefähr abweicht). Die Erwärmung durch äußeren Einfluss (anhauchen, Hand in der Nähe, Sonneneinstrahlung) konnte ich für mein Problem eigentlich schon ausschließen: Hatte alle Sensoren zusammen in ein kleines Instrumentengehäuse gelegt.
Hallo, ich habe die selbe Beobachtung gemacht. SHT11 zeigt > 2 C zu hohe Temperatur an. Leider auch keine Lösung. Ich habe es mit 2x unterschiedlichen SHT sensoren probiert, die ich zu unterschiedlichen Zeitpunkten gekauft habe. Auf dem einen steht 225 und auf dem anderen AZN drauf. Der Code ist im wesentlichen aus: Projekt: Wetterstation Autoren: Benjamin Dörner MM5 165941 Jürgen Hasselbach MM5 165944 Die CPU: AVR mega644p, 8 MHz interner Takt
Ich habe auch den SHT11 und habe auch so eine "Vermutung" mit der falschen Temperuturmessung. So rechne ich:
1 | iMessTemp = (IIC_ReadData16() - 3963) / 100; |
So die Feuchte:
1 | s32 iHyd = IIC_ReadData16(); |
2 | Menu_Dbg1 = iHyd; |
3 | s32 iHyd2 = ((iHyd * iHyd) * -28) / 1000; // Teil C3 |
4 | s32 iHyd3 = (405 * iHyd) - 40000 + iHyd2; // Teil C1/C2 |
5 | // Temperaturkompensation
|
6 | if (iMessTemp != -99) |
7 | {
|
8 | s32 iHyd4 = ((8 * iHyd) + 1000) / 10; |
9 | s32 iHyd5 = (iMessTemp - 25); |
10 | iHyd3 = iHyd3 + (iHyd5 * iHyd4); |
11 | }
|
12 | iHyd3 = iHyd3 / 10000; |
13 | aFeuchtLoc = iHyd3; |
Oder hab ich ein Rechenfehler drin? Wird bei der falschen Temperaturanzeige dann die relative Feuchte auch falsch gezeigt? Die CPU: STM32F103, 8MHz interner Takt
Habe ein etwas anderes Problem mit den SHT´s.: Weil ich möglichst exakt T und rh messen möchte hab ich mir den SHT15 ausgeguckt, der also noch eine Ecke bessere Daten hat als der SHT11. Vorsichtig wie ich bin, hab ich den mal bei verschiedenen T "laufen lassen", Daten danach in Taupunkt und abs. Feuchte umgerechnet. Ich messe in geschlossenem Raum (also mit minimalen Störeinfluß) eine Zeitlang die rF und T. Heize dann die Luft um 8°, messe nochmal. In beiden Messreihen sollten die Konstanten Taupunkt und abs. Feuchte (berechnet aus den gemessenen T und rF-Daten) dieselbe sein. Sind sie aber nicht. Der offensichtliche Meßfehler betrug hier entweder 5,3%rF oder 1,8°C (=ca. 2°!!!). Nach den obigen Beiträgen drängt sich der Verdacht: die T-messung hat eine Macke!! Der Fehler ist reproduzierbar und immer vergleichbar groß auch bei verschiedenen Sensoren. Seltsamerweise gabs beim Abkühlen keine Veränderung der errechneten Taupunkte und abs. Feuchten. Deshalb hab ich keine Chance gesehen, den Typ zu kalibrieren und ihn ad acta gelegt. Kann es sein, dass der Sensor einen Konstruktionsfeler hat und die Datenblätter schlichtweg nicht stimmen bzw. etwas Wichtiges verschweigen???? Ich kann nur vermuten, dass der SHT eine nicht-lineare Abhängigkeit zwischen rF und T hat, die so ausgeprägt ist, daß man sie lieber nicht im Datenblatt erwähnt, um den hohen Preis rechtfertigen zu können????? Ich arbeite mittlerweile lieber mit den HIH-40xx in Verbindung mit dem DS18S20-T-Sensor. Da bin ich zumindest sicher, dass die -wenn auch höheren- Toleranzen in den Datenblättern stimmen. Und die stimmen wirklich; beim Experiment von oben bleiben die Konstanten konstant! Bei Kombisensoren bin ich jedenfalls mißtrauisch geworden. Schön wäre, wenn hier jemand dieses +2°-Phänomen lüften könnte. Folgender Versuch könnte etwas bringen: a) 10 Minuten nur die T messen b) 10 Minuten T und rh messen wenn dann die gemessene T steigt, stört die rF-Messung die T-Messung...???
@ J. P. Kannst Du mal in Kontakt mit dem Hersteller gehen? Ich habe leider keine Möglichkeit.
Hallo Markus, hier mal der Sample Code von Sensirion zu vergleich: //---------------------------------------------------------------------- ------------------ void calc_sth11(float *p_humidity ,float *p_temperature) //---------------------------------------------------------------------- ------------------ // calculates temperature [°C] and humidity [%RH] // input : humi [Ticks] (12 bit) // temp [Ticks] (14 bit) // output: humi [%RH] // temp [°C] { const float C1=-4.0; // for 12 Bit const float C2=+0.0405; // for 12 Bit const float C3=-0.0000028; // for 12 Bit const float T1=+0.01; // for 14 Bit @ 5V const float T2=+0.00008; // for 14 Bit @ 5V float rh=*p_humidity; // rh: Humidity [Ticks] 12 Bit float t=*p_temperature; // t: Temperature [Ticks] 14 Bit float rh_lin; // rh_lin: Humidity linear float rh_true; // rh_true: Temperature compensated humidity float t_C; // t_C : Temperature [°C] t_C=t*0.01 - 40; //calc. temperature from ticks to [°C] rh_lin=C3*rh*rh + C2*rh + C1; //calc. humidity from ticks to [%RH] rh_true=(t_C-25)*(T1+T2*rh)+rh_lin; //calc. temperature compensated humidity [%RH] if(rh_true>100)rh_true=100; //cut if the value is outside of if(rh_true<0.1)rh_true=0.1; //the physical possible range *p_temperature=t_C; //return temperature [°C] *p_humidity=rh_true; //return humidity[%RH] } Vielleicht hilft der weiter Gruß, Thorsten
Hallo - ist da noch was raus gekommen? Ich habe hier auch den SHT11 und auch ich habe hier ca. 1-2 °C mehr als die anderen 5 :) Thermometer anzeigen. Auch habe ich den Effekt das er nach dem Einschalten aberwitzige Temperaturen von 55°C zeigt die dann aber nach ein paar Minuten auf die "realistische" Raumtemperatur absinkt. Mein Code arbeitet mit der CRC - und nein ich habe die Heizung nicht eingeschalten :O). Gruss, Gary
PS: Das mit den 55°C macht er nur wenn er schon in Betrieb war und z.B. nach dem Flashen wieder angesprochen wird.... schaltet man für ein paar Minuten aus, so bringt er "normale" Raumtemperatur. Grübel.
Und ich habe hier einen SHT11 an einem Atmel Butterfly hängen, der überhaupt nur bedarfsweise eingeschaltet wird und durchaus überzeugende Werte liefert. Solche aberwitzigen Werte waren mir noch nicht einmal bei den Chinesen (FOST02) begegnet.
@ A. K. (prx) Das heist aber es läuft doch auf Eigenerwärmung raus, ist mein Eindruck auch. Nach dem Einschalten - mit "langer" Pause - dann passen die Werte, zumindest liegen Sie im Toleranzbereich. @ Markus Müller (mmvisual) ist ja leider keine Alternative, wenn er die Luftfeuchtigkeit nicht liefert. Danke.
Kann es sein dass die Eigenerwärmung eben doch der Grund ist, wenn man den Chip (durch einen Programmierfehler) nicht so anspricht ... SDA_Write_0 = "strong Low" (also DDR.SDA=1 PORT.SDA=0) und SDA_Write_1 = "weak Hi " (also DDR.SDA=0 PORT.SDA=1) ... sondern so: SDA_Write_0 = "strong Low" (also DDR.SDA=1 PORT.SDA=0) und SDA_Write_1 = "strong Hi" (also DDR.SDA=1 PORT.SDA=1) ? Hier muss der SDA ja evtl die starken 5 Volt von SDA_Write_1 sinken... Können diese 2 Grad durch diese Energiemenge typischerweise entstehen? Hier fliesst ja doch mehr Energie als bei Eigenerwärmung durch zu oft messen? PS: Wohlegemerkt das starke SDA-treiben NUR wenn man auf SDA schreibt - beim Lesen wird nur der Pullup benutzt, also hier der Interne (DDR.SDA=0 PORT.SDA=1).
Hallo, also ich hatte auch das Problem das der SHT11 immer ca. 2K mehr anzeigte. Sensiro konnte isch das auch nicht erklären, hab div. Typen probiert, dann bin ich durch zufall drauf gekommen das wenn man den Sensor länger einschaltet (10sec) die Temperatur stimmt! Ich takte den immer d.h. er wird von der Versorgung genommen wenn nicht gemessen wird und wieder aktiviert wenn gemessen wird. dzt. ist meine routine wie folgt: Versorgung ein warte 1 sec Messe T und Frel (wertepaar 1) warte 9sec Messe T und Frel (wertepaar 2) Versorgung aus So bekomme ich bei Wertepaar 2 das Korrekte Ergebnis bei Wertepaar 1 war das nciht immer der Fall - Als Refernz habe ich T-Labormessgerät gehbat. Eigenerwärumungen von PCB sind auszuschließen da die ganze Elektronik Ultra Low Power ist. wäre interessant ob das Problem von euch so zu läsen ist?
Das mit dem Kondesator ist wichtig; der SHT11 braucht eine straffe, am besten gleich daneben geregelte Betriebsspannung. Aber auch mit dieser Maßnahme traue ich den Sensoren nicht so recht über den Weg; mit entsprechenden Kalibriergeräten ausgerüstet zeigen diese immer etwas zu viel an, etwa 1 K. (Betrieb und Speisung am Parallelport, mit 100 nF Stützkondensator direkt am Chip. Software http://www.tu-chemnitz.de/~heha/hs_freeware/sht11.zip.) henni
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.