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.
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ß
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?
siehe Beitrag "Re: 1-Wire-Bus-Projekt: DS1820 DS18S20 DS2450 DS2408 unter C und 8051" => letzter Eintrag von Visitor !
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.
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.
Okay danke, bei negativen wirds dann wohl genauso gehen -> ausprobieren.
> 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
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"
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).
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.