En este proyecto vamos a utilizar un termistor NTC 10K para registrar la temperatura, este es un sensor análogo que tiene una resistencia que va cambiando según la temperatura, NTC significa coeficiente de temperatura positivo por sus siglas en ingles (Negative Temperature Coefficient) y los 10K significan que tiene una resistencia de 10KΩ a una temperatura de 25°C. Al igual que el proyecto 15 también es un proyecto con el cual vamos a realizar una verdadera medición con unidades de medida específicos.
Termistor NTC 10K
Este es un termistor NTC de 10K encapsulado y contra agua, es bastante preciso. Siendo este de mucha utilidad para cuando existe la necesidad de medir temperatura en líquidos o en ambientes de humedad.
Los termistores NTC o de coeficiente de temperatura negativo disminuyen su resistencia a medida que su temperatura aumenta, mientras que los termistores de coeficiente de temperatura positivo o PTC su resistencia aumenta a medida que aumenta su temperatura.
En el gráfico siguiente vemos la relación entre la resistencia y la temperatura de nuestro termistor, lo primero que notamos es que no es una relación lineal.
Por lo que debemos resolver la ecuación de Steinhart-Hart que nos permite encontrar la relación de la resistencia eléctrica de un semiconductor a diferentes temperaturas. Personalmente tuve un poco de ayuda con esta ecuación.
Al momento de conectarse se debe hacer utilizando una resistencia de 10KΩ en un arreglo pull down.
Especificaciones:
- Voltaje de operación: 3v-5.5v
- Rango de medición: -30°C-120°C
- Exactitud: ± 1 (-10°C/85°C )
- Longitud del cable: 60cm aproximadamente
Componentes
En el este diagrama vemos conectado un terminal del termistor al pin a los 5V del Arduino, el otro terminal del termistor va conectado al pin A0 del Arduino y a su vez a una resistencia de 10KΩ que está conectada al GND.
Código
#include <math.h> void setup() { Serial.begin(115200); } void loop() { int val; double temp; val = analogRead(0); temp = log(((10240000/val) - 10000)); temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * temp * temp ))* temp ); temp = temp - 273.15; Serial.print(temp); Serial.println("°C"); delay(1000); }
Comenzaremos a revisar el código
#include <math.h>
Lo que vemos aquí es que agregamos una librería a nuestro código, #include <math.h>
, esta librería contiene una extensión de operaciones matemáticas, las cuales podríamos hacer muchas operaciones diferentes a las convencionales, como en nuestro caso el logaritmo.
En la función setup:
Serial.begin(11520);
Solo vemos una sola línea en la función setup, Serial.begin(115200)
donde inicializamos la comunicación serial a una velocidad de 115200 baudios, la cual utilizaremos más adelante para ver los valores del termistor por el monitor serial.
Y en la función loop:
int val; double temp; val = analogRead(0); temp = log(((10240000/val) - 10000)); temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * temp * temp ))* temp ); temp = temp - 273.15; Serial.print(temp); Serial.println("°C"); delay(1000);
Comenzamos declarando una variable de tipo entero «val» int val
que utilizaremos más adelante para capturar el valor del termistor. En la siguiente línea declaramos una variable de tipo double double temp
variable que usaremos para hacer todos los cálculos para poder visualizar la temperatura en grados centígrados. Las variables del tipo double son como las de punto flotante, pero con el doble de precisión.
Ahora le asignamos a la variable val lo que leemos desde el puerto A0 val = analogRead(0)
. Las siguientes dos líneas temp = log(((10240000/val) - 10000))
y temp = 1/0.001129148+(0.000234125+(0.0000000876741*temp*temp ))*temp )
son la implementación del la ecuación Steinhart-Hart, que al final nos da la temperatura en grados kelvin, por lo que la siguiente linea temp = temp - 273.15
hacemos la conversión de kelvin centígrados.
Ya en la parte final del código tenemos Serial.print(temp)
donde enviamos por serial el valor de la temperatura y con Serial.println("°C")
donde le ponemos el °C. Para terminar tenemos delay(1000)
donde hacemos una pausa por un segundo y volvemos a repetir el loop.
La Fórmula
Para poder hacer el proyecto recurrí por un poco de ayuda para poder implementar la ecuación de Steinhart-Hart para poder ser utilizada en el proyecto.
Resumen
En esta ocasión utilizaremos el Arduino para registrar las lecturas de un termistor NTC 10KΩ y convertirlas a °C y visualizarlas en el monitor serial del Arduino.