DS18B20 1-wire - accuracy and MOSFET ??

DS18B20 1-wire thermometer - how accurate is it and when does it need a MOSFET? I received two free samples of the DS18B20 from Maxim and used the 1-wire library to get them working with my Arduino Diecimila. Everything works fine, CRC's are correct, but I have a couple of questions:

  1. The two DS18B20's don't give the same temperature. Even though they are three inches apart on my breadboard and both powered with the 5 volt pin on my Arduino, one chip gives temperature readings that are consistently higher than the other one. The difference is small, only 3-6 hex digits at 12 bit resolution, which is 3/16 to 6/16 of a Centigrade degree. But I expected the readings to be exactly the same since the two chips are close together, and there is no breeze or other air disturbance. And if this is normal and expected variation, then what good is 12 bit resolution if the chips are only accurate to within a quarter or half a degree (which would be 9 or 10 bit resolution)?

  2. Page 6 of the DS18B20 datasheet at: http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf says that a MOSFET is necessary on the 1-wire bus if parasitic power is used. But the chips seem to work with both with an external supply (such as the 5 volt pin of my Arduino) and also under parasitic power regardless of whether or not a MOSFET is present. Are there specific conditions under which a MOSFET on the 1-wire bus is necessary, such as a very long data line?

Thanks for any comments on either of the two questions above.

First rule of instrumentation (aka sensors): All sensors lie.

That is, every sensor has a bit of error from the "true" value and no two sensors will be exactly the same. The datasheets for the 18B20 says +/- 0.5 Deg C. So worst case, one could be + 0.5C and the other could be -0.5C from the "true" temperature, thus they could read 1 C difference.

There is, believe it or not, also the possibility that even over a few inches separation, there could be a small difference in temperature. Also, my own experience with these chips is that strong light can cause a change in readings (nearby halogen light, sunlight).

As far as the MOSFET, I've used a number of these on modest length runs with just a simple 4.7k pull-up resistor. That may be because I've been using them with a COM port adapter on a computer, rather than a microcontroller pin. I forget if it incorporates its own pull-up. Your results may vary.

I prefer to just supply the separate 5v wire instead of parasitic power because it just makes everything a lot simpler. They only need the MOSFET to be active ("strong pull-up") during the temperature conversion, and it needs to be off (and just normal resistor pull-up) at other times (standby and network communication).

Since up to now I've only used the 1-wire devices with a computer com port & adapter, I have yet dug into the library on the microcontrollers. Does anyone know if a MOSFET is required? I would think that you could simply switch the pin to OUTPUT mode and write a HIGH instead of a separate strong pull-up. After all, that's what you would do in the normal course of send commands to the device.

Thanks Dilbert98122, I think I'll just use it without a MOSFET until I start to get bad CRC's or data.

Good plan :)

Final note: I just used a 40 foot telephone wire and the DS18B20 worked just fine at the end of it without a MOSFET. I was quite surprised. So I'm convinced that I won't have to worry about the MOSFET for my project. Thanks again for your comments.