Thank you all for your comments.
Self-heating can affect all temperature sensors mentioned in the this article. It can be minimized by controlling the power consumption/dissipation of the sensor. Furthermore, self-heating in integrated sensors can be treated as an offset error and minimized by the second calibration technique.
In the resistive transducer case, a ratiometric configuration is indeed a powerful technique to eliminate ADC voltage reference error.
I encourage readers to explore and evaluate all types of temperature sensors for the desired application. For those interested in thermistors, SPLatman's tutorial and linearization looks like a good resource. For those interested in the C8051F39x, below are the entire contents in main() to obtain and +/- 2'C measurement:
// Disable watchdog timer
PCA0MD &= ~0x04;
// Change SFRPAGE to access TS0CN register
SFRPAGE = TS0CN_PAGE;
// Start temp sensor conversion
TS0CN |= 0x80;
TS0CN &= ~0x80;
// Wait for conversion to complete
while ((TS0CN & 0x40) != 0x40);
// Clear finished flag
TS0CN &= ~0x40;
// Change SFRPAGE to access TS0DAT register
SFRPAGE = TS0DAT_PAGE;
// Save temperature in degrees C
myTemp = TS0DAT;
Agree about the great value-for-money of thermistors. The usual measurement method is ratiometric to a reference resistor, also, and a 0.1% resistor is far cheaper than a 0.1% voltage reference. So the comment in the article about ADC reference affecting the results isn't correct in the resistive transducer case.
Really like the tutorial on Excel polynomial fitting BTW, SPLatMan! How I missed this capability for so many years I'll never know.
Thermistors are not linear. RTD's are approximately linear. MCUs have internal temperature rise, which was not mentioned. An on-chip temp sensor is fine - for measuring die temperature.
In terms of bang for buck thermistors take the prize, IMHO. As a rule of thumb, % accuracy of the thermistor is about the same as 'F accuracy. Betatherm and the like have thermistors down to 0.05'C accuracy, out of the box. Common or garden 2% thermistors are about as accurate as premium grade semiconductor devices. We routinely get 0.1'C resolution with a 10-bit ADC.
Thermistor tutorial, including linearization: http://www.splatco.com/skb/1856.htm
A Book For All Reasons Bernard Cole1 Comment Robert Oshana's recent book "Software Engineering for Embedded Systems (Newnes/Elsevier)," written and edited with Mark Kraeling, is a 'book for all reasons.' At almost 1,200 pages, it ...