Aziz Bench

Calculadora de termistor NTC

De temperatura a resistencia y al revés con la ecuación Beta, y además el divisor que va delante del ADC: la lectura a cada temperatura, cuántos grados vale cada paso y la resistencia fija que mejor se adapta a tu rango.

Resistencia
5,3kΩ
a 40,0 °C · 0,53 × R25
Tensión en el ADC
1,143 V
Lectura del ADC
1419
Por paso del ADC
0,027 °C
Lectura del ADC según la temperatura
0200040000°20°40°60°80°100°
Termistor
Ω
K

De la hoja de datos. B25/50 se ajusta mejor a temperatura ambiente; B25/85, a temperaturas más altas.

Calcular
Punto de partida
°C
Divisor y ADC
V
V

Igual a la alimentación en un Arduino Uno con la referencia por defecto. El ADC del ESP32 tiene su propia referencia: ahí, si puedes, usa tensiones calibradas.

Ω
El termistor va a
Resolución del ADC
Rango de temperatura
°C
°C

Se usa para la tabla, el gráfico y la mejor resistencia fija.

Mejor resistencia fija

De 0 °C a 100 °C el divisor es más sensible a mitad de rango con 3,59 kΩ, la resistencia del termistor a 50 °C. Valor E24 más cercano: 3,6 kΩ.

Lecturas de 0 °C a 100 °C

TemperaturaResistenciaTensiónADCPor paso
0 °C33,6 kΩ2,543 V31560,026 °C
10 °C20,2 kΩ2,206 V27380,022 °C
20 °C12,5 kΩ1,836 V22780,022 °C
30 °C8,04 kΩ1,470 V18250,023 °C
40 °C5,3 kΩ1,143 V14190,027 °C
50 °C3,59 kΩ0,871 V10810,033 °C
60 °C2,49 kΩ0,657 V8150,043 °C
70 °C1,76 kΩ0,494 V6130,057 °C
80 °C1,27 kΩ0,372 V4620,077 °C
90 °C934 Ω0,282 V3500,1 °C
100 °C698 Ω0,215 V2670,14 °C

A tener en cuenta

Código

Arduino
// NTC 10 kΩ, B 3950, NTC a GND
const float R_FIXED = 10000.0;  // resistencia fija, ohmios
const float R25 = 10000.0;      // resistencia del NTC a 25 °C, ohmios
const float BETA = 3950.0;
const float V_SUPPLY = 3.3;    // alimentación del divisor, voltios
const int PIN = 34;  // GPIO34

float readTempC() {
  long sum = 0;
  for (int i = 0; i < 16; i++) sum += analogReadMilliVolts(PIN);  // media de 16 lecturas
  float ratio = (sum / 16.0) / 1000.0 / V_SUPPLY;  // ESP32: calibrated millivolts, not raw counts
  if (ratio <= 0.0 || ratio >= 1.0) return NAN;          // en cortocircuito o desconectado
  float r = R_FIXED * ratio / (1.0 - ratio);   // NTC a GND
  return 1.0 / (1.0 / 298.15 + log(r / R25) / BETA) - 273.15;
}
ESPHome
sensor:
  - platform: adc
    id: ntc_voltage
    pin: GPIO34
    attenuation: 12db
    update_interval: 10s
  - platform: resistance
    id: ntc_resistance
    sensor: ntc_voltage
    configuration: DOWNSTREAM  # NTC a GND
    resistor: 10kOhm
    reference_voltage: 3.3V
  - platform: ntc
    sensor: ntc_resistance
    name: Temperatura
    calibration:
      b_constant: 3950
      reference_temperature: 25°C
      reference_resistance: 10kOhm
Texto plano, para tus notas o un foro.

La ecuación Beta

La resistencia de un termistor NTC baja al calentarse, de forma aproximadamente exponencial. Las hojas de datos dan su resistencia a 25 °C (R25) y un valor B, que juntos describen la curva:

R(T) = R25 × e^(B × (1/T − 1/298,15))
T = 1 ÷ (1/298,15 + ln(R ÷ R25) ÷ B) − 273,15
(T en kelvin: °C + 273,15)

Ejemplo: un termistor de 10 kΩ B3950 a 50 °C. 1/323,15 − 1/298,15 = −0,00025948; × 3950 = −1,0249; e^−1,0249 = 0,3588; R = 10 kΩ × 0,3588 ≈ 3,59 kΩ.

¿B25/50 o B25/85?

B se obtiene de la resistencia a dos temperaturas, y la hoja de datos indica cuáles: B25/50 usa 25 y 50 °C, B25/85 usa 25 y 85 °C. Para un mismo componente los dos valores difieren un poco: el NCP18XH103F03RB de Murata tiene 3380 K como B25/50 y 3434 K como B25/85. Usa aquel cuya segunda temperatura esté más cerca de donde mides.

Cómo elegir la resistencia fija

En un divisor, la tensión cambia más deprisa con la temperatura cuando la resistencia fija es igual a la del termistor a esa temperatura. Así que elige la resistencia a mitad del rango que te interesa: 10 kΩ para un termistor de 10 k en torno a la temperatura ambiente, unos 3,6 kΩ para 0–100 °C (3,59 kΩ a 50 °C). Cuanto más te alejas del centro, más grados cubre cada paso del ADC.

Conectar el termistor a un lado u otro del divisor solo invierte la curva: con el termistor a GND la tensión baja al calentarse; con el termistor a la alimentación, sube.

Resistencia de un termistor de 10 kΩ B3950

TemperaturaResistenciaα
-20 °C105 kΩ-6,16 %/°C
-10 °C58,2 kΩ-5,7 %/°C
0 °C33,6 kΩ-5,29 %/°C
10 °C20,2 kΩ-4,93 %/°C
20 °C12,5 kΩ-4,6 %/°C
30 °C8,04 kΩ-4,3 %/°C
40 °C5,3 kΩ-4,03 %/°C
50 °C3,59 kΩ-3,78 %/°C
60 °C2,49 kΩ-3,56 %/°C
70 °C1,76 kΩ-3,35 %/°C
80 °C1,27 kΩ-3,17 %/°C
90 °C934 Ω-3 %/°C
100 °C698 Ω-2,84 %/°C
110 °C529 Ω-2,69 %/°C
120 °C407 Ω-2,56 %/°C

Calculada con la ecuación Beta, R25 = 10 kΩ, B = 3950 K. α es la variación de resistencia por grado. Los componentes reales siguen la tabla de su hoja de datos, sobre todo lejos de 25 °C.

Precisión

El error suele depender de tres cosas. La tolerancia del termistor: ±1 % en R25 equivale a unos ±0,26 °C cerca de la temperatura ambiente para un componente con B 3380, porque ahí su resistencia cambia alrededor de un 3,8 % por grado. El modelo: la ecuación Beta es exacta en sus dos temperaturas de referencia y se desvía fuera de ellas; en un rango amplio, usa la ecuación de Steinhart–Hart con tres puntos de calibración. Y el autocalentamiento: la corriente del divisor calienta el termistor, así que mantenla baja o alimenta el divisor solo mientras mides.

Preguntas frecuentes

¿Qué significa B3950 en un termistor?

Es el valor B, 3950 K: lo rápido que baja la resistencia con la temperatura. Junto con la resistencia a 25 °C (10 kΩ en un «10k B3950») define la curva que usa la calculadora. La hoja de datos indica entre qué dos temperaturas se midió, por ejemplo 25/50 °C.

¿10 kΩ o 100 kΩ?

Elige el que mantenga su resistencia en un rango que tu divisor pueda leer a tus temperaturas. 10 kΩ va bien para temperatura ambiente, agua y nevera. A 250 °C un 10 kΩ B3950 baja a unos 34 Ω; por eso los hotends de las impresoras 3D usan termistores de 100 kΩ como el Semitec 104GT-2, que según la ecuación Beta todavía tiene unos 500 Ω a 200 °C.

¿Qué resistencia fija debo usar?

La resistencia del termistor a mitad de tu rango de temperatura: así el divisor es más sensible donde mides. La calculadora la obtiene del rango que introduces y la redondea a un valor normalizado.

¿NTC, PTC o DS18B20?

Un NTC es barato, pequeño y rápido, pero necesita un divisor, un ADC y la fórmula. En un termistor PTC la resistencia sube con la temperatura, a menudo de golpe en un punto concreto; por eso los PTC se usan sobre todo como fusibles rearmables e interruptores de sobretemperatura más que para medir. El DS18B20 es un sensor digital: sin calibración y con ±0,5 °C de −10 a +85 °C según su hoja de datos, pero más lento y limitado a −55…+125 °C.

¿Por qué mis lecturas se desvían unos grados?

Comprueba, por este orden: que R25 y B correspondan a tu componente; el valor real de la resistencia fija; que el código suponga el mismo conexionado (termistor a GND o a la alimentación); que la referencia del ADC sea la que espera el código; y el propio ADC. El ADC del ESP32 no es lineal cerca de 0 V ni en la parte alta de su rango, así que mantén la tensión del divisor en la zona central o usa lecturas calibradas.

¿Cómo conecto un termistor a un ESP32 o a un Arduino?

Una pata del termistor a GND; la otra, a un pin analógico y, a través de la resistencia fija, a 3,3 V (5 V en un Arduino de 5 V). Añade un condensador de 100 nF entre el pin y GND. En el ESP32 usa un pin del ADC1, como GPIO34: el ADC2 no se puede usar con el WiFi encendido.