The Analog Devices TMP36 is a staple analog temperature sensor for Arduino projects, outputting a clean 10 mV/°C signal. But its ±1°C baseline accuracy is easily destroyed by self-heating, poor thermal coupling, and ignoring the thermal mass of the PCB. If you are using the TMP36 to monitor power electronics on a custom Arduino shield, treating it as a plug-and-play component will yield garbage data.

The direct answer to "how accurate is my TMP36?" depends entirely on its thermal path. The TMP36 operates safely up to 125°C for rated accuracy, with an absolute maximum junction temperature of 150°C. In still air, its internal self-heating introduces a +0.09°C error. To use it for validating Arduino shield thermal management, you must calculate the junction-to-ambient thermal resistance ($\theta_{JA}$) of both the sensor and the target component, then physically couple the sensor to the thermal mass you intend to measure.

TMP36 Thermal Path Math and Self-Heating Errors

Every silicon chip generates heat. For the TMP36, the quiescent current ($I_Q$) is typically 50 µA. When powered from an Arduino's 5V rail, the power dissipation ($P_D$) is:

$P_D = V_{CC} \times I_Q = 5V \times 0.00005A = 0.00025W$ (0.25 mW)

To find the self-heating temperature rise ($\Delta T$), we multiply $P_D$ by the package's junction-to-ambient thermal resistance ($\theta_{JA}$). For the standard TO-92 package (TMP36GZ), thermal metrics standards place $\theta_{JA}$ at approximately 376 °C/W in still air on a standard JEDEC board.

$\Delta T = P_D \times \theta_{JA} = 0.00025W \times 376 °C/W = 0.094 °C$

A 0.094°C error seems negligible, but this assumes the ambient air around the TO-92 epoxy is perfectly stable. If you mount the TMP36 directly to a copper pour connected to a switching buck converter's ground plane, conductive heating through the leads will dwarf this self-heating error. Furthermore, how hot is too hot? While the silicon survives to 150°C, the TO-92 plastic epoxy begins to outgas and degrade above 125°C, causing permanent calibration drift in the bandgap reference.

Warning: TO-92 vs. SOIC Thermal Response
The TO-92 package has a high thermal mass and poor thermal conductivity through its plastic body. If you are measuring rapid ambient air changes, the TO-92 will lag by up to 20 seconds. For fast-moving thermal environments, use the SOIC-8 variant (TMP36GS) and expose the ground/thermal pad directly to the copper plane.

Sensor Specifications and Thermal Derating Data

When designing the thermal monitoring footprint on your Arduino shield, refer to this derating and thermal specification matrix. Note how the package choice drastically alters both thermal resistance and self-heating profiles.

Parameter TO-92 (TMP36GZ) SOIC-8 (TMP36GS) Unit Design Notes
Supply Voltage Range 2.7 to 5.5 2.7 to 5.5 V Do not power from unregulated 9V barrel jack.
$\theta_{JA}$ (Junction-to-Ambient) 376 150 °C/W SOIC sheds heat 2.5x faster via PCB copper.
$\theta_{JC}$ (Junction-to-Case) ~100 ~40 °C/W Critical for epoxy-to-heatsink coupling.
Self-Heating Error (Still Air) +0.094 +0.037 °C Calculated at 5V, 50µA quiescent.
Max Rated Accuracy Temp 125 125 °C Accuracy degrades ±2°C near 150°C limit.

Validating Arduino Shield Heatsinks with the TMP36

The most practical use for a TMP36 on an Arduino workbench is validating the thermal design of high-current shields. Let's walk through a heatsink selection example for a common scenario: an L7805 5V linear regulator on a custom shield, dropping 12V from a solar battery down to 5V to power an Arduino Nano and a few sensors, drawing 0.5A.

1. Calculate Wattage Basis:
$P_D = (V_{in} - V_{out}) \times I = (12V - 5V) \times 0.5A = 3.5W$.

2. Determine Maximum Allowable $\theta_{JA}$:
The L7805 silicon maxes out at 125°C. We want a safe operating margin, so we target a junction temperature ($T_J$) of 100°C. Assuming a bench ambient ($T_A$) of 25°C:
$\theta_{JA(total)} = (T_J - T_A) / P_D = (100°C - 25°C) / 3.5W = 21.4 °C/W$.

3. Factor in the Thermal Path:
Total thermal resistance is the sum of Junction-to-Case ($\theta_{JC}$), Case-to-Sink ($\theta_{CS}$), and Sink-to-Ambient ($\theta_{SA}$).
For a TO-220 package, $\theta_{JC}$ is ~5.0 °C/W. Using standard silicone thermal paste, $\theta_{CS}$ is ~0.5 °C/W.
Required $\theta_{SA} = 21.4 - 5.0 - 0.5 = 15.9 °C/W$.

4. Select the Heatsink:
A bare TO-220 in still air has a $\theta_{JA}$ of ~65 °C/W, which would result in a catastrophic 227°C junction temp. We need a heatsink rated for $\le 15.9 °C/W$. The Aavid Thermalloy 577302B00000G is a stamped extruded TO-220 clip-on heatsink rated at roughly 15.0 °C/W in natural convection. This buys us a 0.9 °C/W safety margin.

What Airflow and Enclosure Changes Buy You:
If you mount this shield inside a sealed 3D-printed PLA enclosure, the 3.5W of heat has nowhere to go. The local ambient temperature ($T_A$) inside the box will rise by roughly 10°C to 15°C, instantly destroying your safety margin and pushing $T_J$ past 115°C. Adding a single 40mm 5V fan (like a Noctua NF-A4x10) generating just 1 m/s of airflow across the Aavid fins will drop the $\theta_{SA}$ by nearly 40%, bringing it down to ~9.0 °C/W. Always use the TMP36 to log data inside the final enclosure, not just on the open bench.

Failure Signatures and Thermal Stress Diagnostics

When thermal management fails, the TMP36's serial output will tell a specific story. Here is how to interpret the failure signatures of thermal stress.

The Thermal Runaway Curve (Derating Mismatch)

The TMP36 outputs a perfectly linear 10 mV/°C. However, the power components it monitors do not behave linearly. Take a logic-level MOSFET driving a motor. Its $R_{DS(on)}$ has a positive temperature coefficient. As the junction heats up to 100°C, $R_{DS(on)}$ might increase to 1.5x its room-temperature value. This increases $I^2R$ losses by 50%, generating more heat. If your Arduino serial plotter shows an exponential, accelerating upward temperature curve rather than a standard logarithmic heating asymptote, you are witnessing thermal runaway. The component's derating curve has outpaced the heatsink's dissipation capacity.

Gradual Upward Drift (PCB Conductive Heating)

If your TMP36 reads 2°C higher than a trusted infrared thermometer after the board has been running for 20 minutes, you have a PCB layout issue. High-current return paths routed too close to the TMP36's ground pin will cause $I^2R$ heating in the copper traces. The heat conducts directly up the sensor's leads into the silicon die. Fix this by routing a dedicated, low-current analog ground star-point for the sensor, isolated from power ground planes.

Noisy ADC Readings (EMI and Thermal Mass)

If the TMP36 reading fluctuates by ±3°C on the Arduino's 10-bit ADC, it is rarely actual thermal fluctuation. Air and plastic have high thermal mass; they don't change temperature 50 times a second. This noise is almost always Electromagnetic Interference (EMI) from a switching regulator or motor PWM coupling into the high-impedance analog output pin. The fix: Solder a 0.1 µF ceramic capacitor directly across the TMP36's VCC and GND pins at the header, and implement a 16-sample moving average filter in your Arduino sketch to smooth residual high-frequency ADC jitter.