Arduino y Termistor MF52: Mide Temperatura Fácilmente


Aprende a conectar un termistor MF52 a Arduino y medir la temperatura con un divisor de tensión. Incluye circuito, cálculos y código.

Arduino y Termistor MF52: Mide Temperatura Fácilmente
oscar Escrito por oscar 26 July 2026 8 0

Arduino y termistor MF52

El MF52 es una familia de termistores, normalmente del tipo NTC (Negative Temperature Coefficient). Un termistor NTC cambia su resistencia dependiendo de la temperatura: cuando la temperatura aumenta, su resistencia disminuye. Por esta razón puede utilizarse con Arduino para construir un sensor de temperatura económico.

Es importante revisar las especificaciones exactas de tu termistor, porque no todos los MF52 tienen los mismos parámetros. Un modelo común es el MF52 NTC 10 kΩ a 25 °C, pero el parámetro Beta (β) puede variar según el fabricante y el modelo. Por ejemplo, existen versiones con β = 3470 y otras con β = 3950. Por lo tanto, el código debe utilizar el valor correspondiente al termistor que tienes.

¿Qué necesitas para desarrollar el proyecto?

La resistencia fija y el termistor forman un divisor de tensión. Arduino no mide directamente resistencia con una entrada analógica; mide tensión. Por eso primero se convierte el cambio de resistencia del termistor en un cambio de voltaje que Arduino puede leer mediante analogRead()

¿Cómo funciona un termistor MF52 NTC?

Un termistor es una resistencia cuyo valor depende de la temperatura. En un NTC ocurre lo siguiente:

MF52 NTC
MF52 NTC

Nota: La relación entre temperatura y resistencia no es lineal. Por eso no es correcto convertir directamente una lectura analógica utilizando simplemente una regla de tres. Una aproximación habitual utiliza la ecuación Beta del termistor.

Relación resistencia temperatura NTC
Relación resistencia temperatura NTC

La curva muestra el comportamiento típico de un termistor NTC: al aumentar la temperatura, la resistencia disminuye de forma no lineal.

Por ejemplo, utilizando estos parámetros:

La gráfica se ha calculado utilizando la ecuación Beta: 

¿Qué es la constante Beta (β)?

La constante β describe la relación entre la resistencia de un termistor NTC y la temperatura.

T =11T0+1βln(RR0)

Donde:

Símbolo Significado
T Temperatura actual en Kelvin
T0 Temperatura de referencia en Kelvin
R Resistencia actual del termistor
R0 Resistencia nominal a la temperatura de referencia
β Constante Beta del termistor
ln Logaritmo natural

¿Por qué se utiliza una temperatura de referencia?

Los fabricantes normalmente especifican la resistencia nominal del termistor a una temperatura determinada.

Por ejemplo: MF52-103

Normalmente significa:

R0=10KΩ

T0=25ºC

Pero la ecuación no utiliza directamente grados Celsius. Debemos convertir la temperatura a Kelvin:

T(K)=T(ºC)+273.15

Por lo tanto

25ºC=25+273.15=298.15K

Entonces

T0 = 298.15K

Ejemplo con un MF52 de 10 kΩ

Por ejemplo: MF52-103

Con:

R0=10000Ω

T0=25ºC=298.15K

Y suponemos:

β=3950k

Ahora medimos una resistencia:

R=5000Ω

Aplicamos:

T =11298.15+13950ln(500010000)

Primero calculamos la relación de resistencias:

RR0=500010000=0.5

Luego:

ln(0.5)-0.6931

Entonces:

T=11298.15+-0.69313950

El resultado es aproximadamente:

T316.9K

Convertimos a Celsius:

T(ºC)=316.9-273.15

T43.8ºC

Por lo tanto, un termistor MF52 de 10 kΩ que mide aproximadamente 5 kΩ puede estar cerca de: 44ºC

¿Cómo obtenemos la constante Beta?

Si conocemos dos puntos de funcionamiento del termistor, podemos calcular β.

La ecuación es:

β=ln(R1R2)1T1-1T2

Las temperaturas deben estar en Kelvin.

Supongamos:

Temperatura Resistencia
25ºC 10000Ω
50ºC 3588Ω

Convertimos:

T1=25+273.15=298.15K

T2=50+273.15=323.15K

Entonces:

β=ln(100003588)1298.15-1323.15

El resultado es aproximadamente:

β3950K

Forma de conexión con Arduino

La conexión recomendada es un divisor de tensión:

Existen placas que ya traen el divisor de voltaje integrado:

Circuito Arduino MF52
Circuito Arduino MF52

La conexión física es:

El termistor y la resistencia forman un divisor de tensión. Cuando el termistor se calienta, su resistencia disminuye y el voltaje del punto conectado a A0 también cambia. Arduino convierte ese voltaje en un valor digital mediante su ADC.

Código de ejemplo para Arduino

El siguiente ejemplo está pensado para un MF52 NTC de 10 kΩ a 25 °C y utiliza un valor Beta de 3950. Si tu termistor tiene otro valor Beta, debes cambiar la constante correspondiente.

const int PIN_TERMISTOR = A0;

// Características del termistor
const float RESISTENCIA_NOMINAL = 10000.0; // 10 kΩ a 25 °C
const float TEMPERATURA_NOMINAL = 25.0;    // °C
const float BETA = 3950.0;

// Resistencia utilizada en el divisor de tensión
const float RESISTENCIA_DIVISOR = 10000.0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int lecturaADC = analogRead(PIN_TERMISTOR);

  // Evita divisiones por cero
  if (lecturaADC == 0) {
    Serial.println("Error: lectura ADC igual a cero");
    delay(1000);
    return;
  }

  float resistenciaNTC =
    RESISTENCIA_DIVISOR *
    (float)lecturaADC /
    (1023.0 - lecturaADC);

  // Conversión de temperatura mediante la ecuación Beta
  float temperaturaKelvin =
    1.0 /
    (
      (1.0 / (TEMPERATURA_NOMINAL + 273.15)) +
      (
        log(resistenciaNTC / RESISTENCIA_NOMINAL)
        / BETA
      )
    );

  float temperaturaCelsius = temperaturaKelvin - 273.15;

  Serial.print("ADC: ");
  Serial.print(lecturaADC);

  Serial.print(" | Resistencia NTC: ");
  Serial.print(resistenciaNTC);

  Serial.print(" ohm | Temperatura: ");
  Serial.print(temperaturaCelsius);

  Serial.println(" °C");

  delay(1000);
}

Explicación del código

Definir la entrada analógica

const int PIN_TERMISTOR = A0;

El termistor está conectado a la entrada analógica A0. Arduino UNO utiliza su ADC para convertir la tensión de la entrada en un valor numérico. En el Arduino UNO, una lectura normalmente está comprendida entre 0 y 1023.

Definir los parámetros del termistor

const float RESISTENCIA_NOMINAL = 10000.0;
const float TEMPERATURA_NOMINAL = 25.0;
const float BETA = 3950.0;

 

Estos valores describen el termistor:

La constante Beta es especialmente importante. Si tu MF52 tiene un valor diferente, por ejemplo 3470, debes utilizar ese valor. Usar un Beta incorrecto puede producir errores en la temperatura calculada.

Leer el voltaje mediante el ADC

int lecturaADC = analogRead(PIN_TERMISTOR);

Arduino no obtiene directamente los ohmios del termistor. Primero obtiene una lectura proporcional al voltaje existente en el punto intermedio del divisor.

Por ejemplo, si el termistor y la resistencia fija tienen valores similares, el punto intermedio estará aproximadamente en la mitad de la tensión de alimentación. El ADC devolverá entonces un valor cercano a la mitad de su rango.

Calcular la resistencia del termistor

float resistenciaNTC =
  RESISTENCIA_DIVISOR *
  (float)lecturaADC /
  (1023.0 - lecturaADC);

La lectura ADC se convierte nuevamente en una resistencia utilizando la ecuación del divisor de tensión.

Para el circuito utilizado:

5V
 │
R_NTC
 │
 ├── VOUT
 │
R_FIJA
 │
GND

La relación utilizada es:

R_NTC = R_FIJA × ADC / (1023 - ADC)

Esta ecuación depende de la forma exacta en la que conectes el divisor. Si colocas la resistencia fija arriba y el termistor abajo, la fórmula cambia. Por eso el circuito y el código deben corresponderse.

Convertir la resistencia en temperatura

float temperaturaKelvin =
  1.0 /
  (
    (1.0 / (TEMPERATURA_NOMINAL + 273.15)) +
    (
      log(resistenciaNTC / RESISTENCIA_NOMINAL)
      / BETA
    )
  );

La fórmula utiliza la ecuación Beta:

1/T = 1/T0 + (1/B) × ln(R/R0)

Donde:

La temperatura se calcula inicialmente en Kelvin porque la ecuación termodinámica utiliza temperatura absoluta. Después se convierte a grados Celsius:

float temperaturaCelsius = temperaturaKelvin - 273.15;

Simulación del circuito

Del sitio oficial de https://docs.wokwi.com/parts/wokwi-ntc-temperature-sensor, podemos usar el simulador para ver el funcionamiento de este sensor.

Recomiendo copiar y pagar el código que realizamos en este post para que lo pueda comprobar.

Puntos importantes sobre el MF52

Comprueba el valor exacto de tu termistor

El nombre MF52 por sí solo no es suficiente para conocer con precisión todos los parámetros. Debes comprobar si el componente es, por ejemplo, un NTC 10K, qué valor de Beta tiene y cuál es su tolerancia.

Un MF52 NTC 10K con β = 3950 y otro MF52 NTC 10K con β = 3470 pueden producir resultados diferentes utilizando exactamente la misma fórmula.

Precisión de la medición

La precisión final depende de varios factores:

Por este motivo, la ecuación Beta es una buena aproximación para proyectos educativos y de control de temperatura, pero para obtener una mayor precisión debes utilizar los parámetros específicos del fabricante o realizar una calibración. La relación resistencia-temperatura de un NTC es inherentemente no lineal.

Proyecto práctico recomendado

Un buen primer proyecto consiste en crear un termómetro digital con Arduino y un termistor MF52:

Después puedes ampliar el proyecto conectando una pantalla OLED, un LCD I2C, un relé para controlar un ventilador o un sistema de registro de datos. Si el objetivo es únicamente medir temperatura con mayor precisión y simplicidad, también existen sensores digitales como el DS18B20, pero el MF52 es especialmente interesante para aprender los fundamentos de los divisores de tensión, ADC, resistencia variable con la temperatura y modelado matemático de sensores.

Conclusión

El MF52 es una excelente forma de aprender cómo un sensor analógico funciona internamente. A diferencia de un sensor digital, Arduino no recibe directamente un valor como 25 °C. Primero mide una tensión, calcula una resistencia y posteriormente aplica un modelo matemático para obtener la temperatura.

La cadena completa del proyecto es:

Temperatura
    ↓
Resistencia del MF52 cambia
    ↓
Divisor de tensión
    ↓
Voltaje en A0
    ↓
ADC de Arduino
    ↓
Cálculo de resistencia
    ↓
Ecuación Beta
    ↓
Temperatura en °C

Comentario

Debe aceptar antes de enviar