Why Your Sensor Temperature Circuit Needs Thermal Math
When an ESP32 drives a high-current load through a power MOSFET like the Infineon IRLZ44N, the silicon junction generates significant heat. A common mistake in embedded design is slapping a thermistor on the metal tab, reading the ADC, and assuming the junction temperature matches the tab. It does not. The tab is thermally isolated from the silicon die by the epoxy mold compound and the copper leadframe. If your sensor temperature circuit only measures the case, your microcontroller will fail to trigger thermal shutdown before the silicon melts.
To build a reliable thermal management system, you must calculate the thermal gradient from the junction to the ambient air, select a heatsink based on actual wattage dissipation, and design a sensing circuit that accounts for the physical delay and ADC non-linearities inherent in microcontroller platforms.
Junction-to-Ambient Thermal Path Math (Rθ)
Thermal resistance (Rθ) behaves exactly like electrical resistance, where temperature difference (ΔT) is voltage, power dissipation (PD) is current, and thermal resistance is the resistor. The governing equation for a MOSFET mounted to a heatsink is:
TJ = TA + PD × (RθJC + RθCS + RθSA)
- TJ: Junction temperature (what we want to keep < 125°C)
- TA: Ambient temperature inside your enclosure (assume 40°C for worst-case)
- PD: Power dissipated in watts (I2 × RDS(on))
- RθJC: Junction-to-Case resistance (from datasheet)
- RθCS: Case-to-Sink resistance (thermal interface material)
- RθSA: Sink-to-Ambient resistance (the heatsink itself)
Let us run a concrete numeric example. You are switching a 12V, 15A Peltier cooler using an IRLZ44N. At 100°C, the RDS(on) rises to approximately 0.035Ω.
- PD = 15A2 × 0.035Ω = 7.875W
- RθJC = 1.5°C/W (per the Infineon IRLZ44N datasheet)
- RθCS = 0.5°C/W (using a 0.5mm silicone thermal pad)
If we set a maximum safe junction temperature (TJ) of 125°C and an enclosure ambient (TA) of 40°C, we can solve for the required heatsink:
125 = 40 + 7.875 × (1.5 + 0.5 + RθSA)
85 = 7.875 × (2.0 + RθSA)
10.79 = 2.0 + RθSA
RθSA = 8.79°C/W
You need a heatsink with a thermal resistance of 8.79°C/W or lower. Leaving the bare TO-220 tab exposed yields an RθJA of ~62°C/W, which would push the junction to 528°C (instant destruction).
Heatsink Selection and Derating Curve Interpretation
For an RθSA target of < 8.79°C/W, a standard stamped aluminum board-level heatsink is sufficient. A proven, readily available part is the Aavid Thermalloy 530002B02500G (distributed by Boyd Corporation). In natural convection, this part provides an RθSA of roughly 4.5°C/W, giving you a 4.29°C/W safety margin.
| Parameter | Value | Notes |
|---|---|---|
| Heatsink Part | Aavid 530002B02500G | TO-220 stamped, 15.24mm height |
| RθSA (Natural) | 4.5°C/W | Vertical mount, 1W dissipation baseline |
| RθSA (200 LFM) | ~2.8°C/W | With 40mm enclosure fan |
| Calculated TJ (Natural) | 75.4°C | 40 + 7.875(2.0 + 4.5) |
When reading the MOSFET's power derating curve, you will see a linear slope starting from the maximum power dissipation at 25°C (94W for the IRLZ44N) down to 0W at 175°C. This curve assumes the case temperature (TC), not the ambient temperature. Your sensor temperature circuit must map the tab reading back to the junction using the RθJC offset to correctly apply this derating limit in your firmware's PID loop.
Designing the Sensor Temperature Circuit for Accuracy
To measure the case temperature, we use a 10kΩ NTC thermistor (e.g., Murata NXFT15XH103FA2B) epoxied directly to the MOSFET tab using thermally conductive epoxy (like Arctic Alumina). Do not use superglue; it is a thermal insulator.
The ESP32's internal ADC is notoriously non-linear above 2.5V and below 0.15V. If your voltage divider outputs 3.0V at cold temperatures, your firmware will read phantom temperature spikes. Always design the divider to keep the output between 0.2V and 2.2V, or use an external I2C ADC like the ADS1115.
The circuit consists of the 10k NTC to ground, and a 10k pull-up resistor to the 3.3V rail. The analog input pin taps the middle. To defeat the ESP32's ADC noise floor, place a 100nF ceramic capacitor in parallel with the NTC. This forms a low-pass filter that stabilizes the sample-and-hold capacitor inside the ESP32.
Firmware Implementation:
Convert the ADC reading to resistance, then apply the Steinhart-Hart equation to get Kelvin. Because the NTC is on the tab, your code must add the thermal offset to estimate the junction:
// Pseudocode for Junction Estimation
float R_ntc = 10000.0 * ((3.3 / V_adc) - 1.0);
float T_tab = steinhart_hart(R_ntc); // Returns Celsius
float T_junction = T_tab + (P_D * R_theta_JC); // Add 1.5C/W offset
Failure Signatures and Airflow Interventions
How hot is too hot? The absolute maximum silicon junction temperature is 175°C, but reliability drops exponentially past 125°C. Furthermore, standard Sn63/Pb37 solder melts at 183°C, and lead-free SAC305 melts at 217°C. If the junction hits 175°C, the tab is likely around 150°C, which is hot enough to soften the solder joint on the source pin under mechanical vibration.
Failure Signatures of Thermal Stress:
- Thermal Runaway: MOSFETs have a positive temperature coefficient for RDS(on). As the die heats up, resistance increases, which increases I2R losses, generating more heat. If your sensor circuit has a slow polling rate (e.g., reading once per second), the silicon can melt between reads.
- Gate Threshold Shift: VGS(th) drops as temperature rises. A hot MOSFET might turn on partially from gate noise, causing high-frequency oscillation and rapid localized heating.
- Package Cracking: Repeated thermal cycling (0°C to 120°C) causes the epoxy mold compound and copper leadframe to expand at different rates, eventually delaminating the die attach.
What Airflow Buys You:
Adding a standard 40mm x 10mm 5V brushless fan pushing 200 Linear Feet per Minute (LFM) of air across the Aavid heatsink drops the RθSA from 4.5°C/W to roughly 2.8°C/W. This buys you an additional 13.4°C of junction cooling, which is critical if your enclosure ambient spikes to 50°C on a hot day.
Thermal Management Decision Tree
Use this decision matrix to finalize your sensor temperature circuit and mechanical cooling strategy based on your continuous load current. Do not guess; follow the math to the terminal component pick.
| Continuous Load (A) | Est. PD (W) | Required RθSA | Mechanical Pick | Sensor Polling Rate |
|---|---|---|---|---|
| < 5A | < 0.9W | Bare TO-220 Tab (62°C/W) | No heatsink, PCB copper pour only | 10 Hz |
| 5A - 12A | 0.9W - 5.0W | < 15°C/W | Aavid 5702B02300G (Clip-on) | 10 Hz |
| 12A - 20A | 5.0W - 14W | < 8.0°C/W | Aavid 530002B02500G | 50 Hz (Fast PID) |
| > 20A | > 14W | < 4.0°C/W | Extruded Aluminum + Forced Air | 100 Hz + Hardware Interrupt |
The Default Recommendation: For the vast majority of embedded high-power switching tasks (10A to 18A continuous) utilizing an ESP32 and a TO-220 MOSFET, terminate your design with the Aavid 530002B02500G heatsink, a Murata 10kΩ NTC epoxied to the tab, and a 100nF filter cap on the ADC line. This combination guarantees the junction stays below 100°C in a 40°C ambient environment without requiring forced airflow, providing a robust, fire-safe baseline for your project.






