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>
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
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
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
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
Yes, Vpu is VDD or +5V.
If you have time, can you try this...Just stick it before the main loop in your program.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 ;-----------------------------------------------------------------------------
Ideally, you should see this on the LCD ...<br>Code:Done = 1 FAM=$10 Power=VDD
DT
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
Well, it's reporting the correct Family number so the communications is working.
But as suspected, it's also reporting that there's no power on VDD Pin 3.
Since you said you already verified that there is +5V on Pin 3.
The only thing left, is to say that that particular part has a problem with it's power pin.
Maybe it was plugged in backwards at some point along the way.
The rest still seems to be working, I guess you can just use it in Parasite mode.
But you may want to approach it differently than just a smaller Pull-Up resistor.
HTH,
Darrel
Ok i i flipped the wires on the ds1820 around (PIN1=3 PIN2=2 PIN3=1)
And now get
Done =1 FAM=$FF
Power=VDD
When i put a 10K pullup resistor on i get
Done =1 FAM=$10
Power=Parasite
when i take the resistor away i get
Done =0 FAM=$00
Power=Parasite
I flipped the ic around and get these readings
When i put a 10K pullup resistor on i get
Done =1 FAM=$FF
Power=VDD
when i take the resistor away i get
Done =1 FAM=$FF
Power=VDD
Does anyone have these problems?
Regards CC
IF ITS STOCK IT WONT ROCK
Bookmarks