Menu
JAQForum Ver 19.10.27

Forum Index : Microcontroller and PC projects : tempr not working

   Page 3 of 4    
Posted: 04:01pm
29 May 2026
Copy link to clipboard
Peter63
Senior Member

here comes a new run with cooling spray...

T1 175 T2 255 T3 5  Test1 =-40.5        Test2 =-39.5625 Test3 =-39.5625 Test4 =-39.375  Test5 =-39.375
Temp =-39.375`C
T1 173 T2 255 T3 6  Test1 =-41.5        Test2 =-40.625  Test3 =-40.625  Test4 =-40.4375 Test5 =-40.4375
Temp =-40.4375`C
T1 173 T2 255 T3 3  Test1 =-41.5        Test2 =-40.4375 Test3 =-40.4375 Test4 =-40.25   Test5 =-40.25
Temp =-40.25`C
T1 174 T2 255 T3 9  Test1 =-41  Test2 =-40.8125 Test3 =-40.8125 Test4 =-40.625  Test5 =-40.625
Temp =-40.625`C
T1 175 T2 255 T3 2  Test1 =-40.5        Test2 =-39.375  Test3 =-39.375  Test4 =-39.1875 Test5 =-39.1875
Temp =-39.1875`C
T1 176 T2 255 T3 10  Test1 =-40 Test2 =-39.875  Test3 =-39.875  Test4 =-39.6875 Test5 =-39.6875
Temp =-39.6875`C
T1 178 T2 255 T3 12  Test1 =-39 Test2 =-39      Test3 =-39      Test4 =-38.8125 Test5 =-38.8125
Temp =-38.8125`C
T1 183 T2 255 T3 4  Test1 =-36.5        Test2 =-35.5    Test3 =-35.5    Test4 =-35.3125 Test5 =-35.3125
Temp =-35.3125`C
T1 193 T2 255 T3 4  Test1 =-31.5        Test2 =-30.5    Test3 =-30.5    Test4 =-30.3125 Test5 =-30.3125
Temp =-30.3125`C
T1 205 T2 255 T3 3  Test1 =-25.5        Test2 =-24.4375 Test3 =-24.4375 Test4 =-24.25   Test5 =-24.25
Temp =-24.25`C
T1 215 T2 255 T3 2  Test1 =-20.5        Test2 =-19.375  Test3 =-19.375  Test4 =-19.1875 Test5 =-19.1875
Temp =-19.1875`C
T1 224 T2 255 T3 12  Test1 =-16 Test2 =-16      Test3 =-16      Test4 =-15.8125 Test5 =-15.8125
Temp =-15.8125`C
T1 232 T2 255 T3 16  Test1 =-12 Test2 =-12.25   Test3 =-12.25   Test4 =-12.0625 Test5 =-12.0625
Temp =-12.0625`C
T1 238 T2 255 T3 15  Test1 =-9  Test2 =-9.1875  Test3 =-9.1875  Test4 =-9       Test5 =-9
Temp =-9`C
T1 243 T2 255 T3 7  Test1 =-6.5 Test2 =-5.6875  Test3 =-5.6875  Test4 =-5.5     Test5 =-5.5
Temp =-5.5`C
T1 247 T2 255 T3 4  Test1 =-4.5 Test2 =-3.5     Test3 =-3.5     Test4 =-3.3125  Test5 =-3.3125
Temp =-3.3125`C
T1 251 T2 255 T3 6  Test1 =-2.5 Test2 =-1.625   Test3 =-1.625   Test4 =-1.4375  Test5 =-1.4375
Temp =-1.4375`C
T1 254 T2 255 T3 15  Test1 =-1  Test2 =-1.1875  Test3 =-1.1875  Test4 =-1       Test5 =-1
Temp =-1`C
T1 255 T2 255 T3 1  Test1 =-0.5 Test2 = 0.6875  Test3 = 0.6875  Test4 = 0.875   Test5 = 0.875
Temp = 0.875`C
T1 0 T2 0 T3 12  Test1 = 0      Test2 = 0       Test3 = 0       Test4 = 0.1875  Test5 = 0.1875
Temp = 0.1875`C
T1 1 T2 0 T3 2  Test1 = 0.5     Test2 = 0.625   Test3 = 0.625   Test4 = 0.8125  Test5 = 0.8125
Temp = 0.8125`C
T1 3 T2 0 T3 3  Test1 = 1.5     Test2 = 1.5625  Test3 = 1.5625  Test4 = 1.75    Test5 = 1.75
Temp = 1.75`C
T1 6 T2 0 T3 16  Test1 = 3      Test2 = 2.75    Test3 = 2.75    Test4 = 2.9375  Test5 = 2.9375
Temp = 2.9375`C
T1 8 T2 0 T3 13  Test1 = 4      Test2 = 3.9375  Test3 = 3.9375  Test4 = 4.125   Test5 = 4.125
Temp = 4.125`C
T1 10 T2 0 T3 11  Test1 = 5     Test2 = 5.0625  Test3 = 5.0625  Test4 = 5.25    Test5 = 5.25
Temp = 5.25`C
T1 12 T2 0 T3 11  Test1 = 6     Test2 = 6.0625  Test3 = 6.0625  Test4 = 6.25    Test5 = 6.25
Temp = 6.25`C
T1 14 T2 0 T3 14  Test1 = 7     Test2 = 6.875   Test3 = 6.875   Test4 = 7.0625  Test5 = 7.0625
Temp = 7.0625`C
T1 15 T2 0 T3 3  Test1 = 7.5    Test2 = 7.5625  Test3 = 7.5625  Test4 = 7.75    Test5 = 7.75
Temp = 7.75`C
T1 17 T2 0 T3 7  Test1 = 8.5    Test2 = 8.3125  Test3 = 8.3125  Test4 = 8.5     Test5 = 8.5
Temp = 8.5`C
T1 18 T2 0 T3 12  Test1 = 9     Test2 = 9       Test3 = 9       Test4 = 9.1875  Test5 = 9.1875
Temp = 9.1875`C
T1 20 T2 0 T3 14  Test1 = 10    Test2 = 9.875   Test3 = 9.875   Test4 = 10.0625 Test5 = 10.0625
Temp = 10.0625`C
T1 21 T2 0 T3 6  Test1 = 10.5   Test2 = 10.375  Test3 = 10.375  Test4 = 10.5625 Test5 = 10.5625
Temp = 10.5625`C
T1 22 T2 0 T3 12  Test1 = 11    Test2 = 11      Test3 = 11      Test4 = 11.1875 Test5 = 11.1875
Temp = 11.1875`C
T1 23 T2 0 T3 5  Test1 = 11.5   Test2 = 11.4375 Test3 = 11.4375 Test4 = 11.625  Test5 = 11.625
Temp = 11.625`C
T1 24 T2 0 T3 16  Test1 = 12    Test2 = 11.75   Test3 = 11.75   Test4 = 11.9375 Test5 = 11.9375
Temp = 11.9375`C
T1 24 T2 0 T3 11  Test1 = 12    Test2 = 12.0625 Test3 = 12.0625 Test4 = 12.25   Test5 = 12.25
Temp = 12.25`C
T1 25 T2 0 T3 7  Test1 = 12.5   Test2 = 12.3125 Test3 = 12.3125 Test4 = 12.5    Test5 = 12.5
Temp = 12.5`C
T1 25 T2 0 T3 3  Test1 = 12.5   Test2 = 12.5625 Test3 = 12.5625 Test4 = 12.75   Test5 = 12.75
Temp = 12.75`C
T1 26 T2 0 T3 15  Test1 = 13    Test2 = 12.8125 Test3 = 12.8125 Test4 = 13      Test5 = 13
Temp = 13`C
T1 26 T2 0 T3 12  Test1 = 13    Test2 = 13      Test3 = 13      Test4 = 13.1875 Test5 = 13.1875
Temp = 13.1875`C
T1 26 T2 0 T3 9  Test1 = 13     Test2 = 13.1875 Test3 = 13.1875 Test4 = 13.375  Test5 = 13.375
Temp = 13.375`C
T1 27 T2 0 T3 6  Test1 = 13.5   Test2 = 13.375  Test3 = 13.375  Test4 = 13.5625 Test5 = 13.5625
Temp = 13.5625`C
T1 27 T2 0 T3 2  Test1 = 13.5   Test2 = 13.625  Test3 = 13.625  Test4 = 13.8125 Test5 = 13.8125
Temp = 13.8125`C
T1 28 T2 0 T3 16  Test1 = 14    Test2 = 13.75   Test3 = 13.75   Test4 = 13.9375 Test5 = 13.9375
Temp = 13.9375`C
T1 28 T2 0 T3 13  Test1 = 14    Test2 = 13.9375 Test3 = 13.9375 Test4 = 14.125  Test5 = 14.125
Temp = 14.125`C
T1 28 T2 0 T3 11  Test1 = 14    Test2 = 14.0625 Test3 = 14.0625 Test4 = 14.25   Test5 = 14.25
Temp = 14.25`C
T1 28 T2 0 T3 9  Test1 = 14     Test2 = 14.1875 Test3 = 14.1875 Test4 = 14.375  Test5 = 14.375
Temp = 14.375`C
T1 29 T2 0 T3 6  Test1 = 14.5   Test2 = 14.375  Test3 = 14.375  Test4 = 14.5625 Test5 = 14.5625
Temp = 14.5625`C
T1 29 T2 0 T3 4  Test1 = 14.5   Test2 = 14.5    Test3 = 14.5    Test4 = 14.6875 Test5 = 14.6875
Temp = 14.6875`C
T1 29 T2 0 T3 2  Test1 = 14.5   Test2 = 14.625  Test3 = 14.625  Test4 = 14.8125 Test5 = 14.8125
Temp = 14.8125`C
T1 30 T2 0 T3 16  Test1 = 15    Test2 = 14.75   Test3 = 14.75   Test4 = 14.9375 Test5 = 14.9375
Temp = 14.9375`C
T1 30 T2 0 T3 13  Test1 = 15    Test2 = 14.9375 Test3 = 14.9375 Test4 = 15.125  Test5 = 15.125
Temp = 15.125`C
T1 30 T2 0 T3 12  Test1 = 15    Test2 = 15      Test3 = 15      Test4 = 15.1875 Test5 = 15.1875
Temp = 15.1875`C
T1 30 T2 0 T3 10  Test1 = 15    Test2 = 15.125  Test3 = 15.125  Test4 = 15.3125 Test5 = 15.3125
Temp = 15.3125`C
T1 31 T2 0 T3 8  Test1 = 15.5   Test2 = 15.25   Test3 = 15.25   Test4 = 15.4375 Test5 = 15.4375
Temp = 15.4375`C
T1 31 T2 0 T3 6  Test1 = 15.5   Test2 = 15.375  Test3 = 15.375  Test4 = 15.5625 Test5 = 15.5625
Temp = 15.5625`C
T1 31 T2 0 T3 3  Test1 = 15.5   Test2 = 15.5625 Test3 = 15.5625 Test4 = 15.75   Test5 = 15.75
Temp = 15.75`C
T1 31 T2 0 T3 2  Test1 = 15.5   Test2 = 15.625  Test3 = 15.625  Test4 = 15.8125 Test5 = 15.8125
Temp = 15.8125`C
T1 32 T2 0 T3 10  Test1 = 16    Test2 = 16.125  Test3 = 16.125  Test4 = 16.3125 Test5 = 16.3125
Temp = 16.3125`C
T1 34 T2 0 T3 14  Test1 = 17    Test2 = 16.875  Test3 = 16.875  Test4 = 17.0625 Test5 = 17.0625
Temp = 17.0625`C
T1 35 T2 0 T3 2  Test1 = 17.5   Test2 = 17.625  Test3 = 17.625  Test4 = 17.8125 Test5 = 17.8125
Temp = 17.8125`C
T1 35 T2 0 T3 2  Test1 = 17.5   Test2 = 17.625  Test3 = 17.625  Test4 = 17.8125 Test5 = 17.8125
Temp = 17.8125`C
T1 35 T2 0 T3 2  Test1 = 17.5   Test2 = 17.625  Test3 = 17.625  Test4 = 17.8125 Test5 = 17.8125
Temp = 17.8125`C
T1 35 T2 0 T3 3  Test1 = 17.5   Test2 = 17.5625 Test3 = 17.5625 Test4 = 17.75   Test5 = 17.75
Temp = 17.75`C
T1 35 T2 0 T3 2  Test1 = 17.5   Test2 = 17.625  Test3 = 17.625  Test4 = 17.8125 Test5 = 17.8125
Temp = 17.8125`C
T1 35 T2 0 T3 1  Test1 = 17.5   Test2 = 17.6875 Test3 = 17.6875 Test4 = 17.875  Test5 = 17.875
Temp = 17.875`C
T1 41 T2 0 T3 3  Test1 = 20.5   Test2 = 20.5625 Test3 = 20.5625 Test4 = 20.75   Test5 = 20.75
Temp = 20.75`C
T1 41 T2 0 T3 2  Test1 = 20.5   Test2 = 20.625  Test3 = 20.625  Test4 = 20.8125 Test5 = 20.8125
Temp = 20.8125`C
T1 40 T2 0 T3 12  Test1 = 20    Test2 = 20      Test3 = 20      Test4 = 20.1875 Test5 = 20.1875
Temp = 20.1875`C
T1 40 T2 0 T3 15  Test1 = 20    Test2 = 19.8125 Test3 = 19.8125 Test4 = 20      Test5 = 20
Temp = 20`C
T1 46 T2 0 T3 11  Test1 = 23    Test2 = 23.0625 Test3 = 23.0625 Test4 = 23.25   Test5 = 23.25
Temp = 23.25`C
T1 49 T2 0 T3 1  Test1 = 24.5   Test2 = 24.6875 Test3 = 24.6875 Test4 = 24.875  Test5 = 24.875
Temp = 24.875`C
T1 47 T2 0 T3 1  Test1 = 23.5   Test2 = 23.6875 Test3 = 23.6875 Test4 = 23.875  Test5 = 23.875
Temp = 23.875`C
T1 46 T2 0 T3 13  Test1 = 23    Test2 = 22.9375 Test3 = 22.9375 Test4 = 23.125  Test5 = 23.125
Temp = 23.125`C


/Peter63
 
Posted: 10:55pm
29 May 2026
Copy link to clipboard
phil99
Guru


Thanks for the extra testing. It filled all the gaps in the T3 data which I now see goes from 16 to 1 with increasing temperature.
And that makes quite a difference. The equation in the datasheet does not appear to be correct.

The data you have given me should be enough to simulate a DS18S20 properly and find the correct equation. More to follow.

Edit.
This gives the most sensible results:-
DS18S20t = Str2bin(int16,Chr$(T1)+Chr$(T2))\2 + (16 - T3)/16 -0.9375
'or
Value = Str2bin(int16,Chr$(T1)+Chr$(T2))\2 + (16-T3)/16 -0.9375


And also appears to work below zero.
Edited 2026-05-30 12:26 by phil99
 
Posted: 01:44am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

photo of the DS18S20 marking used during test



/Peter63
 
Posted: 02:41am
30 May 2026
Copy link to clipboard
phil99
Guru


The two programs with the updated equation.

Function DS18S20(PinNbr As INTEGER) As FLOAT
' derived from DS18x20 test code by TassyJim
 Local INTEGER  T1,T2,T3

 OneWire RESET PinNbr                       ' reset before command
 OneWire WRITE PinNbr, 8, 2, &hCC, &h44     ' start conversion
 Pause 750                                  ' maximum conversion time
 OneWire RESET PinNbr                       ' reset before command
 OneWire WRITE PinNbr, 1, 2, &hCC, &hBE     ' command read data
 OneWire READ PinNbr, 0, 7, T1,T2,T3,T3,T3,T3,T3  'get the data

 DS18S20t = Str2bin(int16,Chr$(T1)+Chr$(T2))\2 + (16-T3)/16 -0.9375 'process the data
End Function


PinNbr = MM.Info(pinno GP7)
Dim n = 0
Dim DStemp = DS18S20(PinNbr) 'purge old data and start new conversion

Do    'Main Loop
 t = timer
 Print n;
 DStemp = DS18S20(PinNbr) 'get Temp, if ready
 If DStemp <> 1000 Then
   Print
   Print "Temp =";DStemp;"`C"
   n = 0
 EndIf
 Do : Loop until Timer - t > 49.9
 Inc n,50
Loop

Function DS18S20(PinNbr As INTEGER) As FLOAT
' Adapted from DS18x20 test code by TassyJim
 Local INTEGER  done, T1, T2, T3
 DS18S20 = 1000                           'standard error code
 OneWire READ PinNbr, 4, 1, done          ' is conversion finished?
 If done = 0 Then Exit Function           ' if not return to program
 'Get the data
 OneWire RESET PinNbr                     ' reset before command
 OneWire WRITE PinNbr, 1, 2, &hCC, &hBE   ' command read data
 OneWire READ PinNbr, 0, 7, T1,T2,T3,T3,T3,T3,T3  'get the data

 Value = Str2bin(int16,Chr$(T1)+Chr$(T2))\2 + (16-T3)/16 -0.9375 'process the data
 DS18S20 = Cint(Value * 10) / 10 'round to 1/10ths

 'Start conversion, ready for next read
 OneWire RESET PinNbr                      ' reset before command
 OneWire WRITE PinNbr, 8, 2, &hCC, &h44    ' start conversion
End Function

End
 
Posted: 03:29am
30 May 2026
Copy link to clipboard
TassyJim
Guru


The COUNT PER °C scratchpad is supposed be always 16 with the DS18S20 but Peter has a DS1820 according to the photo.
Are you sure that COUNT PER °C is always 16 with the DS1820?

I don't have either chip to test with.

Jim
 
Posted: 03:34am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

A little test again then with cooling spray, seems to be working fine now.
> run
0 50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-36.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-36.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-35.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-35.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-35`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-35.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-34.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-34.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-34.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-34.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-30.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-29`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-27.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-25.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-24.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-22.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-21.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-19.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-17.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-12.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-5.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 0.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 5.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 9.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 12.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 15.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 16.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 18.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 20.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 21.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 21.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 21.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 23.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 24.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 24.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 24.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 24`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 24.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 25.9`C
 
Posted: 03:37am
30 May 2026
Copy link to clipboard
phil99
Guru


Jim, you are right, as you were writing that I was reading the Dallas DS1820 datasheet and COUNT PER °C varies according to an internal calibration table.

I will incorporate that and ask Peter63 to test again.

The saga continues...

Peter, those results do look more promising.
Edited 2026-05-30 13:40 by phil99
 
Posted: 03:38am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

I thought I had a DS18S20, according to my saved label, but now it doesn't seem to be so.



Happy to test further...
Edited 2026-05-30 14:01 by Peter63
 
Posted: 04:06am
30 May 2026
Copy link to clipboard
phil99
Guru


The last byte is COUNT_PER_C (CpC)
TEMPERATURE = TEMP_READ – 0.25 + (COUNT_PER_C – COUNT_REMAIN) / COUNT_PER_C

Function DS18S20(PinNbr As INTEGER) As FLOAT
' derived from DS18x20 test code by TassyJim
  Local INTEGER  T1,T2,T3,CpC

  OneWire RESET PinNbr                       ' reset before command
  OneWire WRITE PinNbr, 8, 2, &hCC, &h44     ' start conversion
  Pause 750                                  ' maximum conversion time
  OneWire RESET PinNbr                       ' reset before command
  OneWire WRITE PinNbr, 1, 2, &hCC, &hBE     ' command read data
  OneWire READ PinNbr, 0, 8, T1,T2,T3,T3,T3,T3,T3,CpC  'get the data

  DS18S20t = Str2bin(int16,Chr$(T1)+Chr$(T2))\2 -0.25 + (CpC-T3)/CpC 'process the data
End Function


PinNbr = MM.Info(pinno GP7)
Dim n = 0
Dim DStemp = DS18S20(PinNbr) 'purge old data and start new conversion

Do    'Main Loop
  t = timer
  Print n;
  DStemp = DS18S20(PinNbr) 'get Temp, if ready
  If DStemp <> 1000 Then
    Print
    Print "Temp =";DStemp;"`C"
    n = 0
  EndIf
  Do : Loop until Timer - t > 49.9
  Inc n,50
Loop

Function DS18S20(PinNbr As INTEGER) As FLOAT
' Adapted from DS18x20 test code by TassyJim
  Local INTEGER  done, T1, T2, T3, CpC
  DS18S20 = 1000                           'standard error code
  OneWire READ PinNbr, 4, 1, done          ' is conversion finished?
  If done = 0 Then Exit Function           ' if not return to program
  'Get the data
  OneWire RESET PinNbr                     ' reset before command
  OneWire WRITE PinNbr, 1, 2, &hCC, &hBE   ' command read data
  OneWire READ PinNbr, 0, 8, T1,T2,T3,T3,T3,T3,T3,CpC  'get the data

  Value = Str2bin(int16,Chr$(T1)+Chr$(T2))\2  -0.25 + (CpC-T3)/CpC 'process the data
  DS18S20 = Cint(Value * 10) / 10 'round to 1/10ths

  'Start conversion, ready for next read
  OneWire RESET PinNbr                      ' reset before command
  OneWire WRITE PinNbr, 8, 2, &hCC, &h44    ' start conversion
End Function
End


Edit.
Corrected a few typos in code above.
If you are already using it please copy it again.
Edited 2026-05-30 14:13 by phil99
 
Posted: 04:19am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

new test...
> run
0 50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-33.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-31.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-31.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-31.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-31.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-32`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-30.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-30.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-30.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-27.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-22.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-20.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-17.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-16.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-15.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-12.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-11.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-9.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-8.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-6.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-6.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-3.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-2.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-1.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp =-0.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 0.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 0.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 0.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 1.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 1.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 2.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 2.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 3.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 4.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 4.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 5.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 6.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 7.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 8.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 10.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 11.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 14.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 15.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 15.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 17.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 18.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 19.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 19.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 19.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 19.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 19.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 20.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 22`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 22.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 22.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 22.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650
Temp = 22.1`C
 
Posted: 04:27am
30 May 2026
Copy link to clipboard
TassyJim
Guru


Can you alter the program to also print out CpC for each temperature.
IT  will be interesting to see if it does remain at 16 over the full range. If it does change, you definitely do have DS1820, not DS18S20

Jim
 
Posted: 04:33am
30 May 2026
Copy link to clipboard
phil99
Guru


This addition should do it.
  OneWire READ PinNbr, 0, 8, T1,T2,T3,T3,T3,T3,T3,CpC  'get the data
  Print "T1=";T1,"T2=";T2,"T3=";T3,"CpC=";CpC,,
  Value = Str2bin(int16,Chr$(T1)+Chr$(T2))\2  -0.25 + (CpC-T3)/CpC 'process the data

And note, there were typos in my last post that have been corrected.
Edited 2026-05-30 14:36 by phil99
 
Posted: 04:37am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

> run
CpC = 16 0 50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-25.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-25.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-25.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-26.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-26.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-25.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-24.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-23.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-21.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-19.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-14.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-6.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp =-2.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp = 1.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp = 6.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp = 11.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp = 15.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp = 18.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp = 19.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 CpC = 16
Temp = 20.3`C
 
Posted: 04:45am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

new test T-value... and CpC
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 204 T2= 255 T3= 16 CpC= 16
Temp =-26.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 204 T2= 255 T3= 16 CpC= 16
Temp =-26.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 204 T2= 255 T3= 11 CpC= 16
Temp =-25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 206 T2= 255 T3= 12 CpC= 16
Temp =-25`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 210 T2= 255 T3= 14 CpC= 16
Temp =-23.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 214 T2= 255 T3= 9 CpC= 16
Temp =-20.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 219 T2= 255 T3= 8 CpC= 16
Temp =-17.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 223 T2= 255 T3= 8 CpC= 16
Temp =-15.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 226 T2= 255 T3= 10 CpC= 16
Temp =-14.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 230 T2= 255 T3= 13 CpC= 16
Temp =-13.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 237 T2= 255 T3= 5 CpC= 16
Temp =-8.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 246 T2= 255 T3= 10 CpC= 16
Temp =-4.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 250 T2= 255 T3= 10 CpC= 16
Temp =-2.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 253 T2= 255 T3= 7 CpC= 16
Temp =-0.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 1 T2= 0 T3= 6 CpC= 16
Temp = 0.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 4 T2= 0 T3= 16 CpC= 16
Temp = 1.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 7 T2= 0 T3= 8 CpC= 16
Temp = 3.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 13 T2= 0 T3= 4 CpC= 16
Temp = 6.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 19 T2= 0 T3= 3 CpC= 16
Temp = 9.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 26 T2= 0 T3= 16 CpC= 16
Temp = 12.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 29 T2= 0 T3= 8 CpC= 16
Temp = 14.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 35 T2= 0 T3= 8 CpC= 16
Temp = 17.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 37 T2= 0 T3= 2 CpC= 16
Temp = 18.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 40 T2= 0 T3= 9 CpC= 16
Temp = 20.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 42 T2= 0 T3= 12 CpC= 16
Temp = 21`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 42 T2= 0 T3= 11 CpC= 16
Temp = 21.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 42 T2= 0 T3= 13 CpC= 16
Temp = 20.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 42 T2= 0 T3= 16 CpC= 16
Temp = 20.8`C
 
Posted: 04:53am
30 May 2026
Copy link to clipboard
phil99
Guru


CpC staying on 16 is what I would expect for a DS18S20, not DS1820.
The rate of change of temp. is so high it is hard to tell what the decimal part is doing.
To check that ideally we need a very slow change over about 2°C, while displaying T3 to get as much fine detail as possible.
 
Posted: 04:56am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

Could it be DS18S20 that I have, but maybe they are mislabeled?
 
Posted: 04:59am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

new test...
Temp = 23.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 6 CpC= 16
Temp = 23.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 5 CpC= 16
Temp = 23.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 5 CpC= 16
Temp = 23.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 4 CpC= 16
Temp = 23.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 2 CpC= 16
Temp = 23.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 2 CpC= 16
Temp = 23.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 1 CpC= 16
Temp = 23.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 16 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 16 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 16 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 47 T2= 0 T3= 1 CpC= 16
Temp = 23.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 16 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 16 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 16 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 15 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 15 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 15 CpC= 16
Temp = 23.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 14 CpC= 16
Temp = 23.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 13 CpC= 16
Temp = 23.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 11 CpC= 16
Temp = 24.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 48 T2= 0 T3= 9 CpC= 16
Temp = 24.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 49 T2= 0 T3= 7 CpC= 16
Temp = 24.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 49 T2= 0 T3= 4 CpC= 16
Temp = 24.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 49 T2= 0 T3= 3 CpC= 16
Temp = 24.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 49 T2= 0 T3= 1 CpC= 16
Temp = 24.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 16 CpC= 16
Temp = 24.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 15 CpC= 16
Temp = 24.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 13 CpC= 16
Temp = 24.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 13 CpC= 16
Temp = 24.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 12 CpC= 16
Temp = 25`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 11 CpC= 16
Temp = 25.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 10 CpC= 16
Temp = 25.1`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 50 T2= 0 T3= 9 CpC= 16
Temp = 25.2`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 51 T2= 0 T3= 8 CpC= 16
Temp = 25.3`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 51 T2= 0 T3= 6 CpC= 16
Temp = 25.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 51 T2= 0 T3= 5 CpC= 16
Temp = 25.4`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 51 T2= 0 T3= 4 CpC= 16
Temp = 25.5`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 51 T2= 0 T3= 2 CpC= 16
Temp = 25.6`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 51 T2= 0 T3= 1 CpC= 16
Temp = 25.7`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 16 CpC= 16
Temp = 25.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 15 CpC= 16
Temp = 25.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 15 CpC= 16
Temp = 25.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 14 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 13 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 14 CpC= 16
Temp = 25.9`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 15 CpC= 16
Temp = 25.8`C
50 100 150 200 250 300 350 400 450 500 550 600 650 T1= 52 T2= 0 T3= 16 CpC= 16
 
Posted: 05:08am
30 May 2026
Copy link to clipboard
TassyJim
Guru


Thanks to Googles AI,I found another datasheet that suggests that the DS18S20 uses the same die as the DS1820 so has the same markings "DS1820"



That's bloody helpful!

I never trust the BS that Googles AI spits out but it might be right this time.

Jim
 
Posted: 05:19am
30 May 2026
Copy link to clipboard
Peter63
Senior Member

Feels like it would be so Dallas Maxim, the variant is also TO-92 which I have.

/Peter63
 
Posted: 05:27am
30 May 2026
Copy link to clipboard
phil99
Guru


Ok your data looks good.
Ideally when T1 is an even number the Temp. should be above xx.7 and below xy.3 and when T1 is an odd number the Temp. should be between xx.3 and xx.7, and that appears to be what you are getting.

So I think you now have a working Function that can cater for both DS18S20 and DS1820.
Edited 2026-05-30 15:30 by phil99
 
   Page 3 of 4    
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026