Liebe Forumsgemeinde,
Ich beschäftige mich jetzt seit die Ferien angefangen haben wieder mit
Mikrocontrollern und um genauer zu sein mit einem ATtiny2313 und dem
DS1820.
Ich habe das one wire protokoll verstanden und kann auch die Temperatur
Sensoren auslesen. Jedoch wollte ich dann mit Hilfe der Register
COUNT_PER_C und COUNT_REMAIN eine höhere Auflösung erreichen und dann
kamen sehr schnell hintereinander um 1 grad oder mehr verschieden Werte
raus. Das sollte so eigentlich nicht sein.
Dann habe ich noch ein mal das Scratchpad komplett ausgeben lassen und
parallel dazu einmal im Computer und im Mikrocontroller die crc
berechnet und kam immer auf den richtigen wert, es gab also keine
übertragungsfehler. Aber beim ausgeben des Scratchpads ist mir
aufgefallen, dass COUNT_PER_C was laut Datenblatt für den DS18S20
konstant den Wert 16 haben soll, sich verändert und um die 84 lag.
Außerdem kam es vor, dass der COUNT_REMAIN Wert höher als der
COUNT_PER_C Wert war.
Nach viel Recherche bin ich jetzt zu dem Schluss gekommen, dass ich gar
nicht im Besitz von DS18S20 bin sonder von deren Vorgängern DS1820 die
2000 überarbeitet wurden wie hier zu lesen ist:
https://www.digitemp.com/docs/ds1820-report.pdf
Und die auch kein TO92 Packing haben sondern etwa doppelt so lang wie
TO29 sind.
Das Erklärt zumindest die schwankenden COUNT_PER_C werte (siehe seite 2
des obigen Dokuments) aber leider nicht das Auftreten von höheren
COUNT_REMAIN Werten.
Außerdem wurde an dem alten DS1820 eine starke Verfälschung der
gemessenen Temperaturen bemängelt durch Luftfeuchte und andere äußere
Einflüsse, dies erklärt die 2°C linearen Fehler, die ich bei anderen
Sensoren aus der gleichen reihe an meinem Raspberry Pi festgestellt
habe.
Hat noch jemand anders Erfahrung mit dem alten DS1820?
Wenn ja, ähnelt sie meinen?
Ansonsten wollte ich mal allgemein fragen, wenn ich mir jetzt neue
Sensoren kaufe, sollte ich eher zu den DS18B20 oder DS18S20 greifen?
Falls ich mit meinen Aussagen oben falsch bin, oder jemand etwas zu
ergänzen oder berichtigen hat, nur her damit....
LG lifesbest23
lifesbest23 schrieb:> Ansonsten wollte ich mal allgemein fragen, wenn ich mir jetzt neue> Sensoren kaufe, sollte ich eher zu den DS18B20 oder DS18S20 greifen?
Im industriellen Umfeld werden zu 50% die DS18B20 im 8-µMAX eingesetzt.
Es folgen DS18B20 und DS18S20 im TO92 mit 20% bzw. 14%. Die Versionen im
SOIC liegen mit 10% (DS18B20) bzw. 6% (DS18S20) auf den hinteren
Plätzen.
Zu schnell hintereinander Auslesen führt zu einer merklichen
Eigenerwärmumng der Sensoren. Vielleicht liegt ja auch dort deine
Temperaturabweichung begründet?
Ok, ich werde mir dann mal versuchen einen DS18B20 zu organisieren und
bei meinem jetzigen DS1820 die Messwerte nur alle 2 s auslesen.
Übrigens meine Beobachtung, dass das COUNT_REMAIN Register höhere Werte
als das COUNT_PER_C Register hat kann ich nicht mehr bestätigen, es muss
anscheinend recht spät gester gewesen sein, als ich das ausgelesen
habe....
Nur falls es jemanden interessiert, der alte DS1820 hat die Temperatur
über zwei Oszillatoren und deren Frequenzverschiebung in Abhängigkeit
von der Temperatur gemessen, der DS18S20 hingegen hat wie der DS18B20
einen 12 Bit ADC integriert gibt aber bei den beiden Temperatur Bytes
nur 9 Bit aus. Die anderen drei Bits können über die beiden oben
genannten Register ermittelt werden. Das wurde aus
Kompatibilitätsgründen so gemacht....
lifesbest23
lifesbest23 schrieb:> dass ich gar> nicht im Besitz von DS18S20 bin sonder von deren Vorgängern DS1820
Ging mir auch mal so. :-) Ich hatte definitiv DS18B20 gekauft und dann
waren das doch DS18S20.
Aber grundsätzlich ist hier die Diskussion um Temperatur, deren Messung
und die Genauigkeit nie so ganz richtig. Gerade bei der Genauigkeit kann
man gewaltige Abstriche machen, wenn man sich das ganze mal vom Weiten
ansieht.
Weder die Messung noch das Nachregeln ist so exakt, wie viele sich die
Messung wünschen. Der Faktor Zeit spielt eine große Rolle dabei.
lifesbest23 schrieb:> Ok, ich werde ... bei meinem jetzigen DS1820 die Messwerte nur alle 2 s> auslesen.
Bei einem Messwert alle zwei Sekunden, brauchst du noch keine Angst zu
haben, dass dir irgendetwas entgeht.
> Nach viel Recherche bin ich jetzt zu dem Schluss gekommen, dass ich gar> nicht im Besitz von DS18S20 bin sonder von deren Vorgängern DS1820 die> 2000 überarbeitet wurden wie hier zu lesen ist:
Dann solltest du dankbar sein. Die alten DS1820 in dem langen Gehaeuse
waren naemlich besser.
> Hat noch jemand anders Erfahrung mit dem alten DS1820?
klar.
> Wenn ja, ähnelt sie meinen?
Nein. Ich hab naemlich das Datenblatt gelesen. :-)
Mit den Registern aus dem alten DS1820 konnte man sich die Temperatur
auf 1/100Grad genau ausrechnen. Natuerlich waren die dadurch nicht auf
1/100Grad absolut genau! Aber man konnte auf 1/100Grad genau eine
Temperatur regeln. Das geht mit den neuen nicht mehr.
Bei richtiger Programmierung sind die neuen und die alten im uebrigen
softwaremaessig 1:1 austauschbar. Das ist ja der Grund warum ein fester
Wert im Register steht, damit alte Software weiterlaeuft.
Olaf
@Olaf, du hast recht, der alte DS1820 hat eine höhere Auflösung, durch
den höheren COUNT_PER_C wert und nachdem ich dann noch etwas an meinem
Code verändert habe, konnte ich auch diese Werte genau so erhalten, ich
weiß jedoch leider nicht, woran das lag, dass die teilweise immer um ein
paar Grad falsch waren...
Ich habe mir jetzt auch noch mal einen DS18S20 gekauft, und der
Funktioniert auch, bloß merkt man halt deutlich, dass der nur eine
Auflösung von 0,06 grad hat...
lfesbest23