DS1620/DS1820 Higher Precision
Archiver
Posts: 46,084
Does anyone have STAMP .bsp code (for the new P24 Basic Stamp) that
supports reading the higher precision capabilities of the DS1620 or
DS1820 1-wire thermometer?
There seems to be alot of code for the general precision temperature
conversion, but I can't seem to find anything for getting the greater
precision...
Thanks for any help you can give... I've just started out trying to
write things for the Basic Stamp, and so far its been great!
Thanks,
John
supports reading the higher precision capabilities of the DS1620 or
DS1820 1-wire thermometer?
There seems to be alot of code for the general precision temperature
conversion, but I can't seem to find anything for getting the greater
precision...
Thanks for any help you can give... I've just started out trying to
write things for the Basic Stamp, and so far its been great!
Thanks,
John
Comments
Chuck
' This program demonstrates interfacing to a Dallas Semiconductor DS1820
1-wire Digital
' Thermometer chip using the BS2p's 1-wire commands. ·Connect the BS2p to the
DS1820 as
' shown in the diagram in the OWIN or OWOUT command description.
' This code reads the Counts Remaing and Counts per Degree C registers in the
DS1820
' chip in order to provide a more accurate temperature reading (down to
1/100th of a
' degree). ·It also calculates degrees Fahrenheit. ·NOTE: The algebraic
equations used
' will not work properly with negative temperatures.
'{$STAMP BS2p} 'STAMP directive (specifies a BS2p)
Temp VAR WORD 'Holds the temperature value
CRem VAR BYTE 'Holds the counts remaining value
CPerC VAR BYTE 'Holds the Counts per degree C value
Start:
·OWOUT 0,1,[noparse][[/noparse]$CC,$44] 'Send Calculate Temperature command
CheckForDone: 'Wait until conversion is done
·PAUSE 25
·OWIN 0,4,[noparse][[/noparse]Temp] 'Here we just keep reading low pulses until
IF Temp = 0 THEN CheckForDone 'the DS1820 is done, then it returns high.
·OWOUT 0,1,[noparse][[/noparse]$CC,$BE] 'Send Read ScratchPad command
·OWIN 0,2,[noparse][[/noparse]Temp.LOWBYTE,Temp.HIGHBYTE,CRem,CRem,CRem,CRem,CRem,CPerC]
·'Calculate temperature in degrees C
·Temp = Temp>>1*100-25+((CPerC*100-(CRem*100))/CPerC)
·DEBUG HOME,DEC3 Temp/100,".",DEC2 Temp-(Temp/100*100)," C",CR
·'Calculate temperature in degrees F
·Temp = Temp*/461+3200
·DEBUG DEC3 Temp/100,".",DEC2 Temp-(Temp/100*100)," F"
GOTO Start[/font]
--John