Translating Thermistor Voltage to Temperature: The Core Math
Measuring temperature accurately in power electronics starts with a solid analog front-end. A thermistor is a variable resistor, but your microcontroller's ADC only reads voltage. To bridge this gap, you build a voltage divider and apply the Steinhart-Hart equation. The target keyword for this process—thermistor voltage to temperature conversion—relies on precision in both hardware and math.
Let's use a standard 10kΩ NTC thermistor (like the Vishay NTCLE100E3103, roughly $0.50) paired with a 10kΩ 1% tolerance series resistor. If we place the NTC on the bottom (to ground) and the fixed resistor on top (to a 3.3V reference), the output voltage ($V_{out}$) at the midpoint is:
V_out = V_ref * [R_ntc / (R_series + R_ntc)]
Once you have the resistance calculated from the voltage, you convert it to Kelvin using the Steinhart-Hart equation: 1/T = A + B*ln(R) + C*(ln(R))^3. For the Vishay 10k NTC, the coefficients are approximately A = 0.001129, B = 0.0002341, and C = 0.0000000877. Never rely on the simpler Beta ($\beta$) parameter equation for wide-range measurements; it introduces up to 2°C of error at temperature extremes compared to Steinhart-Hart.
Thermal Path Math: From Junction to Ambient (RθJA)
Knowing the case temperature via your thermistor is only half the battle. The silicon junction inside the component is always hotter than the case you are measuring. To prevent silicon death, you must calculate the thermal path using thermal resistance ($R\theta$), measured in °C/W.
The fundamental thermal path equation is:
T_J = T_A + P_D * (Rθ_JC + Rθ_CS + Rθ_SA)
- T_J: Junction temperature (what we are trying to keep safe)
- T_A: Ambient air temperature inside the enclosure
- P_D: Power dissipated in Watts
- Rθ_JC: Junction-to-Case thermal resistance (from the datasheet)
- Rθ_CS: Case-to-Sink thermal resistance (thermal paste/pad)
- Rθ_SA: Sink-to-Ambient thermal resistance (your heatsink)
Let's look at a classic linear regulator, the TI LM317 in a TO-220 package, dropping 12V to 5V at 1A. The power dissipated ($P_D$) is $(12V - 5V) * 1A = 7W$. According to the TI LM317 datasheet, the $R\theta_{JC}$ is 2.5°C/W. Using a standard silicone thermal pad gives an $R\theta_{CS}$ of about 0.5°C/W.
How Hot is Too Hot and Interpreting Derating Curves
The absolute maximum junction temperature ($T_{J(max)}$) for the LM317 is 125°C. However, designing to the absolute limit is a rookie mistake. You must interpret the derating curve. The LM317 derates linearly to 0W output capability once the junction hits 125°C. Furthermore, internal thermal shutdown typically trips around 165°C, but repeated tripping degrades the silicon. A robust design targets a maximum $T_J$ of 105°C to 110°C, leaving a 15°C margin for transient spikes.
Heatsink Selection and Airflow: Sizing for the Worst Case
If your enclosure ambient ($T_A$) reaches 40°C on a hot day, and we target a $T_J$ of 110°C with our 7W LM317 load, we can solve for the required heatsink ($R\theta_{SA}$):
110 = 40 + 7 * (2.5 + 0.5 + Rθ_SA)
70 = 7 * (3 + Rθ_SA)
10 = 3 + Rθ_SA
Rθ_SA = 7 °C/W
You need a heatsink with a thermal resistance of 7°C/W or lower. A real-world part that fits this is the Wakefield 680-15ABP (stamped aluminum, ~$4.50), which provides roughly 6.5°C/W in natural convection.
What Airflow and Enclosure Changes Buy You
Natural convection relies on the chimney effect; if you mount the Wakefield heatsink horizontally or seal it in an unvented IP65 enclosure, its effective $R\theta_{SA}$ will double, and your LM317 will overheat. If you must use a sealed enclosure, you must add forced air. Adding a Noctua NF-A4x10 40mm fan (~$15) blowing directly across the fins drops the $R\theta_{SA}$ of that same stamped heatsink from 6.5°C/W down to roughly 3.5°C/W. This single airflow change allows you to push the LM317 to 1.5A (10.5W dissipation) while keeping the junction safely under 110°C.
Failure Signatures of Thermal Stress
When thermal management fails or is under-designed, components don't always die instantly. They exhibit specific failure signatures over time:
| Component | Thermal Failure Signature | Mechanism |
|---|---|---|
| Silicon (MOSFETs/ICs) | Increased Rds(on), threshold voltage drift | Electromigration of metal interconnects at >105°C |
| Electrolytic Capacitors | Increased ESR, capacitance drop, venting | Electrolyte boil-off (life halves every 10°C rise) |
| Solder Joints / Packaging | Intermittent connection, die delamination | Thermal cycling causes creep and CTE mismatch fatigue |
| Thermistor (Sensor) | Reading reads consistently 3-5°C too high | Self-heating from excessive ADC excitation current |
Thermistor Voltage to Temperature FAQ
Why is my thermistor voltage to temperature reading drifting over time?
Drift usually stems from two physical issues rather than math errors. First, check for thermal coupling: if your thermistor is epoxied to a heatsink but the leads are touching a hot PCB trace, heat will wick down the copper leads (thermal short-circuiting). Second, check for moisture ingress. Unsealed NTC beads will absorb ambient humidity, which alters the resistance of the epoxy coating and shifts the baseline reading. For harsh environments, always specify a glass-encapsulated NTC (like the Vishay NTCG series) rather than a bare epoxy-coated bead.
How do I map a non-linear thermistor voltage to temperature in an ESP32 ADC?
The ESP32's internal ADC is notoriously non-linear, especially near the 0V and 3.3V rails, which will destroy the accuracy of your Steinhart-Hart calculations. To fix this, do not rely on the raw analogRead() mapping. Instead, use the ESP32's analogReadMilliVolts() function, which applies the factory-stored eFuse calibration data to linearize the reading. For the final conversion, avoid floating-point math in your main loop; pre-calculate a 256-byte lookup table mapping ADC millivolts to tenths-of-a-degree Celsius, and interpolate between the nearest two array indices.
Can I use a thermistor to measure a heatsink directly instead of calculating RθJA?
Yes, but you must understand the blind spot. Strapping a thermistor directly to the metal tab of a TO-220 gives you an excellent $T_C$ (Case Temperature) reading. However, it does not tell you the internal junction temperature ($T_J$). If your thermal paste dries out or the mounting torque is uneven, $R\theta_{JC}$ increases. Your thermistor might read a safe 60°C on the case, while the silicon junction inside is silently cooking at 130°C because the heat cannot escape the package. Always use the thermistor for active closed-loop fan control, but rely on RθJA math during the initial design phase to guarantee the junction stays within limits under worst-case stall conditions.






