A thermistor is a thermally sensitive resistor whose electrical resistance changes predictably and significantly in response to temperature variations. When you place this component in a real circuit, it changes a physical thermal state into a measurable voltage drop, usually by acting as the variable lower leg of a simple voltage divider connected to an analog-to-digital converter (ADC). Unlike standard carbon film or metal film resistors designed to maintain a stable ohmic value, a thermistor is engineered to be highly reactive to heat.
The Core Thermistor and Resistance Data Profiles
Before wiring up a microcontroller, you must select the right thermal sensor for your environment. The relationship between temperature and resistance splits into two main camps: Negative Temperature Coefficient (NTC), where resistance drops as heat rises, and Positive Temperature Coefficient (PTC), where resistance climbs with heat. Think of an NTC thermistor like a highway where heat melts the snow, clearing the lanes and allowing traffic (electrons) to flow faster; a PTC is the opposite, where heat triggers construction zones that block traffic.
Here is how the core thermistor and resistance profiles compare against other industrial temperature sensors.
| Sensor Type | Base Material / Nominal Value | Temp Coefficient | Typical Range | Linearity & Best Application |
|---|---|---|---|---|
| NTC Thermistor | Metal Oxides (e.g., 10kΩ at 25°C) | Negative (Exponential) | -50°C to +150°C | Highly Non-linear; 3D printer hotends, Li-ion BMS |
| PTC Thermistor | Doped Ceramics / Polymers (e.g., KTY84) | Positive (Non-linear/Switching) | -40°C to +300°C | Non-linear; Overcurrent protection, motor winding sensing |
| RTD (Pt100) | Platinum Wire (100Ω at 0°C) | Positive (Linear) | -200°C to +850°C | Highly Linear; Industrial HVAC, laboratory calibration |
| Thermocouple (Type K) | Chromel-Alumel Junction | Voltage Generation (Seebeck) | -200°C to +1250°C | Linear-ish; Kilns, exhaust gas measurement |
For hobbyist and embedded projects, the 10kΩ NTC thermistor with a B-value of 3950 (like the EPCOS B57891S0103K000) is the undisputed standard. It offers massive resistance swings for small temperature changes, making it easy to read with a basic 10-bit or 12-bit ADC without needing expensive instrumentation amplifiers.
Calculating the Resistance Shift: A Worked Numeric Example
To translate a thermistor's resistance into a temperature reading in your firmware, you need to understand the math governing the B-parameter equation. While the Steinhart-Hart equation is more accurate across wide ranges, the B-parameter formula is perfectly adequate for the 0°C to 100°C range typical in consumer electronics.
The formula is:
R_T = R_0 * e^[B * (1/T - 1/T_0)]
Let's calculate the exact resistance of a standard 10k NTC thermistor at 50°C.
- R_0 (Nominal Resistance at 25°C) = 10,000 Ω
- T_0 (Nominal Temperature in Kelvin) = 25°C + 273.15 = 298.15 K
- T (Target Temperature in Kelvin) = 50°C + 273.15 = 323.15 K
- B (Material Constant) = 3950 K (Always check your specific datasheet, as this varies between 3300 and 4500 depending on the metal oxide mix).
Step 1: Calculate the inverse temperature difference.
(1 / 323.15) - (1 / 298.15) = 0.0030945 - 0.0033540 = -0.0002595
Step 2: Multiply by the B-constant.
3950 * -0.0002595 = -1.0250
Step 3: Exponentiate and multiply by R_0.
e^(-1.0250) ≈ 0.3588
10,000 Ω * 0.3588 = 3,588 Ω
At 50°C, your multimeter should read approximately 3.58 kΩ across the thermistor leads. If you are building a voltage divider with a 10kΩ fixed pull-up resistor tied to a 3.3V VCC, the voltage at the center node (feeding your ESP32 or Arduino ADC) will be 3.3V * (3588 / (10000 + 3588)) = 0.866V. This steep voltage curve is exactly why NTC thermistors provide such high resolution in embedded C++ code.
Where You Meet This in Practice
You will encounter the thermistor and resistance relationship in several critical real-world installations and builds:
1. 3D Printer Hotends and Heated Beds
Almost every FDM 3D printer relies on a glass-encapsulated 100kΩ NTC thermistor (often rated B=3950 or B=4267) pressed into the aluminum heater block. The Marlin firmware reads the voltage drop to regulate the PID loop. If the thermistor wire breaks (infinite resistance), the firmware reads a minimum temperature and triggers a MINTTEMP halt to prevent thermal runaway.
2. Lithium-Ion Battery Management Systems (BMS)
High-discharge Li-ion packs use 10kΩ NTC thermistors taped directly to the cell cylinders. During a 50A discharge, internal cell impedance generates heat. The BMS monitors the thermistor's dropping resistance; if it falls below the threshold corresponding to 60°C, the BMS opens the discharge MOSFETs to prevent venting or fire.
3. Inrush Current Limiting (Power Thermistors)
Heavy power supplies use massive, disc-shaped NTC power thermistors (like the Ametherm SL32 2R015) in series with the AC mains line. At room temperature, it has a resistance of 2Ω, limiting the initial capacitor charging surge. As mains current flows, the thermistor self-heats, dropping its resistance to nearly 0.1Ω, allowing full power to pass with minimal voltage drop.
Common Confusions and Circuit Mistakes
Even experienced makers trip over the non-linear realities of thermistors. Here is what people commonly confuse them with, and the mistakes that ruin measurement accuracy.
Confusion: Thermistors vs. RTDs (Pt100)
People often assume all resistance-based temperature sensors are interchangeable. An RTD (Resistance Temperature Detector) like a Pt100 is made of pure platinum and has a very low base resistance (100Ω at 0°C) with a highly linear, gentle slope (about 0.385 Ω/°C). A thermistor has a massive base resistance (10,000Ω) and a violent, exponential curve. You cannot use a standard thermistor voltage divider circuit to read an RTD; RTDs require a constant current source and an instrumentation amplifier to resolve the tiny millivolt changes.
Mistake: Ignoring Self-Heating Errors
A thermistor requires an excitation current to measure its resistance, but that current generates heat (I²R). Every thermistor has a Dissipation Constant (δ), typically around 2 mW/°C in still air. If your voltage divider pushes 3mA through the thermistor, it dissipates roughly 30mW at certain points on the curve. This will artificially raise the sensor's temperature by 15°C above ambient, completely invalidating your data. Always use high-value pull-up resistors (e.g., 100kΩ instead of 10kΩ) or pulse the voltage divider via a GPIO pin to keep excitation current under 50 µA.
Mistake: Assuming the B-Constant is Universal
Buying a generic "10k NTC" without verifying the B-value is a classic error. A B=3380 thermistor and a B=3950 thermistor will both read exactly 10kΩ at 25°C. However, at 85°C, the B=3380 will read roughly 1,450Ω, while the B=3950 will read 1,090Ω. If your firmware hardcodes the wrong B-constant, your temperature readings will drift drastically at the extremes.
Frequently Asked Questions
Can I wire two NTC thermistors in parallel to average the temperature?
No. Because the resistance curve is exponential, wiring two 10k NTCs in parallel does not yield a clean mathematical average. If one sensor is at 20°C (12.5kΩ) and the other is at 80°C (1.2kΩ), the parallel resistance is dominated entirely by the hotter sensor (reading ~1.09kΩ), effectively blinding you to the cooler sensor.
Why does my ESP32 ADC read erratic thermistor temperatures?
The ESP32's internal ADC is notoriously non-linear near the 0V and 3.3V rails, and it suffers from internal noise. To fix this, use an external I2C ADC like the ADS1115, or place a 100nF ceramic capacitor in parallel with the thermistor to filter out high-frequency switching noise from the ESP32's WiFi radio.
Do I need to worry about lead resistance in long thermistor cables?
For a 10kΩ NTC thermistor, 20 AWG copper wire adds about 0.01Ω per foot. Even with a 10-foot extension, the 0.2Ω total lead resistance is mathematically irrelevant against a 10,000Ω base. However, if you are using a 100Ω Pt100 RTD, that same wire will introduce massive errors, requiring a 3-wire or 4-wire Kelvin connection.






