An NTC (Negative Temperature Coefficient) thermistor is a semiconductor resistor whose electrical resistance drops predictably and non-linearly as its temperature rises. Unlike standard 1% tolerance metal film resistors that fight to keep their value stable across environments, an NTC thermistor is engineered to be highly sensitive to thermal changes, making it the backbone of modern solid-state temperature sensing.
The Core Mechanism: What NTC Thermistor Resistance Actually Changes
To understand NTC behavior, you have to look at the semiconductor lattice. At low temperatures, the charge carriers (electrons and holes) are bound tightly to their atoms. As thermal energy increases, these carriers break free and become available to conduct current. Think of the semiconductor lattice like a highway where heat acts as an energy boost, freeing up more cars (electrons) to enter the traffic flow, thereby lowering the overall resistance to current.
What it changes in a real circuit: By itself, a changing resistance is useless to a microcontroller. In a real installation, the NTC thermistor changes the voltage drop across a voltage divider network. It converts a physical thermal measurement into an analog voltage (typically 0–3.3V or 0–5V) that an ADC (Analog-to-Digital Converter) on an Arduino, ESP32, or dedicated IC can read and translate back into degrees Celsius.
The Math That Matters: B-Value and the Steinhart-Hart Equation
Every NTC thermistor datasheet will give you a nominal resistance (usually at 25°C) and a 'B-value' (Beta value), which defines the steepness of the resistance curve. While the full Steinhart-Hart equation is used for high-precision lab equipment, the B-parameter equation is what you will use for 95% of hobbyist and commercial PCB designs.
R_T = R_0 * e^[ B * (1/T - 1/T_0) ]
Where temperatures T and T_0 must be in Kelvin (°C + 273.15).
Worked Numeric Example
Let's calculate the exact resistance of a Murata NCP18XH103F03RB surface-mount NTC thermistor at 85°C. This part has a nominal resistance (R_0) of 10,000Ω at 25°C, and a published B-value of 3380K.
- Convert temperatures to Kelvin: T_0 = 25 + 273.15 = 298.15K. Target T = 85 + 273.15 = 358.15K.
- Calculate the inverse temperature delta: (1/358.15) - (1/298.15) = 0.002792 - 0.003354 = -0.000562.
- Multiply by the B-value: 3380 * -0.000562 = -1.89956.
- Apply the exponential function: e^(-1.89956) ≈ 0.1496.
- Multiply by nominal resistance: 10,000Ω * 0.1496 = 1,496 Ω.
At 85°C, your 10kΩ thermistor has dropped to roughly 1.5kΩ. This massive swing is exactly why NTCs are preferred over standard resistors for temperature sensing—they provide a high-resolution signal change over a tight temperature band.
Where You Meet This in Practice
You will rarely see a bare NTC thermistor sitting on a breadboard. They are typically integrated into specific assemblies based on their thermal mass and packaging:
- 3D Printer Hotends: Glass-bead NTCs (like the EPCOS 104GT-2, 100kΩ at 25°C) are crimped into copper heater blocks to monitor extrusion temperatures up to 300°C.
- Lithium Battery BMS: Tiny 0402 or 0603 SMD NTCs (usually 10kΩ) are placed directly adjacent to MOSFETs and cell tabs to halt charging if the pack exceeds 45°C.
- HVAC Indoor Coils: Epoxy-coated NTCs with long wire leads are strapped to copper refrigerant lines to detect frost buildup and trigger defrost cycles.
- Power Supply Inrush Limiting: Large, disc-shaped NTCs are placed in series with AC mains inputs. They start with high resistance to limit capacitor charging surge currents, then self-heat and drop to near-zero resistance for normal operation.
Worked Scenario: 3D Printer Hotend Thermal Runaway Protection
Theory is clean; the workbench is messy. Here is a real-world scenario demonstrating how ignoring NTC resistance curves at temperature extremes leads to hardware failure.
The Setup: A builder is designing a custom thermal runaway protection circuit for a 3D printer hotend using an ESP32 dev board and a standard EPCOS 100kΩ NTC thermistor (B=3950). They wire the NTC to ground and use a 4.7kΩ pull-up resistor to the ESP32's 3.3V logic rail, feeding the midpoint to GPIO 34 (an ADC pin).
The Numbers: At room temperature (25°C), the NTC is 100kΩ. The voltage at the ADC pin is roughly 3.15V. The target printing temperature is 200°C. According to the TDK/EPCOS datasheets, the resistance of this 100kΩ NTC drops to approximately 145Ω at 200°C. With a 4.7kΩ pull-up, the voltage at 200°C becomes: 3.3V * (145 / (4700 + 145)) = 0.098V.
The Outcome & What Went Wrong: The firmware kept throwing thermal runaway errors and shutting down the heater. The builder assumed the thermistor was broken. In reality, the ESP32's internal ADC is notoriously non-linear and noisy below 0.1V. At 200°C, the 0.098V signal fell straight into the ADC's noise floor. The microcontroller couldn't distinguish between 180°C and 210°C because the voltage was bottoming out. The firmware thought the hotend was cooling down, so it pumped 100% PWM into the heater cartridge, eventually melting the PTFE bowden tube.
The Fix: For high-temperature 100kΩ NTCs, a 4.7kΩ pull-up is the wrong choice. Swapping to a 100kΩ pull-up resistor shifts the voltage curve upward, keeping the 200°C reading well above the ESP32's noisy ADC floor. For mission-critical thermal protection, bypass the ESP32's internal ADC entirely and use an external I2C ADC like the Adafruit ADS1115, which offers 16-bit resolution and a programmable gain amplifier to map that tiny 0.098V signal to the full digital scale.
Common Confusions: NTC vs. RTD and PTC Thermistors
People commonly confuse NTC thermistors with RTDs (Resistance Temperature Detectors) and PTC thermistors. While all three change resistance with temperature, their underlying physics and circuit applications are entirely different.
| Feature | NTC Thermistor | RTD (e.g., PT100) | PTC Thermistor |
|---|---|---|---|
| Direction of Change | Resistance drops as temp rises | Resistance rises as temp rises | Resistance rises sharply at a specific threshold |
| Material | Semiconductor ceramics/polymers | Pure metal (Platinum, Nickel) | Barium titanate ceramics or conductive polymers |
| Linearity | Highly non-linear (exponential curve) | Highly linear | Non-linear (acts like a switch) |
| Primary Use Case | Temperature sensing, inrush limiting | Industrial precision measurement | Self-resetting fuses, overcurrent protection |
| Typical Cost | $0.05 - $0.50 | $5.00 - $25.00+ | $0.10 - $1.00 |
If you need to measure a 300°C industrial oven with ±0.1°C accuracy, you use an RTD and a bridge amplifier. If you just need to know if your 3D printer hotend is at 200°C or if your LiPo battery is overheating, the cheap, highly sensitive NTC is the correct tool.
FAQ: Troubleshooting NTC Thermistor Readings
Why is my Arduino analogRead() returning 1023 constantly?
A maximum ADC reading (1023 on a 10-bit ADC) means the voltage at the pin is equal to your reference voltage (usually 5V). In a standard NTC voltage divider where the NTC is tied to ground and the pull-up resistor is tied to VCC, this indicates an open circuit. Your NTC thermistor wire is broken, the crimp has failed, or the glass bead has cracked off the leads. The microcontroller is reading the full VCC pull-up voltage because no current is flowing through the NTC to ground.
Why does my temperature reading drift higher when I use a longer extension cable?
Copper wire has resistance. If you run 5 meters of 24 AWG wire to a remote 10kΩ NTC sensor, the wire itself adds roughly 0.4Ω of resistance. While 0.4Ω sounds negligible, NTCs are highly sensitive. More importantly, if you are using a 2-wire setup, the lead resistance adds directly to the thermistor's resistance. Because the microcontroller calculates temperature assuming all measured resistance is in the thermistor bead, it interprets the added wire resistance as a lower temperature. For long runs, you must either calibrate the offset in software, use thicker wire, or switch to a 3-wire or 4-wire RTD setup.
Can I put two NTC thermistors in parallel to average the temperature?
No. Because the resistance-to-temperature curve is exponential, putting two NTCs in parallel does not yield an electrical average of their temperatures. If one NTC is at 20°C (10kΩ) and the other is at 80°C (1.2kΩ), the parallel resistance is roughly 1.07kΩ. The microcontroller will interpret 1.07kΩ as roughly 83°C, completely ignoring the cooler sensor. If you need to average temperatures, read them on separate ADC pins and average the values in your firmware.
For deeper dives into calculating exact B-parameters and Steinhart-Hart coefficients for custom sensor arrays, refer to the Ametherm NTC technical guides. Always verify your voltage divider math against the specific ADC input impedance of your microcontroller before soldering the final PCB.






