Está en la página 1de 5

Tutorial: Cmo utilizar un LM35 para medir la temperatura en la escala centgrada total

Muchas personas (me incluyo) que compran la primera vez que un LM35, lo hacen porque estn
motivados por lo fcil que es para interconectarse con arduino, de hecho es as, pero luego resulta
que la nica alimentacin integrada es con 0 y 5 V, se puede medir slo temperaturas positivas y
no en toda la gama (-50 C a +150 C), dando a luz a la desesperacin por no haberse
documentado antes.
Sin embargo, en la ficha tcnica son dos formas de obtener incluso temperaturas negativas, la
primera es proporcionar un doble voltaje de modo que pueda dar tensiones de salida negativa
integrados cuando las temperaturas son bajo cero. Este modo es bastante incmodo porque
tienes que tener una fuente de alimentacin doble y luchas con el hecho de que solo el Arduino
no puede medir voltajes negativos.
El segundo camino a seguir (que nos har felices) es aadir dos diodos y una resistencia, a fin de
mover la masa de la IC, la operacin se describe por los puntos y lneas siguientes:
Los dos diodos conectados en serie entre el GND de la LM35 y el suministro GND
proporcionan una tensin fija de alrededor de 0.960 V a temperatura ambiente; (Revisar
diagrama)
Cuando la temperatura es de 0 C, la salida del sensor ser igual a la cada de tensin a
travs del diodo;
Cuando la temperatura es inferior a cero la salida del LM35 ser un voltaje menor que la
cada de tensin a travs del diodo;
Cuando la temperatura est por encima de cero, la salida del LM35 ser una tensin ms
alta que la cada de tensin a travs del diodo;
La informacin que contiene el valor de temperatura est contenido en la diferencia entre la
clavija OUT y GND del sensor.
Si la cada de voltaje a travs de los dos diodos fuera constante, sera suficiente un nico pasador
de Arduino para medir la temperatura, por desgracia, no siempre es de 0.960V, pero depende de
la temperatura a la que se encuentran los diodos y tambin depende de la temperatura a la que el
sensor se encuentra .
Por esta razn, es necesario disponer de una medida de ambas clavijas del sensor con el fin de
calcular la temperatura correcta. Por ejemplo:
A una temperatura de 21,5 C tiene:
VOUT = 1.175V
VGND = 0.960V
Lo que se resta: 0.215V
Si multiplico por 100 me sale el valor en grados Celsius.
La sensibilidad del sensor es de 10 mV / C, si queremos aadir un poco de resolucin de la
medida es necesario amplificar la seal por medio de un amplificador operacional, ya que el
Arduino tiene aproximadamente 4,9 mV de resolucin.
La configuracin que utilic es la ganancia no inversora que por lo siguiente:

As que basado en las resistencias que tena en casa he utilizado:
R2 = 56 k;
R1 = dos resistencias de 18 k en serie;
Produciendo una ganancia de alrededor de 2,56.
Usted puede obtener diferentes beneficios con diferentes combinaciones de resistencias, es
importante luego introduzca el valor de ganancia correcta en el cdigo.



Los componentes:
Cantidad Nombre Descripcin
1
LM35DZ
Sensor de temperatura
integrado
1
LM358N
Amplificador operacional dual,
impulsado 0-5V
2
1N4148
Diodos Rpidos (no se adaptan
al 1N400X)
1
C = 4.7F
Condensador electroltico (no
esencial)
2
R2 = R4 = 56k Resistencia de 56k
5 Resistencia de 18k
- R5 = 18k
- R1 = 36 k

- R3 = 36 k


Dos resistencias de 18k
Conectadas en serie
Dos resistencias de 18k
Conectadas en serie


Los clculos que tiene que ver Arduino para hacer la conversin son los siguientes:
Marcando la diferencia de los dos valores medidos (VOUT_LM35 - VGND_LM35)
Multiplicar la diferencia por 100
Divida por la ganancia del amplificador (2.56)
Multiplique por la resolucin de los pines analgicos del Arduino (5/1024)
El cdigo que he escrito es la suma de diez mediciones, uno cada 500 milisegundos, despus de lo
cual se calcula un promedio y el valor de la temperatura en grados Celsius que escribe acerca de la
serie de estos tres valores, que aparecer despus de 5 segundos.
Obviamente, estos valores pueden variar a voluntad.
El cdigo:
/* ----------------LM35 a lo largo de la escala centigrada---------------
La configuracin que se utiliza es la que tienen dos diodos entre el pin GND y el GND de la
alimentacin del sensor.
Dos seales que son captadas irn a dos entradas analgicas del Arduino:
- El primer pin GND del LM35 llamados "ref"
- El segundo pin OUT del LM35 denominado "sensor deTemperatura"
La diferencia entre "sensor de Temperatura" y "REF" es que contiene informacin acerca de la
temperatura que el sensor ha medido
creado 27 de febrero 2010
por Frederick Vanzati
* /
#define LM35_TEMP 0 // Pin analogico 0
#define LM35_REF 1 // Pin analogico 1
float temperatura; // la variable donde se guarda la temperatura en grados Celsius
float prev_temperatura = 0; // temperatura anterior
int ref; // valor de la tensin de referencia de los dos diodos
int ref_medio = 0; // valor de la tensin de referencia promedio
int sensoreTemperatura; // valor de la tensin leda desde el pin OUT del sensor
int sensoreTemperatura_medio = 0; // valor promedio del sensor de temperatura
int cont; // contador utilizado para obtener un valor promedio
void setup()
{
Serial.begin(9600); // inicializacin de la comunicacin en serie }
void loop()
{
// se suman 10 valores de temperatura a continuacin, hacen que el promedio
for( cont = 0; cont < 10; cont++)
{
sensoreTemperatura = analogRead(LM35_TEMP); // lectura del voltaje del pin OUT
LM35
sensoreTemperatura_medio += sensoreTemperatura; //Sumatoria de los valores de
ref = analogRead(LM35_REF); // lectura de la tensin de referencia
ref_medio += ref; // sumatoria de los valores de
delay(500); // intervalo de muestreo
//la lectura tendr una duracin de 10 (nmero de muestras) x 500ms (intervalo entre dos
muestras) = 5000ms
}
if(cont == 10) // despus de la suma se realiza los diez valores muestreados:
{
cont = 0; //Ajuste del contador, para poner en marcha el prximo muestreo
// Promedio de la suma de los diez valores muestreados de ref y del sensor de
temperatura
sensoreTemperatura_medio = sensoreTemperatura_medio / 10;
ref_medio = ref_medio / 10;
// conversin de los valores promedio de una temperatura en grados Celsius
temperatura = (sensoreTemperatura_medio - ref_medio) * 100/2.56;
temperatura = temperatura * 5/1024;
// valor de la temperatura que se muestra cuando se encuentra en el proceso de
toma de muestras
// no hay una temperatura disponible
prev_temperatura = temperatura;
// impresin en dos valores promedio en serie
Serial.print(" ref_medio: ");
Serial.print(ref_medio);
Serial.print(" temp_medio: ");
Serial.print(sensoreTemperatura_medio);
// antes de una adquisicin y medida posterior debern hacer referencia a estos
valores
sensoreTemperatura_medio = 0;
ref_medio = 0;
}
else{
temperatura = prev_temperatura;
}
// medicin de la temperatura en grados celcius.
Serial.print(" gradi: ");
Serial.println(temperatura);
}