Please help with code for DS18B20


Closed Thread
Results 1 to 40 of 110

Hybrid View

  1. #1
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink

    Hi, Fratello

    I played a bit with your program ... Elektor won't be anymore what it was ... -cries-

    Note you'll have to comment the Easypic5/16F877A section and uncomment the Elektor section.

    This way you will be able to use the 18B20 in any resolution you like ...

    And OVERALL do not ask a +/- 0.5°C precision sensor to give 1/100° C .... !!!

    Alain
    Attached Files Attached Files
    ************************************************** ***********************
    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 " !!!
    *****************************************

  2. #2
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default

    THANK YOU VERRY MUCH !!!! You make me happy ! I will try the code and I will keep You informed. Thanks again !
    ****** A HAPPY NEW YEAR !!!! ******
    ******* TO ALL !!!! *******
    LE : Now is great, even still remain the 1°C difference...but "OVERALL do not ask a +/- 0.5°C precision sensor to give 1/100° C .... !!!".
    Thanks again !
    B.t.w : what can I use instead of DS18B20 for more accurate measurement ?
    Last edited by fratello; - 30th December 2008 at 18:45.

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


    Did you find this post helpful? Yes | No

    Talking The Horrible truth ...

    Quote Originally Posted by fratello View Post
    B.t.w : what can I use instead of DS18B20 for more accurate measurement ?
    Hi, Fratello

    I had a look to all the sensors you can find on the market ...

    The best "out of the box" accuracy ( all including ) will be roughly +/- 0.5 °C ... don't be sad !!!

    going further needs multipoint CALIBRATION ... with some really expensive devices.

    Note linearity is "not so bad" in our measuring range ... so, with a two points calibration ( 0 and 100°C ) , you can reach +/- 0.1 °C without too much pain.

    And remember ... DS18x20 in continuous measurement mode like here, without being fixed on a heatsink, has a 1°C self heating value ... ( a look at the Datasheet will confirm !!! )

    Just have a look to the values displayed from the power up ...

    Alain
    Last edited by Acetronics2; - 31st December 2008 at 09:58.
    ************************************************** ***********************
    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 " !!!
    *****************************************

  4. #4
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    You missed some Alain.

    We have Industrial Sensors that directly return 16-bit Temperature to two Decimal Places (in the range 0.00C-100.00C).

    It is however a complete waste of time... just breathing in the vicinity, or even just walking nearby create air-currents which wildly change the readings - we just end up ignoring the last digit. If you're trying to distill some moonshine for the New Year festivities, you're not really bothered in monitoring the temperature to hundredths of a degree.

  5. #5
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink

    Hi, Mel

    Happy to read from you !!!

    Of course, those sensors exist ... ( you have forgotten to give us the price ... lol ), but are totally out of our Hobbiysts galaxy ...

    Have a Happy new Year

    Regards
    Alain
    ************************************************** ***********************
    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 " !!!
    *****************************************

  6. #6
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    Happy New Year to you and everyone too...

    Aa a rough guide about 25 Euro's in singles, falling to below about 18 Euro's at 100 pcs, and about 10 Euro's at 1000 pcs.

    Yes of course, you can't beat the few cents a DS1820 costs, but then it's not a bare chip, but a fully enclosed product with attached leads and connectors, post sensor processor, integral noise immunity, etc etc with integral seals all ready to bolt straight into your pipework or manifold.

    If you want cheap, then just use an NTC Thermistor and plot it's curve into a PIC. You can easilly get better than 0.1C accuracy through simple interpolation across 90% of the curve. It's the way it's done in 99.9% of the cheaper Industrial and domestic Controls. I really don't see the point of DS1820's, LM35's etc, they're a waste of money for something that can be done so much simpler if only folks stopped and thought about the problem. OK, if you've only got a single I/O and a dozen items on the interconnecting bus, then fine, but otherwise why?

  7. #7
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink

    Ok, Mel

    You're talking resolution while I'm talking accuracy ...

    DS already give .0625°C resolution ... but that do not mean anything because you only know you are inside the +/- 0.5 °C error gap.
    LM 335 have your ADC resolution ... but always an "out of the box" +/- 0.5 °C precision

    That is why I say ( and repeat ... ) you can't get a better reading WITHOUT a calibration ... or comparison with a known reference.

    Even the MS5534 ( 16 bits! ) which comes with its calibration coeffs ... is given for a GUARANTEED +/- .8°C accuracy ...

    For NTC's the problem is the +/- 5 to 20% value tolerance ... that need an individual curve adjustment to each sensor ( only 1 point ... yes... but one point calibration ! )


    The only **predictable** High accuracy sensors are Platinium RTD's ... But , ... How much to pay for a class A probe ??? ...

    Temp and Thermal measurements are always funny ... and make you humble !!!

    Alain
    ************************************************** ***********************
    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 " !!!
    *****************************************

  8. #8
    Join Date
    Mar 2006
    Location
    Hyderabad (India)
    Posts
    123


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    Hi, Fratello

    I played a bit with your program ... Elektor won't be anymore what it was ... -cries-

    Note you'll have to comment the Easypic5/16F877A section and uncomment the Elektor section.

    This way you will be able to use the 18B20 in any resolution you like ...

    And OVERALL do not ask a +/- 0.5°C precision sensor to give 1/100° C .... !!!

    Alain
    But DS18B20 is capable of giving a better resolution??
    Regards,
    Sarma

  9. #9
    Join Date
    Nov 2003
    Location
    Greece
    Posts
    4,133


    Did you find this post helpful? Yes | No

    Default

    Its resolution (its step in other words) is 0.0625 but its accuracy is +/-0.5C

    Ioannis

  10. #10
    Join Date
    May 2008
    Posts
    33


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    Hi, Fratello

    I played a bit with your program ... Elektor won't be anymore what it was ... -cries-

    Note you'll have to comment the Easypic5/16F877A section and uncomment the Elektor section.

    This way you will be able to use the 18B20 in any resolution you like ...

    And OVERALL do not ask a +/- 0.5°C precision sensor to give 1/100° C .... !!!

    Alain
    I've been playing with this all day today and it's a great piece of code.
    I used this as I have an easypic 6*

    I have one problem/question that perhaps someone could answer please

    When I program the pic, the sisplay shows * at the end of the 1st line even when no buttons are or have been pressed, I thought the * was only to show a button had been pressed?

    Also if I cycle through the button presses, ie set temp and set hysteresis they both work fine
    however when I press the button again to show the actual temp that also works. but it never seems to update UNLESS I hold the button in, then it updates continually

    I've been trying to get it to update at a regular interval or any interval but it just wont, am I doing something wrong or does it never update the temp?

  11. #11
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink Check Hardware !

    Hi,

    That looks no pullups - or a Pulldown ! - on PORTA.0 input ... the " * " only appears when Porta.0 is tied to ground.

    Everything fine here ...

    Alain
    ************************************************** ***********************
    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 " !!!
    *****************************************

  12. #12
    Join Date
    May 2008
    Posts
    33


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    Hi,

    That looks no pullups - or a Pulldown ! - on PORTA.0 input ... the " * " only appears when Porta.0 is tied to ground.

    Everything fine here ...

    Alain
    I thought that might be the problem, but where would I put
    high portA.0

    If I put it before the mainloop it displays the temperature all the time,
    if I put it at the end of mainloop then it still displays the * and stays on set temperature.

    I can't figure out where to put it, must be easy but I just cant see it.

  13. #13
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink

    Quote Originally Posted by lew247 View Post
    I thought that might be the problem, but where would I put
    high portA.0

    If I put it before the mainloop it displays the temperature all the time,
    if I put it at the end of mainloop then it still displays the * and stays on set temperature.

    I can't figure out where to put it, must be easy but I just cant see it.

    May be you could place The pullup resistorS ( 3 x 47-100k ) between Porta.0,1 and 2 and VCC ...

    No need to place it inside the Pic ... that won't work !

    Alain
    ************************************************** ***********************
    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 " !!!
    *****************************************

  14. #14
    Join Date
    May 2008
    Posts
    33


    Did you find this post helpful? Yes | No

    Default

    Sorry Alain, I wasn't too clear on what I meant.

    The easypic board HAS pullup resistors on those ports.

    When i run the program, the lcd sits there with just the * displaying even when no button has been pressed (portA.0 in this circuit/program)

    it does nothing else.

    When I press portA.0 the display cycles through set temp (which I can set properly with portA.1 and portA.2)
    Next press brings it to the Hysteresis which again will set ptoperly

    the 3rd press brings up the temperature display mode (mode 0 )

    It displays the temperature at the moment the button is pressed but it never updates or checks again.

    I have checked it works by holding down the button on portA.0 and if held down (LOW) then the display works properly, measuring the temperature continious, and if the temp changes it makes port C.0 or C.2 high depending on the set temp and hysteresis.

    My problem is I cannot get it to continually measure temperatre without holding down portA.0

    Also when I turn the power on first all I get is the LCD blank other than * being displayed.

    Having read the code, * should only display after each button press, but it always displays.

    Also I'd like it when power is turned on to measure and show the temperature continoiusly until the button (portA.0) is pressed.


    Hope that made more sense, as I knew I couldn't put resistors inside the pic

  15. #15
    malc-c's Avatar
    malc-c Guest


    Did you find this post helpful? Yes | No

    Default

    Very informative thread and funny enough something that I was hoping to work on myself as I'm looking at replacing the simple on/off thermostats that control the heating in my reptiles vivariums.

    Can someone (Alain?) post up a schematic for the project. (or settings for the EasyPIC5) - I'm looking at trying to develop this a bit further so the output is pulsed, with the mark / space ratio reducing as the set point is neared. I've used commercial on/off stats, and the temperatures are hard to control. The idea is to keep the hot spot fairly constant and below 35C max, as constant exposure to a surface above this temperature can cause a burn risk to snakes.


    With the thermometer probe placed on the shelf near the logger (it wasn't actually touching the same spot), and with the thermostats sensor in the cool part of the shelf, the thermostat was set so the digital thermometer read a max of 34C. Here's are the results - the bit you are interested in is between 18:00 hrs onwards



    Obviously the heat was conducting through the wood, which cooled slower than if the sensor was measuring air or the surface of the heater. But you can see that there is a large temperature swing between the min and max readings, and that the surface reached over 40C

    To reduce this difference I placed the two probes next to the logger directly above the heater. Here is the results, which still show the same cycling, but with a lower differential (average 5 degree C), but is more stable



    The pulse proportional stat reduces the cycling as it's not switching the heater on/off/on, it maintains a steady temperature by pulsing power to it thus the heater never cools.

    I could purchase a couple of commercial PP stats for around £100 (possibly less via mail order) but then where's the fun in that Now I know there are a lot of you experience programmers that have dabbled with PWM, so wonder if you would like to add your comments here.

  16. #16
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Angry

    Quote Originally Posted by lew247 View Post
    Sorry Alain, I wasn't too clear on what I meant.

    The easypic board HAS pullup resistors on those ports.

    ...

    Hope that made more sense, as I knew I couldn't put resistors inside the pic
    Hi, Lew

    You have a HARDWARE misconfig somwhere on your board ...

    the program AT THE MOMENT, is running aboard my EasyPic5 ...

    Check pullup jumpers on Porta.0,1,and 2 : UP
    check buttons jumper : GND

    Nothing more nothing less ...

    Alain
    ************************************************** ***********************
    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 " !!!
    *****************************************

Similar Threads

  1. Reading in Manchester code
    By brid0030 in forum Code Examples
    Replies: 0
    Last Post: - 10th March 2009, 21:55
  2. How much code space do PBP statements use.
    By Darrel Taylor in forum Code Examples
    Replies: 5
    Last Post: - 13th February 2009, 21:31
  3. Loop with two motor and 2 sensors
    By MrRoboto in forum mel PIC BASIC
    Replies: 4
    Last Post: - 8th December 2008, 23:40
  4. Making Program Code Space your playground...
    By Melanie in forum Code Examples
    Replies: 15
    Last Post: - 19th July 2008, 08:26
  5. Re-Writing IF-THEN-AND-ENDIF code?
    By jessey in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 18th August 2006, 17:23

Members who have read this thread : 3

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