ds1820 error


Closed Thread
Results 1 to 14 of 14

Thread: ds1820 error

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default

    Try changing this;
    OWIn DQ, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c]

    to this;
    OWIn DQ, 2, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c]

    I beleive you need mode 2 after the last read to issue the reset pulse so the sensor
    is ready for the next on return to the start of your program.
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  2. #2
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    I had to try it out, but all I have is a DS18B20.

    The original code worked fine, except I had to change the formula. But the communications seems OK.
    <br>
    DT

  3. #3
    Join Date
    Nov 2006
    Location
    Melbourne, Australia
    Posts
    25


    Did you find this post helpful? Yes | No

    Smile

    ok have got it to work. i replaced the 4k7 resistor with a 2k4 resistor and rererererereread the data sheet for the ds1820 and put a pause 750 after the start temp conversion. IE.
    OWOUT DQ,1, [$CC, $44]
    PAUSE 750 ' Max conversion time
    OWIN DQ, 4, [count_remain]

    i found it on pg 20 under AC Electrical Characteristics temperature conversion time

    i found its not as fast as i would have thought. is there any other way to make it faster or is this the speed of using the 1 wire devices

    the code

    OSCCON = %01101000 'INTRC = 4 MHz
    TRISA = %11111111
    ANSEL = 0 'DISABLE ALL ADC
    CMCON = 7 'DISABLE ALL ANALOG COMPARATOR
    WHILE OSCCON.2=0:WEND 'STABILISE THE CLOCK
    ADCON1 = 1
    DEFINE OSC 4
    PAUSE 1000
    DEFINE LCD_DREG PORTB
    DEFINE LCD_DBIT 4 '4,5,6,7
    DEFINE LCD_RSREG PORTB
    DEFINE LCD_RSBIT 3
    DEFINE LCD_EREG PORTB
    DEFINE LCD_EBIT 2
    DEFINE LCD_BITS 4
    DEFINE LCD_LINES 2
    DEFINE LCD_COMMANDUS 2000
    DEFINE LCD_DATAUS 50
    pause 1000
    lcdout $fe, 1

    ' One-wire temperature for DS18S20

    ' This program must be compiled with PBP version 2.40 or later


    temperature VAR WORD ' Temperature storage
    count_remain VAR BYTE ' Count remaining
    count_per_c VAR BYTE ' Count per degree C

    DQ VAR PORTA.1 ' One-wire data pin

    mainloop:
    OWOut DQ, 1, [$CC, $44] ' Start temperature conversion
    pause 750 'NEEDED FOR TEMP STABILIZING
    waitloop: OWIn DQ, 4, [count_remain] ' Check for still busy converting
    IF count_remain = 0 Then waitloop

    OWOut DQ, 1, [$CC, $BE] ' Read the temperature
    OWIn DQ, 0, [temperature.LOWBYTE, temperature.HIGHBYTE, Skip 4, count_remain, count_per_c]

    ' Calculate temperature in degrees C to 2 decimal places (not valid for negative temperature)
    temperature = (((temperature >> 1) * 100) - 25) + (((count_per_c - count_remain) * 100) / count_per_c)
    LCDOut $fe, 1, DEC (temperature / 100)," C"

    GoTo mainloop ' Do it forever
    end

    thanks

    crazy cooter
    IF ITS STOCK IT WONT ROCK

  4. #4
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Hmmm, something doesn't seem right.

    The lower value pull-up, and pause 750 shouldn't be needed.
    The OWIn DQ, 4, [count_remain] will check the busy bit until the conversion is complete.

    ..... Unless it's running on "Parasite Power". In which case you need a Strong Pull-up on DQ during the conversion, and you can't read from the device for 750ms.

    If that fixed your problem, then you probably don't have 5V on pin 3 of the 1820.
    And if "Parasite Power" was intentional, you may need to do things differently.
    <br>
    DT

  5. #5
    Join Date
    Nov 2006
    Location
    Melbourne, Australia
    Posts
    25


    Did you find this post helpful? Yes | No

    Thumbs down

    Hi everyone
    Well this ds1820 ic is being a real pain. have gone over things with a multimeter and i have 5v going to pin 3. data is pin 2 and gnd is pin 1

    This is what the front of the ic looks
    ________
    dallas
    ds1820
    0634C3
    +552AC
    ________
    1 2 3
    GND 5V
    DATA
    2k4 resistor tied between pin 2 and pin 3

    I did notice "Vpu" figure 1 page 2 of the data sheet. What is Vpu is that the 5v line as i am using it. I assume it is. Could this be the problem??

    Am BALD cause of this ic. hahaha
    IF ITS STOCK IT WONT ROCK

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Yes, Vpu is VDD or +5V.

    If you have time, can you try this...
    Code:
    ;-----------------------------------------------------------------------------
    Done      VAR BIT
    Parasite  VAR BIT
    Family    VAR BYTE
    
    Diag:
        OWIn DQ, 4, [Done]
        LCDOUT $FE,1,"Done =", bin1 Done
        
        OWOUT DQ, 1, [$CC, $B4] ' READ POWER SUPPLY
        OWIn DQ, 4, [Parasite]
        LCDOUT $FE,$C0,"Power="
        if Parasite = 0 then
            LCDOUT "Parasite"
        else
            LCDOUT "VDD"
        endif
        
        OWOUT DQ, 1, [$33]
        OWIN  DQ, 2,[Family]
        LCDOUT $FE,$89,"FAM=",IHEX2 Family
        
        PAUSE 1000
    goto Diag
    ;-----------------------------------------------------------------------------
    Just stick it before the main loop in your program.

    Ideally, you should see this on the LCD ...
    Code:
    Done = 1  FAM=$10
    Power=VDD
    <br>
    DT

  7. #7
    Join Date
    Nov 2006
    Location
    Melbourne, Australia
    Posts
    25


    Did you find this post helpful? Yes | No

    Default

    Thanks darren you have been a big help.

    The program initialy comes up with

    Done =1 FAM=$10
    Power=VDD

    then half second later changes to

    Done =1 FAM=$10
    Power=Parasite

    Regards
    crazy cooter
    IF ITS STOCK IT WONT ROCK

Similar Threads

  1. Using input from Switch to control a loop
    By MrRoboto in forum mel PIC BASIC
    Replies: 9
    Last Post: - 2nd February 2009, 05:02
  2. Loop with two motor and 2 sensors
    By MrRoboto in forum mel PIC BASIC
    Replies: 4
    Last Post: - 8th December 2008, 23:40
  3. Optimizing DIV
    By skimask in forum mel PIC BASIC Pro
    Replies: 41
    Last Post: - 22nd September 2008, 04:58
  4. 16F88 Compile error
    By Toley00 in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 2nd November 2005, 00:22
  5. Compiler/Assembler Error
    By LT_Pic in forum General
    Replies: 7
    Last Post: - 21st July 2005, 09:47

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