Skip to content

Midiendo temperatura con LM35 y Pingüino (o Arduino)

febrero 12, 2012

Interactuar con el mundo real es una de los puntos fuertes de los microcontroladores. Una de las maneras de hacerlo es tomando una medida analógica que represente una magnitud real. En este caso, mediremos temperatura usando un pequeño integrado, el famoso LM35 (datasheet). Es el mismo que utilicé en mi proyecto Templogger.

La conexión con nuestra placa es muy sencilla, pero hay un pequeño detalle importante. Veamos cómo se ve en una protoboard:

Ese detalle importante del que hablo es la resistencia. Conecta el pin Vout del LM35 (el que da la tensión de salida) con GND (masa). Su función es estabilizar la señal, y sus valores pueden estar entre 10 y 100 kΩ.

Este circuito en particular funcionará únicamente con temperaturas sobre 0, por lo que sirve para proyectos en un interior (o en exterior en zonas cálidas). Si queréis poder medir temperaturas bajo 0, hay circuitos en su hoja de datos.

Para leer los datos, tanto Pingüino como Arduino tienen una orden muy simple:

analogRead(pin);

que nos devolverá un valor entre 0 y 1024 directamente proporcional a la tensión recibida.
Mirando la hoja de datos del sensor, vemos que por cada ºC, la tensión en el pin Vout aumenta 10mV, por lo que para dar los 5V máximos (que corresponderían a una lectura de 1024) necesitaríamos 500ºC, lo que no vamos a alcanzar (el sensor se fundiría antes :D).
Por tanto, mediante una regla de 3, calculamos la operación de conversión desde el valor que leemos en el pin, hasta la temperatura real, y tenemos:

temperatura = lectura * 500/1024

Pero queremos un número con decimales (flotante), por lo que añadimos esa “petición” al código:

temperatura = (float) lectura * 500/1024

Si quisiéramos conseguir mayor precisión, podríamos utilizar voltajes de referencia, lo que nos ayudaría a tener un rango de temperatura menor ganando en calidad de lectura. Pero para una aplicación usual no es necesario tanto (con el método utilizado tenemos una precisión aproximada de ~0.5ºC).
Por último, utilizamos una pantalla lcd para mostrar los resultados, quedando el circuito completo así:

Y ahora escribimos todo el código, lo compilamos, lo cargamos en nuestro micro, y listo!

int lectura;
float temperatura;
void setup()
{
	char i=0;
	pinMode(13,INPUT); //Usaremos el pin 13 como entrada analógica

	for (i=0;i	{
	pinMode(i,OUTPUT);
	}

	lcd(9,8,0,1,2,3,0,0,0,0); // RS, E, D4 ~ D8
	lcd.begin(2, 0);
	lcd.clear();
	lcd.print("Lector LM35");
	lcd.setCursor(0,1);
	lcd.print("elelectronlibre");
	delay(1000);
}

void loop()
{
	char i=0;
	temperatura =0;
	lectura =0;
	for(i=0;i	{
	lectura = lectura + analogRead(13);
	delay(100);
	}
	lectura = lectura / 5;
	temperatura = (float) lectura * 500 / 1024;
	lcd.clear();
	lcd.printf("T = %f.2",temperatura);
	lcd.printf("Lectura: %d",lectura);
	delay(500);
}

Saludos!

Anuncios
6 comentarios
  1. Raven permalink

    hola apenas acabo de comenzar con esto del proyecto pinguino, me arme tu diseño =D funciona, me intereso mucho esto de medir temperaturas y mostrarlas en un lcd, pero cuando estoy tratando de compilar el codigo que esta arriba me tira un monton de errores y sinceramente apenas estoy comenzando asi que no se como corregirlos… si pudieras ayudarme con esto O_o

  2. jorg permalink

    por que antes de imprimir en el lcd la lectura la divides entre 5?

    • olameu permalink

      Acabo de pasar buscando información y no he probado nada en mi arduino pero…
      …ese 5 me parece que tiene que ver con el “for” que hay antes y que parece incompleto 😦

      Parece querer tomar la media de 5 lecturas 😉

  3. jorg permalink

    QUEES LO QE LE CONECTASTE AL LCD?

  4. Setneuf permalink

    Hola, oye se puede utilizar cualquier tipo de pantalla lcd para el arduino??

  5. antonysama permalink

    como se haria no solo para sensar la temperatura sino que tambien para controlarla (termostato)? trabajo en un proyecto de una incubadora.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: