Recently I bought a batch of DS18B20 temperature sensors. When I plugged them in I noticed they all returned incorrect values: using the DallasTemperature.h library around 54 decrees C.
Using the same sketch and same hardware but switching the DB18B20 sensor with one I got in the past, the problem is solved. So my guess is that it's really an issue with the sensors. The strange thing is that the complete batch of sensors gives the problem (I bought 5), and the error margin is consistent (when I add 54°C to the result, it seems to be correct).
There are various VERSIONS of the "1820"... that letter in the middle is important... 18B20, 18S20, etc. There are datasheets for each, and if you look closely, you'll see how they differ. (Some have wider ranges, at the cost of less precision, some are cheaper, etc, etc.)
The basic priciples they all run on are consistent... but the control of features, and the reporting of temperature sensed varies in details.
Dear Newbies: He was just kidding. There's only a "celcius" model of any of the 1820s. If you want to display the tture in F, there's nothing to stop you, but you convert the C reading to F in your software.
If you download the newest library for OneWire, it includes examples for the DS18B20 family sensors.
Could you try that, instead of the DallasTemperature library. http://playground.arduino.cc/Learning/OneWire
Perhaps you could try another pin of the Arduino.
Or if you use only USB power, you could try a power supply.
But in the end, I have no clue what it could be.