Measure temperature over long cables

MFB

Senior Member
There have been a number of posts asking for advice on how to measure remote temperatures from sensors mounted many metres from the microcontroller. For temperatures below 150 C, members are normally trying to use smart sensors that output digital data. Sending I2C, SPI or 1-wire can be difficult over long cable runs due to capacitive loading and electrical noise.

In contrast, the AD590 is a current output device that is inherently suited to driving long cable runs. I have achieved reliable results over several metres of unscreened twisted cable in many demanding automotive environments. The down side is that this is an analog sensor that must interface to an ADC input but this can easily be achieved using the circuit shown below. The AD590 has an output of 1 uA/K over the range –55 C to +150C. If we therefore use a resistor value of 10K the ADC will see 2.73 volts at 0C and 3.73 volts at 100C.

Although this simple single transistor analog interface lacks the offset circuitry that would enable the entire ADC range to be used, it still provides a measurement resolution that is compatible with the AD590’s laser trimmed accuracy of +/- 0.5C.
 

MFB

Senior Member
Dippy, The price depends on the accuracy you need. The AD590ANZ is available from Farnell for £4.29 +VAT and has an accuracy of +/-2.5C, whilst the AD590CZN that has an accuracy of +/- 0.5C and costs £13.16 +VAT. An opamp could be used to scale the sensor output to exactly match the input range of the ADC but using readadc10 command will still provide adequote resolution from the single resistor interface.
 

Jeremy Leach

Senior Member
The long cable run issue - why not just drop the baud rate to incredibly slow? Or even just bit bang with a bit rate of something like once per second and average the incoming data stream? With remote monitoring of things like temperature there is oodles of time to communicate a reading. Just a thought.
 

MFB

Senior Member
Jeremy, You are of course correct in suggesting that lower data rates would enable more robust digital transmission but my point about the AD590 was that, being a current output device, it is inherently suited to operating in a noisy environment over long cables. There are many proven techniques for sending digital information in industrial environment, one example being current-loop.
 

MORA99

Senior Member
RS485 is also very good at sending data over long distances, so a small picaxe and a RS485 half-duplex chip at each end of a cat 5 cable works wonders.

But the comm is a bit more work since only one slave can send on the same pair at a time, full duplex dont really solve that, just that you can listen and send at the same time.

I tested it over about 200meters of regular mains wire (unconnected ofcause).
 

alphamike27

New Member
Another good point is that the AD590 can me multiplexed (see DA590 data sheet)

So by using an I/O expander, such as the MCP23017, you can get away with 2 data lines for the expander, and 1 for the ADC, and have countless long distance temperature measuring points......................
 

MFB

Senior Member
Alphamike27, Another trick you can do with AD590 sensors is to connect them in parallel if you need, for example, to measure the average temperature of a large room or building.


MORA99, The technique of mounting a PICAXE near to a temperature sensor and sending the data over a serial link is limited to applications that will not subject the microcontroller to excessive temperatures (the AD590 will work up to 150 C) or EMI.
 

nbw

Senior Member
I remember the capacitive loading issue from using LM35s - a simple RC network 75 ohms / 1uF made a huge difference. Alternatively, maybe you could take multiple readings - 100s of them - and average them out. Using an independent temp measurement to calibrate your average, you could have a lookup table in the picaxe?
 

MPep

Senior Member
@ Jeremy Leach,
Instead of using low Baud rates, why not use variable Pulse Width to designate temperature differences.
I believe Maxim have a range of sensors that work on this principle.
You could use a 08M to read a DS18B20, and then send on via variable PW.

Just a thought.
 

MFB

Senior Member
MPep, as I already said to MORA99 "The technique of mounting a PICAXE near to a temperature sensor and sending the data over a serial link is limited to applications that will not subject the microcontroller to excessive temperatures (the AD590 will work up to 150 C) or EMI". Also keep in mind that the smaller PICAXE chips use internal RC timing that can be effected by temperature and cause drift in the serial output rate.
 

Jeremy Leach

Senior Member
On the pulse width idea - to get around the issue of internal clock drift, could always send a 'calibration' initial pulse before the 'reading' pulse and the receiver calculates the actual reading from the ratio of the two - although maybe this is something that is ok in theory but not in practice :)
 
Top