Sie sind auf Seite 1von 2

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
Serial.begin(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
Serial.print(TempC);
Serial.print(" C (");
Serial.print(TempK);
Serial.println(" K)");

delay(1000);
}

Das könnte Ihnen auch gefallen