Skip to Content

Interfacing Arduino To An NTC Sensor

Interfacing Arduino To An NTC Sensor

En este tutorial, voy a presentar la guía completa necesaria para construir proyectos de sensores de temperatura utilizando NTC y Arduino. 

Los NTC se utilizan ampliamente en aplicaciones de detección de temperatura.

Ocupan menos espacio y cuestan bastante menos. Puedes interconectar fácilmente un NTC utilizando un pin de entrada analógica del Arduino.

Al final de este tutorial, te sentirás cómodo eligiendo NTCs, revisando las hojas de datos y entendiendo los parámetros críticos necesarios para la selección adecuada para seleccionar los parámetros correctos. 

Encontrará un ejemplo de código Arduino, una guía de conexión paso a paso y una recopilación de preguntas frecuentes sobre proyectos NTC con respuestas. 

Comencemos.

Componentes necesarios para construir el proyecto Arduino NTC

Componentes de hardware

Software

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

Fundamentos de un sensor NTC

NTC son las siglas de resistencia de coeficiente de temperatura negativo. Los NTC son un tipo de termistor.

La resistencia del NTC varía mucho con la temperatura.

A medida que la temperatura aumenta, la resistencia NTC disminuye y viceversa.

Esta propiedad específica del NTC lo convierte en un excelente sensor para medir temperaturas.

Para su rápida referencia, aquí hay un ejemplo de un NTC cuyas características se muestran en la imagen de abajo.

La resistencia cambia de 1 Mohms a 1 kOhms para un cambio de temperatura, como se muestra en la figura.

Fundamentos de un sensor NTC

Repasemos algunos parámetros típicos de los NTC.

Medición de la potencia cero

Se mide la resistencia del NTC a una temperatura determinada. Al medirla, se suele suministrar cierta cantidad de corriente a través de ella.

Si la corriente que pasa por el NTC es demasiado alta, se producirá un autocalentamiento que dará lugar a mediciones erróneas. 

No se puede medir la resistencia sin hacer pasar algo de corriente por ella.

Así, se suministra una corriente minúscula, casi despreciable, y se hacen las mediciones.

De ahí que lo llame medición de potencia cero. 

Autocalentamiento de los sensores de temperatura NTC

La resistencia del NTC caerá un poco porque cuando se suministra la corriente a través del NTC, también se calienta el NTC lo que resulta en un aumento de la temperatura. 

En el siguiente gráfico, se puede ver que a medida que la corriente aumenta, la resistencia disminuye, lo que indica que hay un aumento de la temperatura.

Autocalentamiento de los sensores de temperatura NTC

Constante de tiempo térmica

La constante de tiempo térmica es un parámetro esencial del sensor. El valor indica la rapidez con la que el sensor NTC puede detectar el cambio de temperatura del entorno del sensor. 

Supongamos que lleva el sensor de una zona de temperatura estable a una nueva zona de temperatura rápidamente.

La constante de tiempo térmica es el tiempo que tarda el sensor en alcanzar el 63,2% de la nueva temperatura. 

Ecuación de Steinhart-Hart

La curva NTC no es lineal. Es necesario encontrar una ecuación que se ajuste a la curva no lineal de los sensores NTC (resistencia frente a la temperatura).

Utilizamos la ecuación de Steinhart-Hart porque es una ecuación aceptada por todo el sector.

Ecuación de Steinhart-Hart

Donde A, B y C son coeficientes que suelen compartir los proveedores de NTC. 

Hay otra versión que utiliza los valores beta (disponibles en las hojas de datos de NTC)

otra versión que utiliza los valores beta

La temperatura está en kelvin y la resistencia en ohmios.

¿Cómo se controla el cambio de temperatura?

El circuito más sencillo es un divisor de tensión. He aquí un ejemplo.

Puede medir el Vout utilizando una entrada analógica del Arduino. A medida que la temperatura cambia, la resistencia del NTC cambia.

El cambio en la resistencia conduce a un cambio en la tensión Vout

Aquí está la imagen del módulo NTC y los detalles de los componentes presentes en él.

Imagen del módulo NTC

1 - LED - Indica que los 5 V están presentes

2 - 10 kOhms de resistencia (valor fijo)

3 - Pines de conexión de Arduino

4 - Sensor NTC 10 kOhms

5 - Agujeros de montaje

Aplicaciones del sensor NTC

  1. Detección de la temperatura en los circuitos integrados de los cargadores debaterías. Los NTC ayudan a supervisar y controlar la velocidad de carga de la batería para no sobrecalentar los componentes del sistema de gestión de la batería.
  2. Los NTC se utilizan en los sistemas de iluminación LED. Los LEDs dependen en gran medida de la temperatura y la vida útil. Los NTC ayudan a regular la corriente, por lo que los LEDs proporcionarán una mejor vida útil. 
  3. Los NTC también tienen aplicaciones en discos duros y procesadores de ordenador para proteger los componentes del sobrecalentamiento debido a un uso excesivo. 
  4. He trabajado en proyectos en los que se utilizaban NTC para controlar la temperatura de la habitación. La retroalimentación se daba para regular la temperatura de la habitación controlando la cantidad de calefacción.
  5. El NTC también encuentra aplicaciones en laboratorios químicos, equipos de producción industrial, herramientas de soldadura electrónica, etc.

Instrucciones paso a paso para conectar un NTC a un Arduino

En esta sección, te daré instrucciones paso a paso para completar la conexión de cableado necesaria entre el Arduino y el módulo del sensor NTC.

En este ejemplo, utilizaremos un sensor NTC en un módulo con tres pines.

Sensor NTC en un módulo con tres pines

El módulo de arriba tiene un LED para indicar que el módulo está alimentado.

El módulo también tiene el circuito divisor de tensión formado por el NTC y la resistencia.

Los detalles de los tres pines son los siguientes.

Nombre de la clavijaDescripción de la clavija
-Alimentación negativa (GND)
+Fuente de alimentación positiva
SSeñal (salida del divisor resistivo)

Empecemos con las conexiones de hardware.

¿Cómo conectar el sensor NTC al Arduino UNO?

A continuación se muestra la guía de conexión paso a paso para completar el Arduino y el módulo sensor de temperatura. 

Paso 1: Realizar la conexión a tierra

Realice la conexión a tierra

El pin 1 del módulo sensor de temperatura va al pin GND del Arduino.

Puedes elegir el pin GND más cercano disponible para completar la conexión.

Es una excelente práctica comenzar las conexiones con la conexión GND primero.

Paso 2: Conectar el pin de 5 VCC

Conecte el pin de 5 VCC

Conecta el pin de 5 V del sensor NTC al Arduino UNO. La potencia consumida por el sensor NTC es muy baja.

Paso 3: Conectar la clavija de señal analógica

Conecte la clavija de la señal analógica

Para completar la conexión, conecta el pin de salida del sensor al pin A0 del Arduino. Puedes elegir cualquier pin de entrada analógica disponible en el Arduino (A0, A1, A2, A3, A4 y A5). 

Asegúrese de que también actualiza el código de Arduino para reflejar la nueva entrada analógica para que el código y la conexión coincidan.

Además, también puedes añadir un LED o un zumbador a uno de los GPIO de Arduino. Usted puede conducir el LED o el zumbador para indicar que se detecta el exceso de temperatura. 

También puede añadir dos LEDs (verde y rojo) para indicar si la temperatura está dentro o fuera de los límites. 

La conexión final debería ser como la siguiente.

conexión final

Ejemplo de código Arduino para el sensor NTC

En esta sección, veremos un sencillo código de ejemplo para leer la temperatura del ambiente utilizando un módulo NTC. Empecemos.

Ejemplo de código Arduino para el sensor NTC (código básico)

const float BETA = 3950; // should match the Beta Coefficient of the thermistor
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  int analogValue = analogRead(A0);
  float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
  Serial.print("Temperature: ");
  Serial.print(celsius);
  Serial.println(" ℃");
  delay(1000);
}

Ejemplo de código Arduino para el sensor NTC (código avanzado)

El segundo ejemplo de Adafruit muestra cómo mejorar la precisión de la lectura utilizando algoritmos de software. Puede promediar para cancelar el ruido de manera eficiente. 

Dado que no se espera que la temperatura varíe drásticamente en milisegundos, el promedio puede hacerse para 30 o incluso 50 muestras.

El promedio elimina el ruido y proporciona una lectura más consistente.

// which analog pin to connect
#define THERMISTORPIN A0        
// resistance at 25 degrees C
#define THERMISTORNOMINAL 10000      
// temp. for nominal resistance (almost always 25 C)
#define TEMPERATURENOMINAL 25  
// how many samples to take and average, more takes longer
// but is more 'smooth'
#define NUMSAMPLES 5
// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3950
// the value of the 'other' resistor
#define SERIESRESISTOR 10000    
 
int samples[NUMSAMPLES];
 
void setup(void) {
  Serial.begin(9600);
  analogReference(EXTERNAL);
}
 
void loop(void) {
  uint8_t i;
  float average;
 
  // take N samples in a row, with a slight delay
  for (i=0; i< NUMSAMPLES; i++) {
   samples[i] = analogRead(THERMISTORPIN);
   delay(10);
  }
 
  // average all the samples out
  average = 0;
  for (i=0; i< NUMSAMPLES; i++) {
     average += samples[i];
  }
  average /= NUMSAMPLES;
 
  Serial.print("Average analog reading ");
  Serial.println(average);
 
  // convert the value to resistance
  average = 1023 / average - 1;
  average = SERIESRESISTOR / average;
  Serial.print("Thermistor resistance ");
  Serial.println(average);
 
  float steinhart;
  steinhart = average / THERMISTORNOMINAL;     // (R/Ro)
  steinhart = log(steinhart);                  // ln(R/Ro)
  steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)
  steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
  steinhart = 1.0 / steinhart;                 // Invert
  steinhart -= 273.15;                         // convert absolute temp to C
 
  Serial.print("Temperature ");
  Serial.print(steinhart);
  Serial.println(" *C");
 
  delay(1000);
}

En el código anterior, la línea

// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3950

Le ofrece una opción para ajustar el coeficiente beta al valor correcto. 

Preguntas frecuentes sobre los proyectos de sensores de temperatura NTC de Arduino

He recopilado una lista de las preguntas más frecuentes sobre el sensor de temperatura NTC.

Si tiene alguna otra pregunta, no dude en publicarla en la sección de comentarios. 

1) ¿Cuáles son las propiedades de un sensor de temperatura NTC?

Las siguientes son las propiedades esenciales de un sensor NTC.

  • Resistencia en ohmios a 25 grados Celsius
  • Tolerancia (una tolerancia más estricta será más costosa)
  • Temperatura de funcionamiento
  • Tipo de montaje
  • Paquete
  • B de tolerancia. Las curvas Beta tendrán diferentes constantes necesarias para convertir la resistencia en la temperatura correcta.

2) ¿Los termistores NTC son lineales?

Los NTC son no lineales. Por lo tanto, no es sencillo convertir la resistencia en temperatura.

Por lo tanto, utilizamos fórmulas únicas de ajuste de curvas para ajustar mejor la resistencia a la temperatura.

3) ¿Cuáles son los parámetros de la ficha técnica de una sonda NTC?

A continuación se describen brevemente los parámetros de la hoja de datos (tomados de la pieza de Murata).

ParámetroValorDescripción
Resistencia (25 ℃)100 kOhmsEsta es la resistencia a temperatura ambiente. Cuando la gente dice diez kOhm NTC, la resistencia NTC es diez kOhms a temperatura ambiente. 
Tolerancia del valor de la resistencia (a 25 ℃)+/- 1%La tolerancia en porcentaje. Tienes que considerar esto en tu presupuesto de error. La otra fuente de error puede ser el error del ADC. 
Constante B (25/50 ℃ )4250 KLa constante B se proporciona en diferentes rangos de temperatura. Puede elegir el valor correcto de la constante en función del rango de temperatura del entorno de destino. 
Tolerancia de la constante B (25/80 ℃ ) 4303 KIgual que el anterior
Valor de referencia de la constante B (25/85 ℃ )4311 KIgual que el anterior
Constante B (25/100 ℃ ) valor de referencia4334 KIgual que el anterior
Tensión máxima5 VTensión máxima para el NTC. Significa que no puedes alimentar el NTC con más de 5 V.
Corriente máxima de funcionamiento 0,031 mAPara medir la resistencia, se hará pasar cierta corriente. La corriente provocará el autocalentamiento del NTC. Por lo tanto, es mejor mantener la corriente lo más baja posible.
El valor máximo de la corriente es para la seguridad del NTC.
Constante de disipación típica1 mW / ℃La constante de disipación proporciona información para calcular el aumento de la temperatura para una disipación de potencia de mW. 
Rango de temperatura de funcionamiento-40 ℃ a 150 ℃Rango de temperatura máxima de funcionamiento
Código de tamaño (en mm)1 x 0,5 mmDimensiones en mm
MSL1Nivel de sensibilidad a la humedad del NTC

Conclusión

En este artículo, hemos aprendido a conectar un NTC al Arduino UNO.

Cubrimos los aspectos básicos, los parámetros de la hoja de datos y las consideraciones de diseño.

Espero que ahora estés seguro de construir tu propio proyecto Arduino, que utiliza un sensor NTC. 

He trabajado en proyectos de HVAC (Calefacción, Ventilación y Aire Acondicionado) en los que se utilizó el NTC para controlar la temperatura ambiente y dar información a la caldera.

¿Tiene sugerencias para mejorar este artículo? Todos los comentarios son bienvenidos. 

¿Qué le gustaría leer a continuación? ¿Qué temas le han interesado más? Por favor, hágamelo saber.

No olvides compartir este artículo con tus amigos si te resulta útil.