I don't know if this matter has been settled (elsewhere?), but I have nailed it down sufficiently for my current project, which uses a TMP36 potted with epoxy in a metal probe to measure water temperature. My solution has two parts:
1 - a 0.1uF capacitor from Vout to ground will clean up the output dramatically, another capacitor from Vin to ground seems to do nothing insofar as Vout is concerned
2 - a function - readTmp36() - that returns the average of several readings over a period of time. The attached simple (it uses delay() for timing, so don't try to use it in a real application) test code illustrates the concept, and posts results via Serial.print. Note that the test function posts the average reading, the high and low values, the difference (range), and the exponential moving average (ema) of the difference. On my test bed, the ema without the 0.1uF capacitor runs from 8 to 20, indicating a wide variation in tmp36 readings. The ema with the capacitor generally runs from 1.0 to 3, indicating far more consistent (hence more likely to be accurate) readings, e.g.:
readTmp36() low:214 high:214 avg:214 range:0 ema:1.341
1.04492 volts, 54.49 C, 130.09 F
readTmp36() low:214 high:215 avg:214 range:1 ema:1.319
1.04492 volts, 54.49 C, 130.09 F
readTmp36() low:214 high:214 avg:214 range:0 ema:1.234
1.04492 volts, 54.49 C, 130.09 F
readTmp36() low:213 high:214 avg:213 range:1 ema:1.219
1.04004 volts, 54.00 C, 129.21 F
readTmp36() low:213 high:214 avg:213 range:1 ema:1.204
1.04004 volts, 54.00 C, 129.21 F
readTmp36() low:213 high:214 avg:213 range:1 ema:1.191
1.04004 volts, 54.00 C, 129.21 F
readTmp36() low:222 high:223 avg:222 range:1 ema:1.179
1.08398 volts, 58.40 C, 137.12 F[/quote]
FWIW, I verified the temperatures calculated from the tmp36 readings (over a range from 18C to 90C) against a real SGA glass/mercury laboratory thermometer (yeah, I've still got one), and they were right on the money.
The attached code is provide AS IS, with no warranty expressed or implied!
I hope this is helpful...
tmp36.ino (3.84 KB)