I am trying to enable remote reading of the temperature gauges in my furnace room by adding DS18B20 thermometers.
Since I had some Raspberry Pis and DS18B20
s, and some networking equipment on hand, I decided to crimp on a couple of RJ45 jacks and chain some RJ45 sockets together, with a final network cable with a 1kΩ
resistor between the data
and 3v
wires. This works fine, except for the fact that the temperatures diverge more than I'd like...
Executing cat /sys/bus/w1/devices/28*/w1_slave
returns the temperature, but even with the sensors lying next to each other, they diverge by more than 1.5°C
I have monitored them over a longer period of time, even covering them with my hand, and keeping them right next to each other.
Sample output
ad 01 55 05 7f 7e 81 66 16 : crc=16 YES
ad 01 55 05 7f 7e 81 66 16 t=26812
b4 01 55 05 7f 7e 81 66 2b : crc=2b YES
b4 01 55 05 7f 7e 81 66 2b t=27250
My setup
Is there a way to calibrate them to the same temperature? I would hate to have to take individual quirks into account, as even if I was to round to nearest 2°C
there is no real way to be sure they would be in the same increment. And replacing sensors would mean recalibrating values in my code.
The reason for wanting this is that I want to detect whether the furnace is heating the water at the moment, or the water is at target temperature, or (hopefully not) that the incoming water is warmer than the outgoing water, meaning that my hot water tank is heating the house. If I cannot trust the readings, I may get too many false positives.
I have read guides like this instructable, but as far as I can see, this is gathering the calibration data, and not calibrating the actual sensor...
EDIT: Conclusion
Cheap sensors are not always reliable. I have switched to the real thing and thrown out the fake ones