0% encontró este documento útil (0 votos)
24 vistas2 páginas

Termistor NTC y Arduino: Medición de Temperatura

El documento presenta las ecuaciones teóricas necesarias para calcular la temperatura a partir de los valores de resistencia de un sensor NTC, incluyendo la ecuación de Steinhart-Hart. También describe un programa de Arduino que implementa estas ecuaciones para medir la temperatura en grados Celsius y Kelvin usando un sensor NTC y mostrar los resultados por el puerto serie. El programa primero calcula los parámetros beta e Rinf y luego usa estas constantes junto con los valores medidos de resistencia y tensión para calcular continuamente la temperatura.

Cargado por

Ram Rsl
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas2 páginas

Termistor NTC y Arduino: Medición de Temperatura

El documento presenta las ecuaciones teóricas necesarias para calcular la temperatura a partir de los valores de resistencia de un sensor NTC, incluyendo la ecuación de Steinhart-Hart. También describe un programa de Arduino que implementa estas ecuaciones para medir la temperatura en grados Celsius y Kelvin usando un sensor NTC y mostrar los resultados por el puerto serie. El programa primero calcula los parámetros beta e Rinf y luego usa estas constantes junto con los valores medidos de resistencia y tensión para calcular continuamente la temperatura.

Cargado por

Ram Rsl
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Conceptos tericos

Ahora lo nico que nos falta es un poco de teora para obtener el valor de la temperatura.
Atendiendo a las ecuaciones que describen el comportamiento de las NTC

Ecuacin de las NTC

Parametro B

y con la ecuacin que describe un divisor de tensin

Salida de un divisor de tensin

Podemos obtener el valor de la temperatura, mediante la ecuacin de Steinhart-Hart

Ecuacin de la temperatura

Parmetro Rinf

Cdigo Arduino
Por ltimo, y no por ello menos importante, nos faltara por desarrollar un pequeo programa para
nuestroArduino para implementar todas estas ecuaciones.

Este programa en una primera instancia, calcular los coeficientes necesarios para los valores que
hayamos incluido en la cabecera, como las temperaturas y resistencias medidas para la calibracin
as como el valor de la resistencia auxiliar utilizada en el divisor de tensin entre otros.

La salida sera el valor de la temperatura en grados centgrados o celsius [C] y en grados Kelvin [K]
a travs del puerto serie.
#include <stdio.h>
#include <math.h>
int analogPin=0; // Which pin will be the input of the Voltage-Divider

float Vin=5.0; // [V] Supply voltage in the Voltage-Divider


float Raux=10000; // [ohm] Secondary resistor in the Voltage-Divider
float R0=10000; // [ohm] NTC nominal value at 25C
float T0=293.15; // [K] (25C)

float Vout=0.0; // [V] Voltage given by the Voltage-Divider


float Rout=0.0; // [ohm] Current NTC resistance

float T1=273; // [K] Temperature at first testing point


float T2=373; // [K] Temperature at second testing point
float RT1=19750; // [ohms] Resistance at 273K (0C)
float RT2=2150; // [ohms] Resistance at 373K (100C)

float beta=0.0; // [K] Beta parameter


float Rinf=0.0; // [ohm] Rinf parameter
float TempK=0.0; // [K] Temperature output in Kelvin
float TempC=0.0; // [C] Temperature output in Celsius

void setup() {
//Serial port configuration
[Link](9600);

//Input pin configuration


pinMode(analogPin, INPUT);

//Global parameters calculation


beta=(log(RT1/RT2))/((1/T1)-(1/T2));
Rinf=R0*exp(-beta/T0);
}

void loop()
{

//Current NTC resistance value calculation (through Vout)


Vout=Vin*((float)(analogRead(analogPin))/1024.0);
Rout=(Raux*Vout/(Vin-Vout));

//Temperature calculation
TempK=(beta/log(Rout/Rinf));
TempC=TempK-273.15;

//Data population
[Link](TempC);
[Link](" C (");
[Link](TempK);
[Link](" K)");

delay(1000);
}

También podría gustarte