¿Necesitas medir la temperatura de un líquido, del agua de un estanque o del suelo de una pecera sin que la electrónica se moje? El sensor de temperatura NTC 10K resuelve justo eso. Por dentro no es nada exótico: es un termistor encapsulado dentro de una sonda de acero inoxidable resistente al agua y a la corrosión. En este tutorial vas a conectarlo a un Arduino, vas a entender por qué necesita una resistencia de 10K como compañera, y vas a leer grados Celsius reales en el monitor serial. Al final también te mostramos cómo depurar el error más típico (lecturas al revés) y dónde conseguir cada pieza en Chile.

Qué es un termistor NTC y por qué no es un sensor directo

Un termistor es una resistencia que cambia su valor según la temperatura. La sigla NTC significa coeficiente de temperatura negativo: a mayor temperatura, menor resistencia. El modelo que usamos acá es de la familia MF52 y entrega exactamente 10.000 ohm (10K) a 25°C, con un coeficiente Beta de 3950.

Termistor NTC 10K MF52 visto de cerca, la perlita negra mide unos 2mm

La parte importante: el Arduino no puede leer ohm. Su entrada analógica solo mide voltaje. Por eso el termistor nunca se usa solo, sino formando un divisor de voltaje junto a una resistencia fija. Y un detalle que confunde a muchos: la relación entre resistencia y temperatura no es una línea recta, es una curva. Esta tabla del propio MF52 lo muestra de un vistazo. Fíjate cómo de 25°C a 30°C la resistencia baja de 10.000 a 8.048 ohm, pero de 100°C a 105°C apenas se mueve de 674 a 583 ohm.

Tabla de resistencia contra temperatura del termistor MF52, marca 10K a 25 grados Celsius

Esa curva es la razón por la que más adelante el código no hace una simple regla de tres, sino que aplica una ecuación pensada para termistores.

Materiales

Para replicar el montaje necesitas muy poco:

  • Sensor de temperatura NTC 10K (sonda contra agua, o el termistor MF52 10K pelado)
  • Arduino (cualquier Uno o compatible sirve)
  • 1 resistencia de 10K (1/4 W)
  • Cables jumper macho macho
  • Cable USB para alimentar y programar el Arduino

El cableado: por qué tiene que ser un arreglo pull down

Acá está el corazón del montaje. El termistor y la resistencia de 10K se conectan en serie entre los 5V y GND del Arduino, y la unión entre ambos (el punto medio) va a una entrada analógica. Eso es un divisor de voltaje.

Diagrama de conexión del termistor NTC 10K a un Arduino UNO con resistencia pull down de 10K

La configuración que usamos es pull down: el termistor va arriba (al lado de 5V) y la resistencia de 10K va abajo (al lado de GND). El punto de medición queda entre los dos. Conéctalo así:

  1. Un extremo del termistor a 5V.
  2. El otro extremo del termistor al punto de medición, y desde ahí un cable a una entrada analógica del Arduino.
  3. Desde ese mismo punto de medición, la resistencia de 10K hacia GND.

Dos advertencias que te van a ahorrar un dolor de cabeza:

  • El valor de 10K no es decorativo. Toda la conversión a grados se calculó asumiendo una resistencia de 10K. Si pones una de 4.7K o de 15K, las lecturas van a quedar corridas. Usa 10K.
  • El pin importa. En el diagrama original la señal aparece dibujada hacia el pin A2, pero el código de ejemplo lee el pin A0 con analogRead(0). Si dejas el sensor en A2 y subes el código tal cual, vas a leer cualquier cosa. Lo más simple: conecta la señal a A0 para que calce con el código, o cambia el 0 por 2 en el código si prefieres usar A2.

El código y la ecuación detrás de los grados

Copia este sketch en el IDE de Arduino y súbelo a la placa. No inventamos nada: es el código de referencia que convierte el valor crudo del ADC a Kelvin y de ahí a Celsius.

C++
/*ElectroCrea.com

Arduino     Sensor de temperatura NTC 10k
---------------------------------------------
 5v         pin
 GND        pin
(utilizar arreglo Pull-Down con resistencia de 10K)
*/

#include <math.h>
////////////////////////////////////////////////////////////////////VOID SETUP
void setup() {
Serial.begin(115200);//Recuerda ajustar to monitor serial a 115200
}
double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp - 273.15;// Converierte de Kelvin a Celsius
//Para convertir Celsius-Farenheith escriba en esta linea:Temp=(Temp*9.0)/ 5.0 + 32.0;
return Temp;
}
////////////////////////////////////////////////////////////////////VOID LOOP
void loop() {
int val;//Crea una variable entera
double temp;//Variable de temperatura = temp
val=analogRead(0);//Lee el valor del pin analogo 0 y lo mantiene como val
temp=Thermister(val);//Realiza la conversion del valor analogo a grados Celsius
Serial.println(temp);//Escribe la temperatura en el monitor serial
delay(1000);//Espera un segundo y vuelve a escribir
}
//Mas informacion en ElectroCrea.com

Vale la pena entender qué hace la función Thermister(), porque ahí está toda la magia:

  • analogRead(0) devuelve un número entero de 0 a 1023 (el ADC del Arduino es de 10 bits). Ese es el RawADC.
  • La línea Temp = log(((10240000/RawADC) - 10000)); recupera la resistencia del termistor a partir de ese valor crudo. El 10240000 no salió de la nada: es 1024 multiplicado por la resistencia de referencia de 10.000 ohm. Por eso justamente la resistencia tiene que ser de 10K.
  • La fórmula larga con los coeficientes 0.001129148, 0.000234125 y 0.0000000876741 es la ecuación de Steinhart Hart, el estándar para linealizar termistores. Devuelve la temperatura en Kelvin.
  • Temp = Temp - 273.15; pasa de Kelvin a Celsius.

Si quieres Fahrenheit en vez de Celsius, el propio código deja la línea comentada lista para usar: Temp=(Temp*9.0)/ 5.0 + 32.0;.

Pruebas y depuración

Sube el código, abre el Monitor Serial y ajústalo a 115200 baudios (si lo dejas en otra velocidad solo vas a ver símbolos raros). Deberías ver la temperatura imprimiéndose una vez por segundo, gracias al delay(1000).

El error clásico, reportado una y otra vez por quienes siguieron el tutorial original, es que la temperatura sube cuando enfrías y baja cuando calientas. Si te pasa eso, no es el sensor: es el cableado. Casi siempre significa que la resistencia quedó en posición pull up en vez de pull down. Revisa que el termistor esté del lado de 5V y la resistencia de 10K del lado de GND, tal como muestra el diagrama. El otro punto a revisar es que el sensor esté efectivamente en el pin que el código está leyendo (A0).

Variantes y mejoras

Una vez que tengas la lectura estable, hay varias formas entretenidas de extender el proyecto:

  • Mostrar la temperatura en una pantalla. En vez de depender del computador, conecta una pantalla OLED SSD1306 por I2C o un LCD 16x2 y muestra los grados ahí. Así el medidor funciona solo, sin estar enchufado al PC.
  • Registrar los datos. Si quieres llevar un historial (por ejemplo, la temperatura de un acuario durante la noche), agrega un módulo microSD por SPI y reemplaza los Serial.println por escrituras a un archivo de texto.
  • Convertirlo en termostato. Combinándolo con un módulo relé puedes encender un calefactor o un ventilador cuando la temperatura cruce cierto umbral, dejando el NTC 10K como sensor de un control ON/OFF casero.
  • Promediar para reducir el ruido. Las entradas analógicas pueden saltar un poco. Toma 10 lecturas seguidas, sácales el promedio y recién ahí calcula la temperatura: vas a ver un valor mucho más estable.

Personalización para Chile

En MechatronicStore tienes todo lo necesario para armar este proyecto con stock local:

  • Termistor 10k MF52 sensor temperatura por $350. Es exactamente el elemento NTC de 10K que pide el tutorial. La sonda contra agua de la foto de portada es este mismo termistor MF52, pero encapsulado en un tubo de acero. Eléctricamente se comportan igual, así que el código y el cálculo no cambian.
  • Arduino Uno R3 por $9.990. Cualquier Uno o compatible cumple la función de leer el divisor y correr la ecuación.
  • Cables macho macho 30cm por $2.990. Los jumpers para conectar todo sin soldar.

La resistencia de 10K (1/4 W) la encuentras dentro de los packs de resistencias variadas de la tienda, donde eliges el valor de 10K que necesitas para el divisor.

Recursos

Inspirado en el tutorial de ElectroCrea. Versión chilena reescrita y ampliada, con componentes en stock local en MechatronicStore.