Forum: Mikrocontroller und Digitale Elektronik DS18S20 - Erweiterte Genauigkeit


von Mathias (Gast)


Lesenswert?

Hallo zusammen,

bin gerade dabei einige DS18S20 auszuwerten.
Da ich keine 16bit Multiplikation verwenden wollte, hab ich versuch das 
ganze auf 16bit Substrakion zu vereinfachen.

Nach dem ich die Formel aus dem Datenblatt für eine Temperatur (z.B. 
25°C) und den möglichen Count_Remains angewendet habe, hab ich 
festgestellt dass das ohne weiteres möglich sein sollte.

Count_Remain = 0x01 -> Nachkommastellen = 6875
Count_Remain = 0x02 -> Nachkommastellen = 6250
Count_Remain = 0x03 -> Nachkommastellen = 5625
.
.
.
Count_Remain = 0x0D -> Nachkommastellen = 0000
.
.
.
Count_Remain = 0x10 -> Nachkommastellen = 7500

Der Unterschied ist jeweils 0,0625, also 1/16°C.
Wichtig ist, dass man ab einem Count_Reamin von 0x0E, eins vom Temp_LSB 
abziehen muss.

Sind meine Überlegungen und Berechnungen bis hier her richtig?

Wenn dem so ist kann man einfach eine Schleife programmieren die eine 
16bit Substraktion ausführt bis der Schleifenzähler Count_Remain 
entspricht. Sonderfälle ab Count_Remain = 0x0E beachten (also von 
Temp_Read eins abziehen).

Ist das auch richtig?

Vielen Dank im Voraus.

Mathias

von Mathias (Gast)


Lesenswert?

Hab vergessen, es werden pro Schleifendurchgang 625, vom Startwert 6875 
abgezogen.

von Sascha (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

genauer als 0,1 Grad hat je wohl eh nicht viel Sinn, deshalb mach ich 
das so wie im Anhang - benötigt auch keine Spez. mul/div mit 16bit.

Sascha

von 900ss (900ss)


Lesenswert?

Hier gibt es schon einen Thread zu dem Thema:
Beitrag "ds18s20: Wie implementiert Ihr die Formel ?"

900ss

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
Noch kein Account? Hier anmelden.