Funcionamiento de una NTC control de temperatura

ntc
ntc

En este post vamos a continuar con las resistencias variables en función de una magnitud física como el caso de la LDR que varía su resistencia en función de la luminosidad, pues bien ahora vamos a estudiar la NTC que varía su resistencia en función de la temperatura.

Las siglas NTC corresponden a negative termal coefficient, coeficiente negativo de temperatura, la cual varía su resistencia en función de la temperatura a mayor temperatura menor resistencia y viceversa.

Aspecto de una NTC:

La imagen de la figura muestra una típica NTC en este caso de 10KΩ la dos primeras francas inferiores indican las dos primeras cifras, la tercera color naranja el multiplicador y la última color oro en este caso la tolerancia.

Resistencia NTC de 10Kohm
Resistencia NTC de 10Kohm

Símbolo de una resistencia NTC:

Símbolo resistencia NTC
Símbolo resistencia NTC

Existe otro tipo de estas resistencias que son las PTC que funcionan a mayor temperatura mayor resistencia.

Gráfica de funcionamiento:

La gráfica representativa de la NTC no es lineal sino que representa una exponencial inversa como se muestra en la siguiente gráfica obtenida de la siguiente página:

Parámetros resistencia NTC
Parámetros resistencia NTC

Debido a la no linealidad de su curva característica, hace un poco más complejo su uso, para ello podemos facilitar su utilización haciendo uso de la  ecuación de SteinHart-Hart, con la que podemos calcular el valor de temperatura en función del valor de la resistencia.

Esta ecuación requiere de unos coeficientes A,B,C que podremos sacarlos de la siguiente página:

https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html

Gracias a esto aun no teniendo el datashet de la NTC y sacando tres pares de valores resistencia-temperatura se puede sacar el comportamiento completo de esta.

Temperatura NTC en función de la resistencia
Temperatura NTC en función de la resistencia

Esta fórmula será la que implementemos en el programa de Arduino para saber que temperatura está midiendo la NTC.

curso arduino
CURSO ARDUINO

Si quieres convertirte en un experto en Arduino pincha en el siguiente botón

Para usarla como es debido aplicaremos un divisor de tensión compuesto de una resistencia fija de igual valor al valor nominal (código de colores) de la NTC en este caso he elegido una de 10kΩ conectándolo a Arduino de la siguiente manera.

Esquema de conexión activación ventilador en función de la temperatura captada por una NTC
Esquema de conexión activación ventilador en función de la temperatura captada por una NTC

El circuito de la figura controla la puesta en marcha de un ventilador a 220 voltios cuando la temperatura supera los 25 grados y lo desactiva cuando es igual o menor a 25 grados centígrados.

Realización del programa control de un ventilador con NTC para Arduino:

En primer lugar debemos considerar que necesitamos conocer datos de temperatura, pero la ntc solo nos indica variaciones de resistencia, ¿cómo podemos pasar de resistencia a grados centígrados?

Arduino no mide resistencia directamente, pero si hay otra magnitud que podemos medir que es el voltaje presente en una entrada analógica.

Esta entrada analógica nos dará mediante su conversor analógico digital un número entre 0-1023.

Bien si te fijas bien en el divisor de tensión formado por la resistencia fija de 10KΩ y la NTC haciendo una pequeña regla de tres podemos obtener el voltaje que cae en la NTC sabiendo el valor de dicha entrada analógica

Divisor de tensión NTC para conectar a Arduino
Divisor de tensión NTC para conectar a Arduino
Voltaje en la resistencia NTC
Voltaje en la resistencia NTC

Como sabemos el voltaje que cae en la ntc, podremos calcular el valor que tiene la resistencia aplicando ley de ohm de la siguiente manera:

Como sabemos el valor de la R fija 10k ohmios y sabemos el voltaje que cae en ella podemos saber la intensidad sustituyendo la intensidad  tendremos.

Cálculo valor de la resistencia NTC en función de la tensión
Cálculo valor de la resistencia NTC en función de la tensión

Y ya que tenemos la resistencia podemos aplicar la ecuación de SteinHart-Hart para hallar el valor de temperatura T, ojo que está en grados KELVIN tendríamos que pasarlo a grados centígrados si se desea.

Temperatura NTC en función de la resistencia
Temperatura NTC en función de la resistencia

El programa para Arduino quedaría así:

/*AUTOR: JOSE ANTONIO RIVERA MORALES
 *FECHA: 12-11-2019
 *www.pasionelectronica.com
 * Este programa enciende un ventilador cuando la temperatura
 * captada por la NTC es superior a 25ºC y lo apaga cuando es 
 * inferior, mostrando por el monitor serie el valor de la 
 * temperatura
 */
#include <math.h>
int ventilador=2;
int NtcPin=A1;
int Valim=5;
int Rfija=10000;//valor de la resistencia en serie con la ntc 
float A =4.175255266e-3;//parametros Steinhart-Hart a,b,c 
float B =-2.049607709e-4;//obtenidos de la pagina
////https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator///ntccalculator.html
float C =14.71083587e-7;

void setup()
{
  Serial.begin(9600);
  pinMode(ventilador,OUTPUT);//asignamos el pin donde conectaremos el relé para el ventilador
}
void loop() 
{
  float Valsntc = analogRead(NtcPin);
  float Vntc=(Valsntc*Valim)/1024;//voltaje que cae en la ntc
  float R=(Rfija*Vntc )/(Valim-Vntc);
  float logR=log(R);
  float TgradKelvin=1.0/(A+B*logR+C*logR*logR*logR);//fórmula de Steinhart-
  float centigrados=TgradKelvin-273.15;//pasamos de grados kelvin a ºc 
 
  Serial.print(centigrados);
  Serial.println("ºC ");
  delay(1000);
  if (centigrados>25){
    digitalWrite(ventilador,LOW);//encendemos ventilador
    //relé activo a nivel bajo
  }
  else {
    digitalWrite(ventilador,HIGH);//apagamos ventilador
  }
  }