ds18s20 reads incorectly


Closed Thread
Results 1 to 40 of 43

Hybrid View

  1. #1
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by jcleaver View Post
    the osc is correct dont know why it did not show caps
    tried going with 4 still read low
    ? what changes in math
    TEMP = ((TEMP*9/5)+32 ) is what i am using
    thanks for the inputs

    have not found any samples using owin with this chip
    Ok, try this:
    Code:
    @ DEVICE pic16F877A, HS_OSC
    @ DEVICE pic16F877A, WDT_ON
    @ DEVICE pic16F877A, PWRT_ON
    @ DEVICE pic16F877A, BOD_ON
    @ DEVICE pic16F877A, MCLR_on
    @ DEVICE pic16F877A, LVP_OFF
    @ DEVICE pic16F877A, CPD_OFF
    @ DEVICE pic16F877A, PROTECT_OFF
    define osc 20
    define loader_used 1
    define lcd_dreg portd
    define lcd_dbit 4
    define lcd_rsreg portd
    define lcd_rsbit 2
    define lcd_ereg portd
    define lcd_ebit 3
    define lcd_lines 2
    define lcd_bits 4
    define lcd_commandus 2000
    define lcd_dataus 50
    command var byte:i var byte:temp var word:dq var porta.5:dq_dir var trisa.5
    adcon1=255:porta=255:portb=0:trisa=255:trisb=0:cmcon=7
    Lcdout $fe,1,"Temp in degrees C"
    mainloop:	Gosub init1820:command=$cc:Gosub write1820:command=$44
    Gosub write1820:Pause 2000:Gosub init1820:command=$cc:Gosub write1820
    Pause 2000:command=$be:Gosub write1820:Gosub read1820:TEMP=((TEMP*9/5)+32)
    Lcdout $fe,1,dec(temp>>1),".",dec(temp.0*5)," degrees C":Goto mainloop
    init1820:	Low DQ:Pauseus 500:DQ_DIR=1:Pauseus 100
    If DQ=1 Then Lcdout $fe,1,"DS1820 not present":Pause 500:Goto mainloop
    Pauseus 400:Return
    write1820:	For i=0 to 7:low dq
    If command.0[temp] = 0 Then
    	Pauseus 60:DQ_DIR = 1
    Else
    	@ nop
    	DQ_DIR = 1:Pauseus 60
    Endif
    Next i:Return
    read1820:	For i=0 to 15:low dq
    		@ nop
    		dq_dir=1:temp.0[i]=1:if dq=0 then temp.0[i]=0
    		pauseus60:next i:return
    End

  2. #2


    Did you find this post helpful? Yes | No

    Default Update 2

    Tried This And Get Better Reading Only 6 Deg Low

    However It Does Not Respond To Any Temperature Changes

    Thanks

  3. #3
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by jcleaver View Post
    Tried This And Get Better Reading Only 6 Deg Low
    However It Does Not Respond To Any Temperature Changes
    Thanks
    Ok, what DOES it put out for a temperature?

    What happens if you heat it up, read the temperature, shut it off, put it in the freezer for a few minutes, take it out, power it up and read the temp right away?

  4. #4


    Did you find this post helpful? Yes | No

    Question Answer

    Read 65.xxxx

    Does Not Update Hold Sensor And Nothing Changes

    Reloaded Several Programs And They Work However Still Get Low Tmp Reading

    Dont Think Its A Hardware Problem Because It Works Perfectly In Mikroe

    Guess I Could That But Have Better Luck With Pbp As For As Adding My Stuff

  5. #5
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by jcleaver View Post
    Read 65.xxxx
    Does Not Update Hold Sensor And Nothing Changes
    Reloaded Several Programs And They Work However Still Get Low Tmp Reading
    Dont Think Its A Hardware Problem Because It Works Perfectly In Mikroe
    Guess I Could That But Have Better Luck With Pbp As For As Adding My Stuff
    65.xxx
    Hmmm....maybe 65.535? 65.535 F? 65.535 C ?
    Ever think that maybe your input was all 1's? And that it might've just been coincidence that your temp's are about 30 degrees low depending on the temp of the room?

    Try this, might help...
    http://www.picbasic.co.uk/forum/showthread.php?t=561

    AND:
    Last edited by skimask; - 23rd July 2008 at 20:05.

  6. #6
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,651


    Did you find this post helpful? Yes | No

    Lightbulb

    Hi, Cleaver

    I suppose you work on an easyPic 4 or 5 ...

    try this with sensor connected to PORTE2 and Pullup on porta.0 and 1.

    After power on, type of sensor and ID is displayed.

    press RA0 Button ( active low ! ) and you turn to thermo mode ( thermostat, in fact , see RA0 and RA.1 use ... )

    Alain

    PS : Fully PbP Written Program...
    Attached Files Attached Files
    Last edited by Acetronics2; - 23rd July 2008 at 21:03.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  7. #7
    Join Date
    May 2008
    Location
    Florida
    Posts
    64


    Did you find this post helpful? Yes | No

    Default

    jcleaver

    Here is a couple of files for you to play with.

    pbptc.txt is your program that correctly displays the temp C and changes when the temp changes. You will need to change the LCD port, I use an easypic5 and you are using a different port.

    I also have a program for MikroB attached, again it is for the ep5 board.

    Take a few minutes and look at how the temp is being read in both. Once you figure that out you will see where the problem is.

    BTW the formula is from the DS18S20 datasheet.





    In your Mikro file did you notice that the temp was calculated before it is converted?

    if j2 = $FF then
    tmp_sign = "-" ' temperature sign
    j1= j1 or $FF ' complement of two
    j1= j1 + $01
    else
    tmp_sign = "+"
    end if
    j2 = (j1 and $01) * 5 ' Get decimal value
    j1 = j1 >> 1 ' Get temp value
    j1 = ((j1*9/5)+32) 'Convert C to F

    And in your PBP file nothing is calculated until after the conversion.

    TEMP = ((TEMP*9/5)+32 )
    Lcdout $fe, 1, dec (temp >> 1),".",dec(temp.0 * 5)," degrees C"

    Good Luck!

    Acetronics: May I play around with the thermostat program you posted?
    Attached Files Attached Files
    Last edited by manwolf; - 23rd July 2008 at 23:18. Reason: Brain Bubble

Similar Threads

  1. DS18B20 VS DS18S20 & multiple
    By RFsolution in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 7th February 2008, 22:43
  2. Using A Ds18s20 And Servo
    By CrazyCooter in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 12th September 2007, 09:41
  3. DS18S20 displays wrong temperatures
    By Shozo Kanamori in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 6th August 2007, 03:18
  4. DS18s20 - negative teperature
    By Ceug2005 in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 2nd February 2005, 12:40
  5. 16F877, DS18S20 and Serial Comm Problem
    By YellowTang in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 26th April 2004, 10:36

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts