Forum: Mikrocontroller und Digitale Elektronik DS18S20 und DS18B20 gemeinsam am Bus - Temperaturkonvertierung


von Jens R. (Firma: esolutions GmbH) (jens_r38)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin gerade am One Wire programmieren. Ich unterstütze sowohl die 
DS18S20 als auch den neueren DS18B20.

Nachdem die bestehenden Geräte die Temperaturen als Grad C * 100 in 
einem int16_t verarbeiten wollte ich diesen Standard gern beibehalten.

Um die Wandlung ohne Genauigkeitsverlust mit 16-Bit Arithmetik 
durchführen zu können war doch mehr Aufwand notwenig als ich 
ursprünglich gedacht habe.

Angehängt habe ich das Testprogramm, das printf und die 
Vergleichsberechnung mit float fliegt natürlich im AVR Programm raus.

Vielleicht hilft es ja jemanden.

Schöne Grüße
Jens Riebold

von Jens R. (Firma: esolutions GmbH) (jens_r38)


Lesenswert?

Den Testlauf möchte ich Euch nicht vorenthalten.....

Schöne Grüße
Jens
1
family=10, val=01 00 remain=0 ---> temp=12837 rtemp=12837.000000 korrektur=37
2
family=10, val=01 00 remain=15 ---> temp=12790 rtemp=12790.000000 korrektur=90
3
family=10, val=00 aa remain=0 ---> temp=8537 rtemp=8537.000000 korrektur=37
4
family=10, val=00 aa remain=15 ---> temp=8490 rtemp=8490.000000 korrektur=90
5
family=10, val=00 32 remain=0 ---> temp=2537 rtemp=2537.000000 korrektur=37
6
family=10, val=00 32 remain=15 ---> temp=2490 rtemp=2490.000000 korrektur=90
7
family=10, val=00 00 remain=0 ---> temp=37 rtemp=37.000000 korrektur=37
8
family=10, val=00 00 remain=15 ---> temp=-10 rtemp=-9.000000 korrektur=90
9
family=10, val=ff ff remain=0 ---> temp=-13 rtemp=-12.000000 korrektur=87
10
family=10, val=ff ff remain=15 ---> temp=-60 rtemp=-59.000000 korrektur=40
11
family=10, val=ff ce remain=0 ---> temp=-2463 rtemp=-2462.000000 korrektur=37
12
family=10, val=ff ce remain=15 ---> temp=-2510 rtemp=-2509.000000 korrektur=90
13
family=10, val=ff 92 remain=0 ---> temp=-5463 rtemp=-5462.000000 korrektur=37
14
family=10, val=ff 92 remain=15 ---> temp=-5510 rtemp=-5509.000000 korrektur=90
15
family=28, val=07 d0 remain=0 ---> temp=12500 rtemp=12500.000000 korrektur=0
16
family=28, val=05 50 remain=0 ---> temp=8500 rtemp=8500.000000 korrektur=0
17
family=28, val=01 91 remain=0 ---> temp=2506 rtemp=2506.000000 korrektur=6
18
family=28, val=01 95 remain=0 ---> temp=2531 rtemp=2531.000000 korrektur=6
19
family=28, val=00 a2 remain=0 ---> temp=1012 rtemp=1012.000000 korrektur=12
20
family=28, val=00 08 remain=0 ---> temp=50 rtemp=50.000000 korrektur=0
21
family=28, val=00 00 remain=0 ---> temp=0 rtemp=0.000000 korrektur=0
22
family=28, val=ff f8 remain=0 ---> temp=-50 rtemp=-50.000000 korrektur=0
23
family=28, val=ff 5e remain=0 ---> temp=-1013 rtemp=-1012.000000 korrektur=12
24
family=28, val=fe 6f remain=0 ---> temp=-2507 rtemp=-2506.000000 korrektur=18
25
family=28, val=fc 90 remain=0 ---> temp=-5500 rtemp=-5500.000000 korrektur=0

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.