martes, 5 de noviembre de 2013

Sensor de temperatura con LM35 y arduino

En esta ocasión usted podrá encontrar el montaje correspondiente a un sensor de temperatura implementado con un sensor lineal LM35, para esta aplicación se usa la conversión análoga digital de 10 bits, y se hace un arreglo de resolución por la pérdida que se presenta al realizar la conversión.
Primero se debe entender que el LM35 aumenta 10 mV por cada grado que sense, significa que en el caso que en la salida del sensor se obtengan 355 mV esto equivale a 35,5°C.

          XT * 1°C 
T(°C) =  --------- 
            10mV    

Donde XT es la temperatura que es medida en la salida del sensor. Una vez realizada la conversión se verifica la cantidad que toma la variable en el arduino por medio del ADC, el valor se obtiene de la siguiente fórmula:

         Vref( + ) - Vref( - ) 
Resol =  --------------------- 
                   n           
                  2            
Para este caso en específico el Vref+=5V, Vref-=0, n=10, aplicando los valores se obtiene una resolución de 4,8 mV por bit.

          T(mV) * 1bit 
Valor =   ------------ 
              4,8mV    

Aquí la temperatura en mV se toma como 355 mV para dar continuación al ejemplo, aplicando la fórmula se obtiene un valor de 73.95, este valor dista de lo que se quiere mostrar, así que se debe encontrar una ecuación que satisfaga la conversión, se plantea la siguiente:

     Tout 
x =  ---- 
      Tin 

Donde "x" es la cantidad por la que se debe dividir la salida para el arreglo de resolución, también se debe considerar que se trabaja con números enteros,razón de peso para realizar aproximaciones, con las aproximaciones la variable de temperatura de salida se puede hallar con:

         Tmedida      
Tout = ( -------) - 1 
            2         


Puede descargar los esquemas y el programa en el link:


El resultado del código y el montaje debe ser el siguiente:

  
Código:

#include <LiquidCrystal.h>

int sensor=A0;// EL sensor de temperatura debe conectarse a A0
int temp; //variable para guardar temperatura

LiquidCrystal Pantalla(0,1,2,3,4,5);//(RS,E,D4,D5,D6,D7)

void setup()
{
  Pantalla.begin(16,2);// 16 caracteres 2 líneas
  Pantalla.setCursor(0,0);
  
}
void loop()
{
    Pantalla.clear();
    Pantalla.print("  Temperatura   ");
    Pantalla.setCursor(5,1);
    temp=analogRead(A0);// Lectura del conversor análogo digital
    temp=(temp/2)-1;//arreglo de variable por resolución
    Pantalla.print(temp);
    delay(100);
    
}