As promised in my last blog, I will start immediately with my discussion of semiconductor sensors. The basic sensor is normally just a diode, and you could stick with just that if it suits your purposes. There are several documents on implementing the diode technique like this one from TI: “Diode-Based Temperature Measurement“; or this from Linear Tech: “Accurate Temperature Sensing with an External P-N Junction.”
Aside from the simple diode, there are more than a few semiconductor sensors that produce an analog voltage in proportion to the temperature. The venerable LM34 and LM35 are still going strong, with many newer additions like the Linear Tech LTC2997 , which allows external semiconductor sensors; or the AD590 from Analog Devices. Each of these will require some form of ADC, but the semiconductor temperature sensors have evolved to include additional functionality unavailable on the other sensors.
Now that we have dealt with all the sensors that provide an analog output, I would like to talk about the conversion and software side. If your micro doesn’t have a high-resolution ADC, you may want to consider an external device like the TI ADS1246/7/8 or its LMP90100 series. They provide excellent support with the WebBench software, which you can access here. An Analog Devices CN017 Circuit Note also gives information on a precision multichannel thermocouple solution.
I have been rather glib about the resolution of these ADCs. The fact of the matter is that considerable effort may be needed to reduce the levels of noise before the accuracy of the design becomes acceptable.
It is no secret that when it comes to micros I favor the Cypress PSoC device, and when I was about two-thirds of the way through this series of blogs I was invited to attend a seminar on the use of the PSoC3 and PSoC5 as applied to temperature sensing. Cypress has taken a comprehensive approach to the subject. The PSoC has blocks of IP called “components,” which are configured through different register setups on the device. The IP hides this setup, and you simply get to tailor it to your application.
There are components for the thermocouple, RTDs (in 2-, 3-, or 4-wire configuration), thermistors, and diodes. The delta-sigma ADC can be configured for 20-bit operation, and you (or the IP) can add amplifiers. It can handle an enormous number of analog inputs and so is ideal for multiple temperature sensors. This ability to allocate and reallocate the I/O pins has an interesting application. Apparently RTDs are used extensively in the windmill industry, and, because of the vibration, the wires (4-wire devices are used) fatigue and break.
It is possible for the PSoC (through the IP) to detect the wire break and maintain operation by dynamically altering the connections (albeit with a downgrade in performance) from a 4- to a 3-wire and then to a 2-wire system. Another option in the IP for the thermistor is to choose whether to use formulae (included in the IP) for the temperature calculations or to revert to lookup tables. I will use this as a segue from the PSoC back to the general discussion.
The thermistor and the thermocouple especially require linearization, and you have two options. You can look at their formulae relating the measured property (resistance or voltage) or you can use lookup tables, which is the age-old software conundrum: execution time or code size. You can opt for the lookup table and reduce its size by piece-wise linearization, but complete thermocouple tables, especially if you are catering for different types, can chew up a lot of memory.
All of this and yet there is still more to discuss. In part 4, I will finally get to look at “intelligent” sensors with digital outputs. Seventh inning stretch now — stand up, yawn, and get some popcorn.