CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

DS18S20 & DS18B20 Codes
Goto page Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    CCS Forum Index -> Code Library
View previous topic :: View next topic  
Author Message
xuxa



Joined: 07 Jul 2009
Posts: 4

View user's profile Send private message

display only shows -0.5 C
PostPosted: Tue Jul 07, 2009 8:00 pm     Reply with quote

I am having the same problem of ''ishmael'' and I use CCS in Mplab, I've tried the 16f628a and the 16f877a, both only shows -0.5 C on display...

I'm from Brazil, my english is not perfect, thanks for any help
ishmael



Joined: 02 Jun 2009
Posts: 4

View user's profile Send private message

PostPosted: Tue Jul 07, 2009 11:54 pm     Reply with quote

xuxa, I solved the problem. I'm sorry I haven't posted a follow-up, it's just that the project is my bachelor's degree, and the exam is tomorrow, so I am a bit stressed. As far as I can remember, the -0.5 problem in the proteus simulation got solved when I loaded the proper configuration word onto the pic (from the end of the ccs exported lst file). If necessary, delete and add the pic and/or ds18s20, or even start a new project (maybe there are some bugs regarding applying the changes to those settings). Also pay attention to the oscillator setting, so that the pic speed you used in the C code, will match the speed set up in proteus.


And if your problem is not in simulation, remember to attach the pull-up resistor to the 1-wire bus. Upon checking my original post, I discovered I changed the port to, it's RA6 used as I/O , - pic uses internal oscillator. try using my fuse list : NOWDT, INTRC_IO, MCLR, PUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD
config word : 0x3F70


Hope it will work for you too.
xuxa



Joined: 07 Jul 2009
Posts: 4

View user's profile Send private message

-0.5 C problem
PostPosted: Wed Jul 08, 2009 3:03 pm     Reply with quote

In the project with 16f877A, I solved the problem using the same oscillator setting as I 've been using in my CCS code (20Mhz). Than the LCD only displayed multiples of 8, like: -16 C, -8 C, 0 C, 8 C, 16 C .....So I went to the ds1820.c code and changed the configuration to ds18B20, in a escale of 0.1 , (just by changing the comment of two lines):
Code:

//result = (float) temp3 / 2.0;   //Calculation for DS18S20 with 0.5 deg C resolution
   result = (float) temp3 / 16.0;  //Calculation for DS18B20 with 0.1 deg C resolution
 

So....it worked fine in simulation!

To the 16f628A project, it worked too, but the configuration of the fuses and the clock are :
Code:
#use delay(clock=4000000)

#fuses NOWDT, HS, PUT, NOPROTECT, BROWNOUT, MCLR, NOLVP, NOCPD
#fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOLVP,NOMCLR


Thanks very much!
I will try it on Protoboard next month, bye
milkman41



Joined: 16 Jun 2008
Posts: 30

View user's profile Send private message

PostPosted: Fri Mar 05, 2010 3:01 pm     Reply with quote

Hi all,

I'm using the original code posted by Han Solo on the first page, and I can't get a temperature other than 85 C, which I think I read was the startup temperature. I'm using a PIC16F876A with a DS18B20. The code I'm using is pretty much exactly the one Han Solo posted; all I've changed is the one wire pin, and then made some minor changes to the main code, but nothing to any of the actual one wire functions. Any help would be greatly, greatly appreciated.

thanks.
deperkin



Joined: 04 Feb 2009
Posts: 83
Location: PA

View user's profile Send private message Send e-mail

ds18s20
PostPosted: Mon Sep 20, 2010 1:56 pm     Reply with quote

I am trying to connect a ds18s20. (I am using a 4.7k pullup).

I am using the original hans solo code, with the only difference that the clock is set to 500 kHz. And I am trying to use pin D2 on an 18F4550.

I also am constantly reading a -0.5 C temperature.

Any ideas? Due to other things on the circuit I need to stick with this clock speed.

I am using compiler 4.093 as well.

I am NOT using Proteus.

If I use the updated code from http://www.ccsinfo.com/forum/viewtopic.php?t=42648&highlight=ds1820
then I constantly get 4095.0 C

I have also tried various input pins.


Thanks all!
atai21



Joined: 30 Dec 2010
Posts: 31

View user's profile Send private message

PostPosted: Tue May 10, 2011 1:49 am     Reply with quote

I'm sorry but I don't understand what this line means:
Code:

setup_adc_ports(no_ANALOGS);

Does it mean I can't put analog in my code? If I want to measure voltage from solar cell, I need to connect it with pin A3. Can someone help me?
tejca



Joined: 16 Sep 2011
Posts: 2
Location: SLOVENIJA

View user's profile Send private message

PostPosted: Mon Oct 03, 2011 2:34 pm     Reply with quote

atai21 wrote:
I'm sorry but I don't understand what this line means:
Code:

setup_adc_ports(no_ANALOGS);

Does it mean I can't put analog in my code? If I want to measure voltage from solar cell, I need to connect it with pin A3. Can someone help me?


it means analog-digital converter on specific ports are disabled and yes that part of code means you can not put analog on pins which have that converter.
_________________
--
Not Found (aka 404)

You're looking for something that does not, has not, will not, might not or
must not exist ...
... but you're always welcome to search for it.
adrix



Joined: 04 May 2012
Posts: 24

View user's profile Send private message

PostPosted: Sun May 13, 2012 4:44 am     Reply with quote

How can I make that the output would be 0,1 deg accuracy? I'm using DS18S20, so the division by 16 doesn't work.
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Sun May 13, 2012 5:26 am     Reply with quote

Of course it doesn't work.

I don't even use these parts, but I can read the data sheet.

Best ACCURACY is 0.5C.

DS18S20 is 9 bit RESOLUTION part.

LSB represents 0.5C, so that's the best it can do.

If you want better RESOLUTION, maybe use the DS18B20 which goes to 12 bits.

Each LSB is then 0.0625C, you get nearest 0.1C by rounding off.

But ACCURACY is still only 0.5C at best.

I'm assuming you understand the difference between ACCURACY and RESOLUTION.

Mike
stoyanoff



Joined: 20 Jul 2011
Posts: 375

View user's profile Send private message

PostPosted: Tue Aug 21, 2012 1:06 am     Reply with quote

I have a problem. I tried your codes but the 18B20 returned very high temperatures - 85 degrees for example. The temperature in the room is not more the 25 degrees.
Where is the problem???
shaharyar



Joined: 09 Jan 2013
Posts: 1
Location: Pakistan

View user's profile Send private message

PostPosted: Wed Jan 09, 2013 1:23 pm     Reply with quote

Thanks jds-pic and scanan
the code worked like a charm with a single error Very Happy
cheers
yuripace



Joined: 26 Nov 2013
Posts: 21

View user's profile Send private message

PostPosted: Tue Dec 31, 2013 4:15 am     Reply with quote

i have ds18b20.
all is working good at 5v.
at 3.23v temp is stucked to 127.93. I'm using 4,7k resistor connected to datapin on A0 pin of a pic16f876.
any suggestion?
Mike Walne



Joined: 19 Feb 2004
Posts: 1785
Location: Boston Spa UK

View user's profile Send private message

PostPosted: Tue Dec 31, 2013 9:02 am     Reply with quote

Are you using parasite power mode?

Mike
yuripace



Joined: 26 Nov 2013
Posts: 21

View user's profile Send private message

PostPosted: Sat Jan 04, 2014 2:53 am     Reply with quote

on ds18b20 Pin1 connected to gnd, pin3 to 3.5v, DQ connected to A0 pin of pic16f876 with a resistor connected to vcc
yuripace



Joined: 26 Nov 2013
Posts: 21

View user's profile Send private message

PostPosted: Sat Jan 04, 2014 4:03 am     Reply with quote

i'm trying different configuration. i'm using scanan code, pic16f876 and external 16mhz clock. I dont know why, now also 5v dont work, stucked at 85°.
1 - parasite power mode: pin 1 and 3 connected to gnd, pin 2 connected to A0 with a pullup resistor: result, 85°
2 - normal mode, pin 1 gnd, pin 2 dataline to A0 pin, pin3 VCC, no resistor result: -0,06

whats wrong?

Code:
#include <16F876.h>
#use delay(clock = 16000000)
#fuses HS, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#include "flexlcd.c"
#include "1wire.c"

void ds18b20_init()
{
//for  10 bit resolution mod 
   onewire_write(0xCC);
   onewire_write(0x4E);
   
   onewire_write(125);
   onewire_write(-55); //this should be done for proper working of DS18B20
   onewire_write(127);
   
   onewire_reset();
   onewire_write(0xCC);
   onewire_write(0x48);
   delay_ms(15);
}



float ds1820_read()
{
 int8 busy=0, temp1, temp2;
 signed int16 temp3;
 float result;
 
 onewire_reset();
 onewire_write(0xCC);
 onewire_write(0x44);

 while (busy == 0)
  busy = onewire_read();

 onewire_reset();
 onewire_write(0xCC);
 onewire_write(0xBE);
 temp1 = onewire_read();
 temp2 = onewire_read();
 temp3 = make16(temp2, temp1);
 
 //result = (float) temp3 / 2.0;   //Calculation for DS18S20 with 0.5 deg C resolution
 result = (float) temp3 / 16.0;  //Calculation for DS18B20 with 0.1 deg C resolution
 
 delay_ms(200);
 return(result);
}

void main()
{
delay_ms(500);
float temperature;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);

delay_ms(500);
ds18b20_init();

delay_ms(500);
lcd_init();
delay_ms(1000);

while (1)
{
 output_high(PIN_B4);
 lcd_gotoxy(1,1);
 temperature = ds1820_read();
 printf(lcd_putc,"\nTEMP: %f ", temperature);
 
 output_low(PIN_B4);
 delay_ms(1000);
}

}
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> Code Library All times are GMT - 6 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 3 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group