Sie sind auf Seite 1von 11

FUNDAMENTOS DE ELECTRICIDAD Y MAGNETISMO

Proyecto final

Sensor de temperatura

Diego Andres Camacho Torres 201249

Hector Dario Diaz Ortiz 245001

Edna Rocio Forero Delgado 153597

Olga Rosa Lozano Lozada 201128

Ian Potdevin Afanador 153661

Javier Rivera Acosta 274144

Cesar Duvan Torres Hernandez 201072

Profesor Jaime Villalobos Ph.D

Universidad Nacional de Colombia

Sede Bogot

2012 - I
SENSOR DE TEMPERATURA
1. MARCO TERICO
Un termistor es un sensor resistivo de temperatura. Su funcionamiento se basa en la
variacin de la resistividad que presenta un semiconductor con la temperatura. El trmino
termistor proviene de Thermally Sensitive Resistor. Existen dos tipos de termistor:
NTC (Negative Temperature Coefficient) coeficiente de temperatura negativo
PTC (Positive Temperature Coefficient) coeficiente de temperatura positivo

Son elementos PTC los que la resistencia aumenta cuando aumenta la temperatura, y
elementos NTC los que la resistencia disminuye cuando aumenta la temperatura.
Su funcionamiento se basa en la variacin de la resistencia de un semiconductor con la
temperatura, debido a la variacin de la concentracin de portadores. Para los termistores
NTC, al aumentar la temperatura, aumentar tambin la concentracin de portadores, por
lo que la resistencia ser menor, de ah que el coeficiente sea negativo. Para los
termistores PTC, en el caso de un semiconductor con un dopado muy intenso, ste
adquirir propiedades metlicas, tomando un coeficiente positivo en un margen de
temperatura limitado. Usualmente, los termistores se fabrican a partir de xidos
semiconductores, tales como el xido frrico, el xido de nquel, o el xido de cobalto.
Sin embargo, a diferencia de los sensores RTD, la variacin de la resistencia con la
temperatura es no lineal. Para un termistor NTC, la caracterstica es hiperblica. Para
pequeos incrementos de temperatura, se darn grandes incrementos de resistencia. Por
ejemplo, el siguiente modelo caracteriza la relacin entre la temperatura y la resistencia
mediante dos parmetros:

con

donde:
es la resistencia del termistor NTC a la temperatura T (K)
es la resistencia del termistor NTC a la temperatura de referencia (K)
B es la temperatura caracterstica del material, entre 2000 K y 5000 K.
Por analoga a los sensores RTD, podra definirse un coeficiente de temperatura
equivalente , que para el modelo de dos parmetros quedara:

Puede observarse como el valor de este coeficiente vara con la temperatura. Por
ejemplo, para un termistor NTC con B = 4000 K y T = 25 C, se tendr un coeficiente
equivalente = -0.045 , que ser diez veces superior a la sensibilidad de un sensor
Pt100 con = 0.00385 .
El error de este modelo en el margen de 0 a 50 C es del orden de 0.5 C. Existen
modelos ms sofisticados con ms parmetros que dan un error de aproximacin an
menor.
En la siguiente figura se muestra la relacin tensin corriente de un termistor NTC, en la
que aparecen los efectos del autocalentamiento.

A partir del punto A, los efectos del autocalentamiento se hacen ms evidentes. Un


aumento de la corriente implicar una mayor potencia disipada en el termistor,
aumentando la temperatura de ste y disminuyendo su resistencia, dejando de aumentar
la tensin que cae en el termistor. A partir del punto B, la pendiente pasa a ser negativa.

Caractersticas

Las termorresistencias ms comunes se fabrican de alambres finos soportados por un


material aislante y encapsulado. El elemento encapsulado se inserta dentro de una vaina
o tubo metlico cerrado en un extremo que se llena con un polvo aislante y se sella con
cemento para impedir que absorba humedad.

Diagrama esquemtico de una resistencia termomtrica, o resistencia detectora de temperatura (RTD).


2. MATERIALES

1 x Arduino Uno

1 x Protoboard

1 x NTC 10K

1 x Potencimetro 10k

5 x Diodos LED

5 x Resistencias 220

1 x Resistencia 1K

El sensor utilizado es una resistencia NTC de 10 K.

Marca General Electric. P.N. RL0503-5820-97-MS


Resistencia a 25C= 10.000
Beta= 3900 de 0C a 50C.

Estos datos fueron tomados del Datasheet ofrecido por el fabricante (Ver Anexo).

3. DISEO DEL HARDWARE


El circuito se estructura en tres partes:

Entrada de temperatura ambiente.


Entrada de ajuste mnimo de temperatura.
Salidas.

Entrada de temperatura ambiente.


La manera de conectar la NTC a nuestro circuito va a ser formando un divisor de tensin
con su salida a una entrada analgica, en el que nuestra NTC ser la resistencia inferior,

En cuanto a la otra resistencia que formar el divisor de tensin, utilizaremos una de 1K,
esto es as para aprovechar el rango de muestreo que nos proporciona Arduino con un
consumo de corriente limitado.

Veremos que si la resistencia mxima de nuestra NTC va a ser 10K, y la fija de 1K,
tendremos una variacin de tensin entre 0v y 4,55v.
Entrada de ajuste mnimo de temperatura.
Para tener un mando sobre el que ajustar la temperatura mnima, simplemente
colocaremos un potencimetro dispuesto como divisor de tensin, a una de las entradas
analgicas y utilizaremos su muestreo para mapearlo a nuestro antojo como veremos en
la seccin de programacin.

Salidas.
Para las salidas utilizaremos la ya conocida configuracin de LED ms resistencia.

De manera que el esquema elctrico global nos quedara as:


4. PROGRAMACIN:

/*
SENSOR DE TEMPERATURA NTC
*/
//Aadimos la librera math.h
#include <math.h>
//Pines para los LED
int pinLed1 = 8;
int pinLed2 = 9;
int pinLed3 = 10;
int pinLed4 = 11;
int pinLed5 = 12;
int i=0;
//Pines para las entradas analgicas
int analogPin1 = 0;
int analogPin2 = 1;
//Escala de Avisos
int escala = 2;
//Variable para la temperatura de disparo
double tempMin = 0.0;
//Datos para las ecuaciones
float Vin = 5.0; // [V] Tensin alimentacin del divisor
float Rfija = 1000; // [ohm] Resistencia fija del divisor
float R25 = 10000; // [ohm] Valor de NTC a 25C
float Beta = 3900.0; // [K] Parmetro Beta de NTC
float T0 = 298.15; // [K] Temperatura de referencia en Kelvin
float Vout = 0.0; // [V] Variable para almacenar Vout
float Rntc = 0.0; // [ohm] Variable para NTC en ohmnios
float TempK = 0.0; // [K] Temperatura salida en Kelvin
float TempC = 0.0; // [C] Temperatura salida en Celsius
void setup() {
//Comenzamos la comunicacin puerto serie
Serial.begin(9600);
void config_Stamplot();
//Declaramos pines de salida
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
pinMode(pinLed4, OUTPUT);
pinMode(pinLed5, OUTPUT);
//Y los pines de entrada
pinMode(analogPin1, INPUT);
pinMode(analogPin2, INPUT);
}
void config_StampPlot()
{
//CONFIGURACION STAMP PLOT LITE
// Stamp Plot Software
// http://www.parallax.com/ProductInfo/Microcontrollers/BASICStampSoftware/StampPlotSoftware/tabid/481/Default.aspx
//----------------------------------------------------------
//Titulo de la ventana (FORM)
Serial.print("!TITL proyecto !");
Serial.write(13);
//Titulo de usuario (STATUS)
Serial.print("!USRS Sensor de temperatura");
Serial.write(13);
//Valor maximo del eje Y
Serial.print("!AMAX 50");
Serial.write(13);
//Valor minimo del eje Y
Serial.print("!AMIN 0");
Serial.write(13);
//Valor maximo de tiempo
Serial.print("!TMAX 100");
Serial.write(13);
//Configuro el numero de puntos
Serial.print("!PNTS 500");
Serial.write(13);
//Aadir Tiempo en la lista de mensajes
Serial.print("!TSMP ON");
Serial.write(13);
//Plot ON
Serial.print("!PLOT ON");
Serial.write(13);
//Borra el valor Max y Min almacenado despues del RESET
Serial.print("!CLMM");
Serial.write(13);
//Limpio la lista de mensajes
Serial.print("!CLRM");
Serial.write(13);
//Borro el fichero stampdat.txt
Serial.print("!DELD");
Serial.write(13);
//Borro el fichero stampmsg.txt
Serial.print("!DELM");
Serial.write(13);
//Salvar datos Analogicos y digitales en proyecto.txt
Serial.print("!SAVD ON");
Serial.write(13);
//Salvar Mensajes en proyecto.txt
Serial.print("proyecto.txt");
Serial.write(13);
//RESET DEL GRAFICO PARA COMENZAR A PLOTEAR
Serial.print("!RSET");
Serial.write(13);
//----------------------------------------------------------
}
void loop()
{
i=i+1;
//Primero leemos el pootencimetro
tempMin = analogRead(analogPin2);
//Lo mapeamos a valores de O a 40 grados)
tempMin = map (tempMin, 0, 1023, 0, 400000);
//Y lo dividimos entre 10000 para darle 4 decimales
tempMin = tempMin/10000;
//Y lanzamos el ajuste establecido via serie
Serial.println("-----------------------------------------------");
Serial.println();
Serial.print("AJUSTE DE TEMPERATURA MINIMA A ");
Serial.print(tempMin,4);
Serial.print(" GRADOS CELSIUS");
Serial.println();
Serial.println("-----------------------------------------------");
//Y ahora calculamos la Temperatura
//Primero la Vout del divisor
Vout=(Vin/1024)*(analogRead(analogPin1));
//Ahora la resistencia de la NTC
Rntc=(Vout*Rfija)/(Vin-Vout);
//Y por ltimo la temperatura en Kelvin
TempK = Beta/(log(Rntc/R25)+(Beta/T0));
//Y ahora la pasamos a celsius
TempC = TempK-273.1500;
Serial.print(TempC);
Serial.write(13);
//Envio de cualquier cadena a mostrar
Serial.print("toma numero: ");
Serial.print(i);
Serial.write(13);
//Y lo mostramos por puerto serie
Serial.println();
Serial.print("LA TEMPERATURA DE LA NTC ES DE ");
Serial.print(TempC,4);
Serial.print(" GRADOS CELSIUS");
Serial.println();
//Ahora las comparaciones para las salidas
if(TempC < tempMin)
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
digitalWrite(pinLed4, LOW);
digitalWrite(pinLed5, LOW);
}
else if (((TempC <= (tempMin + escala)) & (TempC > tempMin)))
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, LOW);
digitalWrite(pinLed4, LOW);
digitalWrite(pinLed5, LOW);
}
else if (((TempC<=(tempMin+(escala*2)))&(TempC>tempMin+escala)))
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, HIGH);
digitalWrite(pinLed4, LOW);
digitalWrite(pinLed5, LOW);
}
else if ((TempC<=(tempMin+(escala*3)))&(TempC>tempMin+(escala*2)))
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, HIGH);
digitalWrite(pinLed4, HIGH);
digitalWrite(pinLed5, LOW);
}
else if (TempC > (tempMin + (escala*4)))
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, HIGH);
digitalWrite(pinLed4, HIGH);
digitalWrite(pinLed5, HIGH);
}
//Un pequeo delay para no volver loco al puerto serie
delay(1000);
}

CLCULO DE TEMPERATURA A PARTIR DE LA MEDIDA ANALGICA.

Teniendo en cuenta que el fabricante nos da el valor resistivo para una temperatura en
concreto (en nuestro caso 10000 para 25) y la Beta (3900 entre 0C y 50C) podemos
utilizar la ecuacin que relaciona la resistencia de la NTC y la temperatura para calcular
esta ltima, primero veamos la ecuacin:
Siendo:
Rt = Resistencia a temperatura T en grados Kelvin (k = C + 273,15)
Ro = Resistencia de referencia a una temperatura To en Kelvin.
B = Valor Beta de nuestra NTC.
To = Temperatura de referencia en Kelvin.
T = Temperatura a medir.

Observamos que, si calculamos Rt, tendremos todos los datos para hallar la temperatura
en un valor de resistencia determinado despejando T, veamos la ecuacin despejada que
utilizaremos en nuestro programa:

Bien, ya tenemos la ecuacin para hallar la temperatura, pero nos faltara saber cual es la
resistencia de la NTC, para esto primero calcularemos cual es la tensin de entrada de
nuestra entrada analgica, es decir, la Vout de nuestro divisor de tensin:

Con esto hallamos cuanto vale cada bit de la conversin analgico-digital y lo


multiplicamos por la cantidad de bit que nos lee la entrada analgica, con lo que tenemos
la tensin que le est llegando a la entrada analgica.
Una vez tenemos esto, si recordamos la frmula del divisor de tensin:
Vemos que tenemos todos los datos a excepcin de Rinferior, que es justo la resistencia
de la NTC que necesitamos para calcular la temperatura, por lo que despejando nos
queda:

5. BIBLIOGRAFA

http://mx.mouser.com/ProductDetail/GE-Sensing/RL0503-5820-97-
MS/?qs=Vo7DmvLbx%2f%2firrHChPQeLw%3d%3d RL0503-5820-97-MS

http://www.thermometrics.com/assets/images/ms.pdf NTC THERMISTORS: TYPE MS

http://www.thermometrics.com/assets/images/d9_7a.pdf MATERIAL TYPE: D9.7A

http://www.arduteka.com/ Arduino Uno

Das könnte Ihnen auch gefallen