ds18b20 sensor fails at high temperature

lfreezelfreeze Posts: 174
edited December 2011 in Accessories Vote Up0Vote Down
I need help with a ds18b20 problem. I have four ds18b20 sensors running on a single Prop pin. They all work fine as long as temperatures are below approximately 120 degrees Fahrenheit. Frequently but not always, when the temperature reaches 120 the sensor fails. Giving no Reading and stopping data from the other three sensors. Basically I stop getting any readings from any of the sensors when any one of them goes above approx 120F. When the temperature drops the sensors all begin providing data.

I duplicated the hardware and got exactly the same result. I am using Micah Dowtys objec,t as the program to read data from the sensors. I am thinking
I have bad batch of sensors from Maxim.

Has anyone experienced anything like this?

Thanks in advance for any help.



  • 12 Comments sorted by Date Added Votes
  • ElectricAyeElectricAye Posts: 4,561
    edited October 2011 Vote Up0Vote Down
    Any chance any of these components are using a mechanical socket of some kind? Could it be that high temperatures are causing connectors to disengage?

    Also, are you sure you're looking at degrees F and not degrees C? I think the DS18B20 maxes out somewhere near 120 C.

    Be aware (I think) that Micah's (old?) software does not work for degrees below zero, just in case you happen to be working in that range.
  • lfreezelfreeze Posts: 174
    edited October 2011 Vote Up0Vote Down
    Thanks for the response. I am not using a connector. Each sensor is soldered to a tail, which is connected to the prop.
    I am using farenheit. All my requirements are for temperatures above 31F. I did stumble across the below freezing bug
    in a previous project. What appears to be happening, is that the one sensor I am heating to 130F is grounding its data
    contact. When this happens, because it is part of a four sensor buss, no readings from the other three sensors are
    available. When the heated sensor cools, the ground is lifted and all four sensors now provide readings. I did change
    the heated sensor several times to eliminate it as the problem
    I sent an inquiry to Maxim, perhaps they can offer a suggestion.

  • ElectricAyeElectricAye Posts: 4,561
    edited October 2011 Vote Up0Vote Down
    lfreeze wrote: »
    ...What appears to be happening, is that the one sensor I am heating to 130F is grounding its data

    That's very strange. I've used these sensors up to about 180F and I've never seen anything like that. What about your power supply line? Any chance something is going wrong with it or a capacitor shorting out?
  • lfreezelfreeze Posts: 174
    edited October 2011 Vote Up0Vote Down
    I always assume I am making some dumb mistake, so when all else fails I make a complete hardware change, including the power supply. In this case it made no difference. The failure was the same. I am not entirely convinced that I have bad group of ds18b20 sensors, but in order to eliminate them I will order another bunch from Digikey. I have inserted a spreadsheet below of the results of one of the tests I made.

    Time sensor1 sensor2 sensor3

    4:39:13 119.075 65.3 42.013
    4:40:13 123.462 65.3 42.013
    4:41:13 2730.087 65.3 42.013
    4:42:13 2730.087 65.3 42.013
    4:43:13 2730.087 65.3 42.013
    4:44:13 2730.087 65.3 42.013
    4:45:13 2730.087 65.3 42.013
    4:46:13 2730.087 65.3 42.013
    4:47:13 2730.087 65.3 42.013
    4:48:13 124.25 65.3 42.013
    4:49:13 119.75 65.638 42.013
    4:50:13 116.6 65.638 42.013
    4:51:13 114.35 65.638 42.013
    4:52:13 112.775 65.638 42.013
    4:53:13 111.875 65.638 42.013
    4:54:13 111.088 65.638 42.125
    4:55:13 110.412 65.638 42.125
    4:56:13 109.4 65.638 42.125
    4:57:13 108.162 65.638 42.125
    4:58:13 106.812 65.525 42.125
    4:59:13 105.35 65.525 42.125
    5:00:13 106.812 65.525 42.125
    5:01:13 102.875 65.525 42.125
    5:02:13 110.525 65.525 42.125
    5:03:13 113.675 65.525 42.125
    5:04:13 113.675 65.525 42.013
    5:05:13 119.75 65.525 42.125
    5:06:13 6876.725 65.638 42.125
    5:07:13 6876.725 65.638 42.125
    5:08:13 6876.725 65.638 42.125
    5:09:13 6876.725 65.638 42.125
    5:10:13 6876.725 65.638 42.125
    5:11:13 6876.725 65.638 42.125
    5:12:13 6876.725 65.638 42.125
    5:13:13 6876.725 65.638 42.125
    5:14:13 6876.725 65.638 42.125
    5:15:13 6876.725 65.638 42.125
    5:16:13 6876.725 65.638 42.125
    5:17:13 121.887 65.638 42.237
    5:18:13 116.15 65.75 42.237
    5:19:13 112.438 65.75 42.237
  • lfreezelfreeze Posts: 174
    edited October 2011 Vote Up0Vote Down
    I may have stumbled on a possible solution, but I am not sure how to code it. The snippet below is from the Maxim data sheet for the ds18b20. If I understand the second paragraph, correctly, I may need to Insert these commands:

    Skip rom (cch)
    Read power (b4h)
    Then initiate a “read time slot”

    I am not sure how or where to insert these commands in the one wire object.
    I am using an external power supply with a 4.7k pullup

    “The use of parasite power is not recommended for temperatures above +100°C since the DS18B20 may not be able to sustain communications due to the higher leakage currents that can exist at these temperatures. For applications in which such temperatures are likely, it is strongly recommended that the DS18B20 be powered by an external power supply.

    In some situations the bus master may not know whether the DS18B20s on the bus are parasite powered or powered by external supplies. The master needs this information to determine if the strong bus pullup should be used during temperature conversions. To get this information, the master can issue a Skip ROM [CCh] command followed by a Read Power Supply [B4h] command followed by a “read time slot”. During the read time slot, parasite powered DS18B20s will pull the bus low, and externally powered DS18B20s will let the bus remain high. If the bus is pulled low, the master knows that it must supply the strong pullup on the 1-Wire bus during temperature conversions.
  • ElectricAyeElectricAye Posts: 4,561
    edited October 2011 Vote Up0Vote Down

    I posted a question about this Skip Rom command in the Propeller forum just now, so hopefully somebody can provide an answer for you.
  • JonnyMacJonnyMac Posts: 5,940
    edited November 2011 Vote Up0Vote Down
    I don't have a DS18B20, I have a regular DS1820 -- this is my code snippet that reads and returns the temperature in 0.1 degrees C units.
    pub readtc | tc
    '' Reads temperature from DS1820
    '' -- returns degrees C in 0.1 degree units
      repeat                                                        ' let conversion finish                 
        tc := ow.rdbit     
      until (tc == 1)    
      tc := ow.read                                                 ' lsb of temp      
      tc |= ow.read << 8                                            ' msb of temp
      tc := ~~tc * 5                                                ' extend sign, 0.1° units
      return tc
    Jon McPhalen
    Hollywood, CA
    It's Jon or JonnyMac -- please do not call me Jonny.
  • lfreezelfreeze Posts: 174
    edited November 2011 Vote Up0Vote Down
    Thank you for the responses. After a lot testing (all bad), I have decided to
    Abandon the buss arrangement and, install each sensor on a separate circuit with
    Each sensor on its own prop pin. I built that circuit last night and it has worked perfectly
    with no errors above 120F. I used the same sensors that had been failing in the buss arrangement.
    I suspect it is a program issue with the one wire object, but it is well above my skill level to identify.

  • ElectricAyeElectricAye Posts: 4,561
    edited December 2011 Vote Up0Vote Down
    lfreeze wrote: »
    I suspect it is a program issue with the one wire object, but it is well above my skill level to identify.


    Hi Larry,

    I, too, am now getting a similar error with my DS18B20s on a new project. I have 6 of these sensors on a single Prop pin, and noticed one sensor glitching consistently at about 135 F, then another around 148 F, and another around 170 F. The other DS18B20s on the line seemed to read okay but they were still at lower temps.

    So I tried to run two DS18B20s on a single Prop pin instead of six DS18B20s, and the glitchy DS18B20's "glitch temperature" seemed to go up. So I put that glitchy DS18B20 on its own Prop pin all by itself and its glitch temperature went up again, this time to about 180 F.

    I've never seen this behavior before, but it's also possible I've never run so many DS18B20s on a single line to such high temperatures all at once.

    This freaks me out because I use these things to run heater controllers, and since the glitches sometimes register as negative temps, it will drive the heaters to run non-stop, risking total burn out.

    I, too, suspect there's something going on with the one-wire software because the glitch temperatures appear to be consistent with each test run but seem to change depending on how many DS18B20s are on the line.

    I have yet to even begin trying to figure out what to do, but I thought I'd let you know because you "solved" your version of this problem by putting each sensor on its own Prop pin, but from what I can see, the problem might appear even when running each sensor off a single Prop pin, especially as you get into higher temps.

    Cue soviet funeral music as I attempt to figure out what to do next. I'm clueless as to how the one wire object does its business.
  • lfreezelfreeze Posts: 174
    edited December 2011 Vote Up0Vote Down

    It certainly was a frustrating experience trying to get the DS18B20’s running on a buss.
    I normally can solve these issues with a drill down to utter simplicity in programming and replacement of all parts. Not in this case. I believe, based on the tests I made, that the sensors are all good, as I used the same failed sensors (buss) on individual pins, and they have been working without error.

    I suspect that the one wire object needs some modification, but at this point that is only a guess.

    In my application, I have been measuring the boiler water temperature going into, and coming out of a standard hot water heating boiler. The temperature range has been between 55F to 170F. The program reads the temperature each minute and saves it in a CSV file (via viewport). It has worked without error since Early November.

  • ElectricAyeElectricAye Posts: 4,561
    edited December 2011 Vote Up0Vote Down
    lfreeze wrote: »
    I suspect that the one wire object needs some modification, but at this point that is only a guess....

    Hi Larry,

    thanks for providing some more details on your experiences. I've been running these DS18B20s to maintain a device around 100F for nearly the past 2 years and when I made some test runs on it, I had it up to 180F briefly and never saw any problems. I've also had about 6 of these DS18B20s on one wire running between -20F and room temperature and never saw any problems. But, as I mentioned before, I'm now seeing even a single DS18B20 on one wire fail around 180F, but after googling for problems with the DS18B20, I haven't found any body complaining about the sensors themselves, so I'm guessing something strange is happening in the one wire software - maybe the chip takes longer to do conversions at higher temps and the one wire object is not allowing for it. Who knows? I'm not a computer guy, and when I try to follow the details of people performing bit-banging operations and the like, the next thing I know I'm waking up on the floor the next day, curled up in the fetal position.

    I haven't had a chance to try to pinpoint the problem. And if it's buried in the guts of the software, there's little hope that I will find it. This week I hope to run some more tests on my present project using the DS18B20s, but I'll probably have to throw myself at the mercy of the Propeller Forum and hope somebody there can provide some advice. Based upon what I've seen, this is not a problem with the DS18B20, but is an Object software glitch. I know Micah Dowty's original software did not allow for negative temps, for example, so it's obviously not an object that has been run through all the paces. Consequently, it's probably got some other bugs, too.

    Let us know if you see any behavior that might provide some clues. And be careful if you're running these sensors near 180 F.

    thanks again.

    PS. Could you edit your original post to label this thread as Unsolved. Maybe that will help get some expert's attention.
Sign In or Register to comment.