Dallas DS18S20

This forum is for posts that might be considered off-topic but that may be useful or interesting to members. Examples include posts about electronics or programming in general, other microcontrollers or interesting devices, useful websites, etc.
Post Reply
super-d
Posts: 3
Joined: 15 March 2008, 17:51 PM

Dallas DS18S20

Post by super-d »

I am having problems using the DS18S20 temperature sensor. I had it working on both the BX24 and ZX24. Then I moved my project to another bench and it has stopped working on both processors.

I'm using the exact same code below and the temp is always -0.5C. On the BX24 it uses parasite power and it will alway return +85C. I've tried different DS1820s and get the same results.

Is there a good way to troubleshoot and find out where the problem is? I've checked and double checked but as far as I can tell it is hooked up correctly for the ZX24 code and it is the only thing hooked up to the processor. Also, I was told these are DS18S20 but on the side of the TO-92 package it says DS1820? Shouldn't it be a DS18S20?

Any help will be greatly appreciated.
TIA
David

Code: Select all

' This code is intended for the DS18S20 temperature chip 
' operating in the externally powered mode (i.e. not 
' powered parasitically via the DQ line).  The code assumes 
' the presence of a single device on the 1-wire bus. 

Const owPin as Byte = 13   ' the pin to which the DQ line is connected 

Sub Main() 
   Dim temp as Single 
   temp = readTemp() 
   Debug.Print "The temperature is "; Fmt(temp, 1); "*C" 
End Sub 

' 
'' readTemp 
' 
' Request a temperature conversion and read the result.  The 
' return value is in degrees Centigrade. 
' 
Function readTemp() as Single 
   Dim b as Byte 
   Dim data(1 to 9) as Byte 

   ' initialize the 1-wire interface (return value is the "presence" bit) 
   b = Reset1Wire(owPin) 

   ' initiate a conversion 
   data(1) = &Hcc      ' "skip ROM" command 
   data(2) = &H44      ' conversion command 
   Call Put1WireData(owPin, data, 2) 
    
   ' delay to allow for the conversion 
   Call Delay(0.750) 

   ' send another reset pulse 
   b = Reset1Wire(owPin) 

   ' prepare to read the data 
   data(1) = &Hcc      ' "skip ROM" command 
   data(2) = &Hbe      ' "read scratchpad" command 
   Call Put1WireData(owPin, data, 2) 

   ' read the data 
   Call Get1WireData(owPin, data, 9) 

   ' send another reset pulse 
   b = Reset1Wire(owPin) 
    
   ' compute the temperature 
   Dim ival as Integer Alias data(1) 
   readTemp = CSng(ival) / 2.0 
End Function
dkinzer
Site Admin
Posts: 3120
Joined: 03 September 2005, 13:53 PM
Location: Portland, OR

Re: Dallas DS18S20

Post by dkinzer »

super-d wrote:as far as I can tell it is hooked up correctly
My conjecture is that it is not hooked up correctly or the 'owPin' constant doesn't match the connection. On my test setup, if I change the owPin setting to a different pin (one that it is not connected to) the result returned is -0.5*C. When I switch it back I get a reasonable temperature value.
super-d wrote:on the side of the TO-92 package it says DS1820? Shouldn't it be a DS18S20?
Mine is marked the same way. According to the Maxim website, the DS1820 is no longer available, superseded by the DS18S20.
- Don Kinzer
super-d
Posts: 3
Joined: 15 March 2008, 17:51 PM

Post by super-d »

Thanks Don. It was on the right pin (13) BUT I had pins 1 and 3 reversed.... needless to say I lost a DS1820 and after replacing it, I'm getting accurate readings. I was using the datasheet for the pin layout but some how managed to reverse them.

Thanks again.
David
Post Reply