Hallo,
ich habe ein Problem mit einem SHT11 Temperatur- und Feuchtesensor an
einem Mega128.
Dieser liefert mir immer zu hohe Werte (ca. 1-3 Grad).
Mit dem Testprogramm für den LPT- Port am PC werden mir jedoch die
richtigen angezeigt.
Ich kann aber in meinem Quellcode nichts unstimmiges finden was den
Fehler verursachen könnte.
Evtl. vergesse ich ja ein Bit auszulesen?
Schaltungstechnisch ist der SHT11 über eine längere Leitung (wobei es
keine Rolle spielt ob 20m oder 1m) an den AtMega angeschlossen:
http://www.imgbox.de/users/public/images/c7717q134.jpg
Als Anlage habe ich mal die relevanten Teile des Quellcodes hochgeladen.
Evtl. hat mal jemand die Zeit kurz drüber zu sehen?! (C-Code)
Würde mich sehr freuen!
Gruß und noch einen schönen Montag ;)
PS. Wenn jemand einen funktionierenden Codeschnippsel für einen AtMega
hat, welcher mir die Werte in eine Variable schreibt wäre ich auch sehr
dankbar, dann kann ich zumindest schon mal testen ob es an meinem
Quellcode liegt….
Hi
>Schaltungstechnisch ist der SHT11 über eine längere Leitung (wobei es>keine Rolle spielt ob 20m oder 1m) an den AtMega angeschlossen...
Mit dieser Aussage wäre ich vorsichtig.
Datenblatt:
>*1.9 Wiring Considerations and Signal Integrity*>Carrying the SCK and DATA signal parallel and in close>proximity (e.g. in wires) for more than 10cm may result in>cross talk and loss of communication.
Evtl. mal den Takt reduzieren.
MfG Spess
Ich bin gerde dabei die Lib (Beitrag "Lib für Sensirion SHT1x Sensor an AVR")
an so anzupassen das ich einfach nur die Temp. ausgelesen bekomme.
Aber leider steige ich bei dem Quelltext überhaupt nicht ein.
So... du mußt in der libsht.h die Pins und Ports anpassen, sowie
SHT_TEMP_OFFSET an deine Betriebspannung anpassen.
In deinem Controllerprogramm mußt du dan den header mit einbinden
Debug ist dabei eine Funktion die einen String auf der UART ausgibt und
uart_putc gibt ein einzelnes Zeichen aus.
Was soll passieren:
1) Das Program gibt auf der UART Feuchte und Temp auf UART aus
2) Die Heizung wird für etwa 1,5Sek angeschaltet
3) Es wird erneut gemessen und ausgegeben. Die Temperatur sollte
steigen die Luftfeuchte sinken
4) Heizung wird wieder ausgeschaltet
5) Alle 5 Sekunden wird Temp+Feuchte ausgegeben. Anhauchen des Sensors
erhöht die Luftfeuchtigkeit
Ansosnten solltest du noch beachten, das nach lötarbeiten am Chip dieser
eigentlich rekonditioniert werden muß in einer Klimakammer. Tut man das
nicht heißt es im Datenblatt das der Chip u.U. zu hohe Werte ausgibt und
sich langsam wieder den Kalibrierungsdaten annähert. (Wie lange das
genau dauert steht aber nicht dabei und ist sicherlich von verschiedenen
Faktoren abhängig)
So, die Einbindung hat perfekt geklappt.
Die Heizfunktion habe ich raus genommen.
Leider liegt die Temp. immer noch ca. 0,4 - 0,6 Grad über der von
anderen Thermometern.
Vermutlich muss der Sensor wirklich nach dem Löten die Behandlung mit
Wärme und Feuchte bekommen (wie im Datenblatt angegeben).
Übrigens zeigen beide SHT11 Sensoren bis auf 0,1Grad genau das selbe
Ergebnis, wobei einer an Lackdraht und der andere direkt auf eine
Platine gelötet wurde.
PS. Danke nochmal für dein Beispielprogramm!!
Wie gesagt, einmal mit Heizun und einmal Ohne gibt dir schonmal den
Hinweis das er auch "misst".
Ansonsten sind 0,4 - 0,6 schon okay, vieleicht zeigt "das andere"
Thermometer 0,2° zuwenig an und der SHT 0,2° zuviel...
Versuch doch mal den Mittelwert über einige Meßungen zu bilden,
ansonsten steht im Datenblatt auch das Wärmequellen z.B. von Bauteilen
in der Nähe) das Ergebnis u.U. verfälschen.
Ist die Temperatur die ganze Zeit zu hoch? Also von Anfang an? Oder
steigt sie erst in einer Minute so hoch? Ich lese ihn zwei mal die
Sekunde aus und die Selbsterwärmung ist dabei ca. 0,15°C.
An welcher Spannung betreibst du ihn? Das muß in der Soft ja korigiert
werden und kann auch schon 0,4°C ausmachen.
Die wärmebehandlung ist nur für die Feuchtigkeit wichtig. der
Temperatursensor ist davon nicht betroffen.
Ralf82k schrieb:
> Die wärmebehandlung ist nur für die Feuchtigkeit wichtig. der> Temperatursensor ist davon nicht betroffen.
Hast recht hatte ich falsch in Erinnerung, alerdings gerade noch mal
nachgelesen: Die höhchste genauigkeit bei diesem Sensor wird bei 3,3V
erreicht..
Läubi .. schrieb:
> Hast recht hatte ich falsch in Erinnerung, alerdings gerade noch mal> nachgelesen: Die höhchste genauigkeit bei diesem Sensor wird bei 3,3V> erreicht..
Wo steht das mit den 3,3V und höchste Genauigkeit? So wie ich das
verstanden hab bedeutet das 3,3V typisch wären, 5V aber auch gehen.
Dafür gibt es ja den Koeffizienten für die Temperatur, den man je nach
Versorgungsspannung abziehen muß.
Aber mir ist nun aufgefallen das der SHT11 +- 0,4° Toleranz hat. Also
sehe ich da nun kein Problem. Plus noch etwas Eigenerwärmung und schon
ist man bei deinem Fehler von 0,4-0,6°C