Hallo zusammen....
Ich verwende einen DS7505 von Dallas (Maxim)
Hier das Datenblatt: http://datasheets.maxim-ic.com/en/ds/DS7505.pdf
Interessante Seite: 5
Es handelt sich dabei um einen Sensor welcher bereits einen integrierten
ADC enthält und die Daten per I2C wahlweise in einer auflösung von
9,10,11 oder 12 Bits sendet.
Laut Datenblatt hat der Sensor eine Genauigkeit von +/-0.5C
Die kommunikation mit dem IC läuft soweit problemlos...
Einzig störrender faktor ist, das ich einen Offset von etwa 5C habe...
also alle meine Zimmerthermometer zeigen 24C an jedoch vom ic kommt 29C
zurück
Meine Auswertung der zwei empfangenen bytes
1
ucVorkomma=((uiTemp&0x7F00)>>8);//Vorzeichen entfernen und nur MSByte verwenden
2
ucVorkomma=ucVorkomma-5;//hier den Offset abziehen
ucNachkomma=((ucNachkomma*625)/1000);//nachkommastellen haben eine auflösung von 0.0625C daher umrechnen
Vielleicht sieht ja jemand einen Fehler...
Durch das entfernen des Offsets scheint der Sensor perfekt zu messen...
Aber irgendwie sind mir 5C tolleranz ein wenig zu viel :)
Danke schonmal
Guten Morgen zusammen...
Ich habe noch eine Merkwürdigkeit zu ergänzen...
Habe heute den Sensor bzw. das Gerät eingeschaltet... und der Sensor hat
zuerst viel zu tiefe Temperaturen angezeigt... doch Die Temperatur
steigt jetzt seit 2 Minuten um über 3 Grad an... und nach 2 Minuten
stimmt der gemessene wert...
Ist das normal, das ein solcher Sensor so lange hat, bis er die
"richtige" (abgesehen vom Offset) Temperatur misst?
Danke
A...aha Soooo. schrieb:> Kann er die Erwaermung selbst machen ? ZB durch Ueberspannung ? Zu> haeufige Kommunikation ? Unguenstiger Montageort ueber einem> Spannungsregler ?
Sollte eigentlich nicht der Fall sein... Spannung liegt bei 2.8V und er
ist bis 1.8V ausgelegt... Die Datenleitungen gehen direkt zum 5V AVR da
diese laut Datenblatt 5V Kompatibel sind....
Er ist auf einer externen Platine angebracht welche frei in der luft ist
Abgefragt wird er alle 2.5 Sekunden...
Du hast einen 2.8V spannungsregler ? Und Widerstande in den
Datenleitungen ? Wie gross sind die Widerstaende ?
Hatt ich auch mal. Ein DS1302 an einen 3.3V Regler, und keine
Widerstande, oder zu Kleine. Nachmessen ergab, dass die Uhr dann an den
5V des Prozessors lief. Die wurden ueber die Datenleitungen geliefert.
Die 3.3V wurden hochgedrueckt. Daher bitte die 2.8V Spannung mal
nachmessen.
A...aha Soooo. schrieb:> Daher bitte die 2.8V Spannung mal> nachmessen.
Hab ich grad gemacht...
Exakte 2.85V (Durch spannungsteiler erzeugt da das teil nicht mal 1mA
verbraucht...)
A...aha Soooo. schrieb:> Wie gross sind die Widerstaende ?
Hab ich keine, da Die leitungen 5V Logik kompatibel sind
lediglich pullups für SCL und SDA
hast du nicht die Möglichkeit den Sensor dorthin zu legen wo die
Temperatur gemessen werden soll ohne das die ganze Platine mitwandert,
ist doch klar das wenn sich den Sensor in der Nähe eines analogen
Spannungsreglers befindet, diese Temperatur mitmisst.
Das mit der Dauer der Temperaturanpassung hängt mit der Wärmekapazität
des Sensors zusammen. Beispiel wenn ich ein Termomether in ein Glas
Wasser stelle und dieses einfriere und dann ins Wohnzimmer stelle dauert
es eine kleine Weile bis mein Thermometer Zimmertemperatur anzeigt.
Bist du auf eine schnelle Messung der Temperaturänderungen angewiesen?
Wenn ja bau einen Spannungsteiler mit einem Widerstand und einem
Dünnfilmwiderstand (wenig Wärmekapazität)auf , wäre dann halt analog
aber sehr schnell anhauchen genugt und schon ändert sich der
Spannungswert.
Thomas O. schrieb:> hast du nicht die Möglichkeit den Sensor dorthin zu legen wo die> Temperatur gemessen werden soll ohne das die ganze Platine mitwandert
Der Sensor befindet sich auf einer eigenen kleinen Platine etwa 1 x 1 cm
gross und nur die I2C Leitungen führen zur haupt platine
Thomas O. schrieb:> Das mit der Dauer der Temperaturanpassung hängt mit der Wärmekapazität> des Sensors zusammen. Beispiel wenn ich ein Termomether in ein Glas> Wasser stelle und dieses einfriere und dann ins Wohnzimmer stelle dauert> es eine kleine Weile bis mein Thermometer Zimmertemperatur anzeigt.
Der Sensor war die ganze nacht über an ein und derselben stelle im
zimmer... Am morgen hab ich eingeschaltet und dan hatte er etwa 3
minuten bis er die richtige temperatur angezeigt hat... er hatte sich
angenähert...
Thomas O. schrieb:> Bist du auf eine schnelle Messung der Temperaturänderungen angewiesen?> Wenn ja bau einen Spannungsteiler mit einem Widerstand und einem> Dünnfilmwiderstand (wenig Wärmekapazität)auf , wäre dann halt analog> aber sehr schnell anhauchen genugt und schon ändert sich der> Spannungswert.
Die Reaktionsgeschwindigkeit ist sehr schnell..
Ich kann den Sensor auch anhauchen und er zeigt sofort den Messwert :)
Aber danke für den Tipp :)
Alexander Schmidt schrieb:> Ich glaube auch, dass es die Selbsterwärmung ist.> Suche mal hier im Forum so ähnliche Probleme gabs schon öfters.
Dann müsste das Teil einen extrem hohen Stromverbrauch haben...
Der thermische Widerstand der Gehäuse ist zwar hier nicht spezifiziert,
liegt aber bei anderen Herstellern/ICs grob zw. 150 °C/W bis 250 °C/W
(SO-8, MSOP-8, wenn das IC auf einer Platine sitzt und kein Luftstrom
vorhanden ist).
2.8 V * 0.75 mA = 2.1 mW d.h. die Selbsterwärmung dürften nur 250 °C/W *
2.1 mW ~ 0.5 °C sein.
Arc Net schrieb:> 2.8 V * 0.75 mA = 2.1 mW d.h. die Selbsterwärmung dürften nur 250 °C/W *> 2.1 mW ~ 0.5 °C sein.
Dazu kommt dann noch die Erwärmung des Spannungsteilers. Wenn der Sensor
1mA verbraucht hat der Spg.teiler einen Querstrom von 10mA.
Ist nach dem Spannungsteiler noch ein Kondensator 10µF und 100nF?
Alexander Schmidt schrieb:> Ich glaube auch, dass es die Selbsterwärmung ist.> Suche mal hier im Forum so ähnliche Probleme gabs schon öfters.
Ich arbeite selber auch mit dem Sensor und kann das von dir beschriebene
Verhalten nicht nachvollziehen. Ich habe nicht solche enormen
Abweichungen feststellen können. Ich könnte auch nicht behaupten, dass
der Sensor übermäßig träge ist. Was aber Fakt ist, dass der Sensor bei
übermäßigen Handhabung (ständig anfassen etc.) natürlich mehr anzeigt
als die Umgebungstemperatur.
Alexander Schmidt schrieb:> Ist nach dem Spannungsteiler noch ein Kondensator 10µF und 100nF?
ja, hab noch einen 100nF Kondensator dran...
Remote One schrieb:> Was aber Fakt ist, dass der Sensor bei> übermäßigen Handhabung (ständig anfassen etc.) natürlich mehr anzeigt> als die Umgebungstemperatur.
Das ist selbstverständlich klar... ich habe den Sensor aber eben nicht
angefasst... :)
Du hast geschrieben, das du den Sensor auch selbst einsetzt... Kannst du
denn bestätigen, das ich die empfangenen Daten korrekt auswerte? (Siehe
Code am beginn des threads...)
zwei Dinge könnten zu hoher Eigenerwärmung führen:
- I2C ist mit zu niedrigen PullUp-R's abgeschlossen (zu hoher Strom nach
Masse bei L)
- oder der Spannungsteiler ist zu niederohmig, und heizt selbst zu viel
(wenn ebenfalls mit auf dem Sensor-Platinchen)
Jens G. schrieb:> zwei Dinge könnten zu hoher Eigenerwärmung führen:> - I2C ist mit zu niedrigen PullUp-R's abgeschlossen (zu hoher Strom nach> Masse bei L)> - oder der Spannungsteiler ist zu niederohmig, und heizt selbst zu viel> (wenn ebenfalls mit auf dem Sensor-Platinchen)
Pullups sind 10k
Der Spannungsteiler ist 220 ohm und 330 ohm
und ja er ist auf dem platinchen und sogar mit dem massepin des ic's
verbunden...
Eventuell ist es wirklich das...
Werde es mal checken.... bzw Spannungsregler auf der Hauptplatine
einbauen
Danke :)
Claudio Hediger schrieb:> Du hast geschrieben, das du den Sensor auch selbst einsetzt... Kannst du> denn bestätigen, das ich die empfangenen Daten korrekt auswerte? (Siehe> Code am beginn des threads...)
Da du nicht den ganzen Code zeigst, ist da schwer eine Aussage möglich.
Du bekommst ja von dem Sensor 2Byte, MSB und LSB. Du hast mit uiTemp ein
int16 oder der gleichen und damit die beiden einzelnen Bytes
zusammengefasst. Es weiß aber keiner wie du das gemacht hast. Natürlich
kann es sein, dass du da einen Fehler drin hast. Mein Code zum DS7505
bzw. dem DS75LV ist im Artikel zum Thema [[Versenden von SMS mittels
Mobiltelefon]] mit dabei (Da ist auch eine Funktion mit dabei, welche
dir die Ausgabe fürs Display ohne deine Division macht)
Thomas O. schrieb:> hast du nicht die Möglichkeit den Sensor dorthin zu legen wo die> Temperatur gemessen werden soll ohne das die ganze Platine mitwandert,> ist doch klar das wenn sich den Sensor in der Nähe eines analogen> Spannungsreglers befindet, diese Temperatur mitmisst.
du und wärme... das geht irgend wie nicht zusammen, hm?
> Das mit der Dauer der Temperaturanpassung hängt mit der Wärmekapazität> des Sensors zusammen. Beispiel wenn ich ein Termomether in ein Glas
neein, die kapazutät ist winzig
der wärmewiderstand machts aus.
> Wasser stelle und dieses einfriere und dann ins Wohnzimmer stelle dauert> es eine kleine Weile bis mein Thermometer Zimmertemperatur anzeigt.
DAS ist kapazität und deine "kleine weile" sind wohl eher ~1h.
> Bist du auf eine schnelle Messung der Temperaturänderungen angewiesen?
es wird alle 2,5s gemessen. da gähnt jeder sensor.
Hallo zusammen...
Ich habe den Sensor inzwischen umgelötet...
Auf der Sensor Platine befindet sich jetzt auschlieslich der Sensor und
die Anschlussdrähte...
Die Spannung bekommt er von einem entfernten 3.3V regler...
Merkwürdigkerweise, habe ich immer noch einen offset von 5 Grad
Es ist wirklich sehr merkwürdig....
Habe auch mal einen neuen Sensor getestet... mit diesem ist es das
selbe..
Claudio Hediger schrieb:> Habe auch mal einen neuen Sensor getestet... mit diesem ist es das> selbe..
Dann zeig doch mal dein ganzes Programm und nicht nur den Ausschnitt.
Wie bereits erwähnt können da ja auch fehlöer im Zusammenhang mit deiner
16 Bit Zahl sein. Oder probiere mal die oben angegebene Lib für den
DS75LV. Die haben beide die gleiche Ansteuerung.
>> Das mit der Dauer der Temperaturanpassung hängt mit der Wärmekapazität>> des Sensors zusammen. Beispiel wenn ich ein Termomether in ein Glas>neein, die kapazutät ist winzig>der wärmewiderstand machts aus.
Macht beides etwas aus.
Tau = R * C
Das gilt analog auch für Temperaturen
ich schrieb:> Macht beides etwas aus.
mal ganz abgesehen davon, dass ich nie etwas gegenteiliges behauptet
hab...
> Tau = R * C
...ist das eine rein theoretische aussage, die du praktisch eher nie
antreffen wirst, weil es keine praktische senke ohne vernachlässigbaren
innenleitwert gibt.
Hat niemand mehr eine Idee?
Der Sensor befindet sich nun frei in der luft..
Dennoch steigt die Temperatur stetig seeehr langsam an.. bis zu einem
Offset von ein paar Grad
mach mal folgendes:
Alle Initialisierungen durchlaufen lassen.
Einmal die Temperatur auslesen
Konfigurationsregister zurücklesen,
ob da noch der korrekte Wert drinsteht.
Verifizierung des Signals mit einem Oszi oder Logic Analyzer
Die I2C Routine prüft das ACK vom Sensor?
Matthias schrieb:> mach mal folgendes:>> Alle Initialisierungen durchlaufen lassen.>> Einmal die Temperatur auslesen>> Konfigurationsregister zurücklesen,> ob da noch der korrekte Wert drinsteht.>> Verifizierung des Signals mit einem Oszi oder Logic Analyzer>> Die I2C Routine prüft das ACK vom Sensor?
Ok vielen Dank für den Tipp...
Hab ich gemacht... Stimmt alles so wie es soll... Mit dem Oszi hab ich
die korrekten Pegel auf dem Logicanalyzer stimmt das byte und die I2C
Routine prüft bzw wartet auf das ACK des Sensors... Es hat auch kein
Timeout drinn welches zu früh abbrechen könnte da die wandlung ja 200ms
dauert...
wahrscheinlich muss ich einfach mit nem offset leben oder ich ruf mal
bei maxim an :)
Hallo zusammen...
Ich konnte das Problem beheben...
Es lag an der Speisung... Diese hatte aufgrund der I2C Leitung (333kHz)
sowie des schlechten netzteiles ziemlich unangenehme Rippel drauf... (+-
20mV)
Ich habe nun ein Filter vor den Sensor gepackt und er läuft nun ziemlich
einwandfrei :)
Vielen Dank euch allen die mir versucht haben zu helfen...
Anbei noch das von mir verwendete Filter...
Grüsse
Claudio
@ Claudio Hediger (hedie)
>Anbei noch das von mir verwendete Filter...
Wie sah denn die Stromversorgung vorher aus? Sag nicht, dass dort GAR
kein Kondensator war . . .
MfG
Falk
Falk Brunner schrieb:> Wie sah denn die Stromversorgung vorher aus? Sag nicht, dass dort GAR> kein Kondensator war . . .
hehe es hatte selbstverständlich kondensatoren dort :)
Es sah etwa so aus
Schlecht Stabilisiertes Stecker netzteil -> 1uF -> 3.3V Regler -> 1uF
Kondensator -> WireWrap Draht -> 100nF Kondensator -> DS7505
Falk Brunner schrieb:> Wahrscheinlich reicht es, VOR dem 3,3V Regler einen ausreichend großen> Elko zu platzieren, so 100uF oder so, je nach Strom.
Problematisch ist eben, das ich die I2C Leitungen zusammen mit VCC und
GND verdrillt habe. Somit sind Übersprecher der 333kHz SCL Leitung auf
VCC kein Problem
Zumal die 333kHz 5V Pegel haben.