mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS18S20 hohe Auflösung berechnen


Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe hier einen DS18S20, funktioniert an sich problemlos.
Nur verstehe ich nicht, wie man die 1/16°C-Auflösung berechnet.

Die Formel im Datenblatt habe ich gesehen, aber:
- Wie gehen diese 0,5°C, die bei der Temperatur selbst dabei stehen,
  in die Berechnung mit ein?
- Welche Werte kann das Register count_remain annehmen?
- Wie funktioniert die Formel für negative Temperaturen?

Ich hoffe, ihr versteht mein Problem und ich bekomme hilfreiche 
Antworten.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das Datenblatt mal genauer angeschaut?: =)

http://www.mikrocontroller.net/part/DS18S20
Seite 3 und Anfang Seite 4

Steht alles da - sogar mit Beispielen binary vs. Temperatur

Ich schrieb:
> - Wie gehen diese 0,5°C, die bei der Temperatur selbst dabei stehen,
>   in die Berechnung mit ein?

Geht aus der Formel hervor.

Ich schrieb:
> - Welche Werte kann das Register count_remain annehmen?

Auf Seite 7 ist es als Byte gekennzeichnet.

Ich schrieb:
> - Wie funktioniert die Formel für negative Temperaturen?

So wie für positive Temperaturen. Man lese hierzu (wenn man es noch 
nicht verstanden hat) die Tabelle mit den Beispieltemperaturen.

Gruß

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich schneide das 0,5°C Bit immer zuerst ab.
Bei count_remain ==  0 --> Temperatur += 0,75°C
Bei count_remain == 16 --> Temperatur -= 0,25°C
Bei count_remain == 12 verhält es sich neutral.
Oder kann das count_remain auch über 16 gehen (ist ja in Byte 
prinzipiell möglich).
Bei negativen Temperaturen einfach das Zweierkomplement auflösen und 
dann berechnen.
Ist das richtig so?

Autor: Visitor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke jetzt hab ichs verstanden.
http://frank.bol.ucla.edu/2313Temper8.htm

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Stegreif ohne Gewähr (ist schon Jahre her):
Beim Berechnen der hohen Auflösung geht das 0,5°-Bit gar nicht mit ein.

Beim DS18B20 ist die Berechnung mit den Count_Remain nur ein 
überbleibsel aus alten Tagen, in denen die Temp-Digitalwandler noch mit 
zwei Oszillatoren mit unterschiedlichem Temperaturgang funktionierten.

Damals war es so, dass das CountPerDegree aus einem Eprom ausgelesen 
wurde, das die individuelle Korrektur/Kalibrier-Linearisierungstabelle 
darstellt des jeweiligen Sensors darstellt. Der Wert war für jedes Grad 
anders (im Bereich 50-150, wenn ich mich recht erinnere), was bedeutet, 
das auch die Auflösung im milli-Grad-Bereich war.

Das Ganze habe ich schon 2006 hier beschrieben:
Beitrag "Re: Temperatur 0,1°C Auflösung"
Beitrag "Re: Temperatur 0,1°C Auflösung"

Bei den Moderneren ist das nur noch emuliert, deshalb ist Count_Modulo 
CountPerDegree (oder wie es heißt) immer 16 und Count_Remain geht von 
0-15.
D.h. es sind effektiv 1/16 °C, d.h. ein LSB ist 0,0625°C.

Bei negativen Temperaturen ist das ein bisschen verzwickt, aber es sind 
doch Beispiele angegeben.
Ich kann mich allerdings an einen Thread hier erinnern, in dem behauptet 
(und auch zu beweisen versucht) wurde, die Formel sei (für negative 
Temperaturen?) falsch. Ob da was Wahres dran war? Ich habe es nicht 
verifiziert.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eProfi schrieb:

> Beim DS18B20 ist die Berechnung mit den Count_Remain nur ein
> überbleibsel aus alten Tagen,

Der B20 liefert fix und fertig in 1/16°C. Es ist der S20, der zunächst 
in 1/2°C liefert und bei dem man den Rest für 1/16°C selber reinrechnen 
kann.

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay danke, bei negativen wirds dann wohl genauso gehen -> ausprobieren.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei den Moderneren ist das nur noch emuliert, deshalb ist Count_Modulo
> CountPerDegree (oder wie es heißt) immer 16 und Count_Remain geht von
> 0-15.
> D.h. es sind effektiv 1/16 °C, d.h. ein LSB ist 0,0625°C.

Und das ist leider sehr schade, weil die alten Sensoren noch eine 
relative Genauigkeit von 1/100 Grad hatten. Und das war auch wirklich 
nutzbar. Ich habe damit mal einen Peltierregler gebaut der etwa auf 
1-2/100 Grad kam. Mit den neuen Teilen ist man leider eine 
Groessenordnung schlechter.

Olaf

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie heißen denn diese alten Temperatursensoren?

Autor: eProfi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
DS1620, DS1621, DS1623, DS1625, DS1820, DS1821, DS2434, DS2435

die genauen Hintergründe stehen in der schwer zu findenden (und deshalb 
hier angehängten) Application Note 105 app105.pdf (08.11.1999)
High Resolution Temperature Measurement
With Dallas Direct-to-Digital Temperature Sensors

habe ich 2004 schon beschrieben:
Beitrag "Re: 2 Dallas ds18s20 haben 3 Grad Unterschied"

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der DS1624 ist auch noch ein "direct to digital"-Wandler.

Die Liste hatte ich vorschnell aus dem pdf (siehe related products) 
kopiert, da sind aber Unstimmigkeiten:
DS1820: nur der 1820, nicht jedoch DS18S20 und DS18
DS2434 ist ein veralteter Battery ID/Monitor Chip
DS2435 ist bei Maxim überhaupt nicht (mehr?) als Bauteil gelistet

Hinweis: ein paar der Sensoren können als stand-alone-Thermostaten 
verwendet werden:
DS75    i2c fixed 75/80°C
DS1620  3w  digi:5,90
DS1621  2w  digi:3,90
DS1626  3w  3 outputs 8µSOP  digi06:--
DS1629  2w  digi:6,57  can be set to begin measuring after power up, but 
no word of "stand alone"
DS1631A 2w  digi06:--  only A starts after power on
DS1720  3w  standalone thermostat
DS1726  3w  3 outputs 8µSOP standalone  digi06:--
DS1731A gibt es nicht
DS1775  i2c fixed 75/80°C  digi06:--
DS1821  1w  digi:4,87


Eine sehr kompakte Auswertung der neueren emulierten Bandgap-Sensoren 
(16 counts per degree) findet ihr hier:
Beitrag "Re: DS18S20 - extended resolution bei Temperaturen um 0°C"



Auszug aus dem DS1624-Datenblatt:
The slope accumulator is used to compensate for the nonlinear behavior 
of the oscillators over temperature, yielding a high resolution 
temperature measurement. This is done by changing the number of counts 
necessary for the counter to go through for each incremental degree in 
temperature.

Hat schon mal jemand eine Liste erstellt, bei welcher Temperatur welcher 
counts-per-degree-Wert zugeordnet ist. Dazu schweigen sie sich nämlich 
aus, ob der berechnet wird, oder wie ich oben schrieb (vermutete), aus 
einem internen Eeprom stammt. Wenn letzteres, ob und wie man darauf 
zugreifen kann.
Bei einem DS1620 weiß ich zwei Werte noch (s. o.g. 2004-Link):
> Die Auflösung ist temperaturabhängig!
> bei   0°C ist sie 1/125°
> bei 125°C ist sie 1/195°

Das sind 15+ Bit Auflösung (8 Vorkomma- und 7 Nachkommabits).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.