A thermistor is a thermally sensitive resistor whose electrical resistance changes predictably and significantly with temperature variations. In a real circuit, it changes the voltage drop across a divider network, allowing a microcontroller's analog-to-digital converter (ADC) to translate physical heat into a readable digital value. Makers and technicians frequently confuse thermistors with RTDs (Resistance Temperature Detectors), which rely on the linear resistance of pure metals like platinum, or thermocouples, which generate a millivolt potential via the Seebeck effect rather than varying resistance.

Core Concept Summary: Unlike standard carbon-film or metal-film resistors that are engineered to ignore temperature changes, thermistors are engineered to exaggerate them. A standard 10kΩ resistor might drift 0.05% over a 50°C range; a 10kΩ NTC thermistor will drop to roughly 1kΩ over that same range.

The Physics: NTC vs. PTC Thermistors

Thermistors are manufactured from sintered metal oxides (for NTC) or doped ceramics and polymers (for PTC). The acronym defines how the resistance reacts to heat:

  • NTC (Negative Temperature Coefficient): Resistance drops as temperature rises. Think of an NTC thermistor like a highway toll booth that lowers its gates (resistance) as the weather gets hotter, allowing more cars (current) to flow through. These are the standard choice for temperature measurement.
  • PTC (Positive Temperature Coefficient): Resistance spikes as temperature rises. These are rarely used for precision measurement; instead, they act as self-resetting fuses or current limiters.
Characteristic NTC Thermistor PTC Thermistor (Switching Type)
Primary Material Manganese, nickel, cobalt oxides Barium titanate ceramic or conductive polymers
Resistance vs. Heat Decreases exponentially Increases sharply at a specific 'switch' temperature
Common Use Case Temperature sensing, inrush current limiting Overcurrent protection, self-resetting fuses
Typical Tolerance ±1% to ±5% at 25°C Wide tolerance, designed for trip-point, not precision

Worked Numeric Example: Sizing a Voltage Divider for an ESP32

Microcontrollers cannot measure resistance directly; they measure voltage. To read a thermistor, you must place it in a voltage divider with a fixed pull-up resistor. Let's calculate the exact ADC voltage for a standard 10kΩ NTC thermistor (Beta = 3950K) when the ambient temperature hits 85°C.

1. Calculate the Thermistor Resistance at 85°C
We use the Beta parameter equation: R_T = R_25 * e^[β * (1/T - 1/T_25)]

  • R_25: 10,000 Ω (Nominal resistance at 25°C)
  • β (Beta): 3950 K (Material constant from the datasheet)
  • T_25: 25°C + 273.15 = 298.15 K
  • T (Target): 85°C + 273.15 = 358.15 K

Plugging in the numbers:
1/358.15 - 1/298.15 = 0.002792 - 0.003354 = -0.000562
3950 * -0.000562 = -2.2199
e^(-2.2199) ≈ 0.1086
R_85 = 10,000 * 0.1086 = 1,086 Ω (1.086 kΩ)

2. Calculate the Voltage Divider Output
Assume we wire the thermistor to ground and use a 10kΩ fixed pull-up resistor tied to the ESP32's 3.3V rail. The ADC pin reads the junction between them.

V_out = V_in * (R_therm / (R_pullup + R_therm))
V_out = 3.3V * (1086 / (10000 + 1086))
V_out = 3.3V * 0.0980 = 0.323V

Bench Tip: The ESP32's internal ADC is notoriously non-linear below 0.15V and above 3.1V. Because our 85°C reading (0.323V) is safely in the linear zone, the internal ADC is fine. However, if you need precision below 20°C (where the NTC resistance climbs and V_out approaches 3.3V), bypass the internal ADC and use an external I2C module like the ADS1115.

Where You Meet Thermistors in Practice

You will rarely see a bare thermistor in commercial AC wiring, but they are ubiquitous in DC control circuits, appliances, and maker hardware.

  • 3D Printer Hotends and Beds: Most RepRap-style printers (like the Ender 3 or Prusa MK3) use a 100kΩ Semitec 104NT-4-R025H42G (Beta 4267) encased in a glass bead. The Marlin firmware relies on pre-calculated lookup tables to translate the ADC reading into a PWM duty cycle for the heater cartridge.
  • Li-Ion Battery Management Systems (BMS): High-discharge 18650 and LiFePO4 packs use 10kΩ NTCs taped directly to the cell cans. If the cells exceed 45°C during a 3C discharge, the BMS reads the dropping resistance and triggers a thermal foldback, cutting off the MOSFETs to prevent thermal runaway.
  • Automotive Coolant Sensors: The Engine Control Unit (ECU) uses a brass-potted 2.2kΩ or 10kΩ NTC submerged in the coolant loop. A failed open-circuit thermistor tells the ECU the engine is infinitely cold, causing it to dump excess fuel and flood the cylinders.

Thermistors vs. RTDs vs. Thermocouples

Choosing the right sensor depends on your temperature range, budget, and required linearity. Here is how the thermistor definition stacks up against its peers.

Criteria NTC Thermistor RTD (e.g., PT100) Thermocouple (e.g., Type K)
Signal Type Variable Resistance Variable Resistance (Linear) Millivolt Potential (Seebeck)
Typical Cost $0.10 - $0.50 $5.00 - $25.00 $2.00 - $15.00
Temperature Range -50°C to +150°C (up to 300°C for specialized) -200°C to +850°C -200°C to +1250°C
Linearity Highly Non-Linear (Exponential) Highly Linear Non-Linear (Requires polynomial math)
Best Application Consumer electronics, 3D printing, HVAC Lab equipment, industrial process control Kilns, exhaust gas, forging

Frequently Asked Questions

What is the exact definition of a thermistor when testing with a multimeter?

When testing with a digital multimeter (DMM), a thermistor is defined as a passive two-terminal component whose displayed resistance will actively drift while you hold it. Because a DMM injects a small test current (usually 1mA or less) to measure resistance, this current causes self-heating in low-mass glass-bead thermistors. If you pinch a 10kΩ glass NTC between your fingers, the DMM will show the resistance dropping in real-time as your body heat transfers into the bead and the DMM's own test current warms the junction.

Why does my 10k thermistor read 10k ohms on the bench but the microcontroller temperature is wrong?

If your DMM reads exactly 10kΩ at room temperature but your Arduino or ESP32 reports the wrong value, you are likely facing one of three issues: 1. Beta Mismatch: Your code assumes a Beta of 3950, but the manufacturer used a different dopant batch (e.g., Beta 3435 or 4267). Check the exact part number datasheet. 2. Pull-up Resistor Tolerance: You are using a standard 5% carbon-film 10kΩ pull-up resistor. If that resistor is actually 10.4kΩ, your voltage divider math will skew the temperature reading by several degrees. Always use a 1% metal-film resistor for the pull-up. 3. Self-Heating in Enclosures: The thermistor is trapped in a poorly ventilated 3D-printed enclosure near a voltage regulator, reading the localized ambient heat rather than the room temperature.

Can I wire a thermistor directly to an ESP32 GPIO pin without a pull-up resistor?

No. A microcontroller GPIO pin configured as an ADC input measures voltage potential relative to ground, not resistance. If you wire one leg of the thermistor to the GPIO and the other to ground, the pin will simply read 0V (or float unpredictably due to electromagnetic noise). You must create a voltage divider by wiring a fixed pull-up resistor between the 3.3V/VCC rail and the GPIO pin, and then wire the thermistor between that same GPIO pin and ground. The changing resistance of the thermistor then alters the voltage at the junction, which the ADC can successfully measure.