Ya hemos visto en otra entrada cómo usar un sensor que medía a la vez temperatura y humedad, el DHT22. Ahora vamos a analizar otro sensor de temperatura que no requiere de librerías en su programación, al proporcionar una entrada analógica de tensión, similar a la que se obtiene de un potenciómetro o de un sensor LDR.

Es muy sencillo medir la temperatura con el sensor LM35. Además, este sensor es muy pequeñito y se puede poner en cualquier sitio sin que se note.

Cómo funciona el sensor LM35

Basta con dar alimentación de 5 voltios y conectar la pata de la señal a una entrada analógica. Después, es preciso hacer una conversión para que la medida analógica quede transformada en grados centígrados. Es más rápido que el sensor DHT22.

De acuerdo con la hoja de características del sensor (datasheet), vemos que el rango de temperaturas es de -55 ºC a 150ºC. Para la primera medida, el sensor “pone” -550 mV en la entrada analógica de arduino, con la segunda, en la entrada habrá 1500 mV.

Conexionado del sensor

En la siguiente figura vemos el sencillo conexionado del sensor. No obstante, hay que tener cuidado, si se hace incorrectamente se puede dañar el sensor.

sensor LM35

Programación del sensor

La programación es similar a la que vimos en el caso del sensor LDR, teniendo en cuenta un factor de conversión, que vamos a justificar seguidamente.

Pongamos, por ejemplo, que el sensor mide 150ºC. Esto quiere decir que en la entrada analógica hay 1500 mV, es decir, 1,5 V.

Recordemos que en la entrada hay un convertidor analógico-digital que transforma la medida en voltios en un número entre 0 y 1023. El número que obtenemos del conversor es 1,5/5*1023, por lo que para obtener los milivoltios originales (1500) es preciso multiplicar por 5000 y dividir entre 1023. Después, se divide entre 10 (puesto que el sensor da 1ºC/10mV) y se obtienen los grados centígrados. La operación equivale a multiplicar por 500 y dividir entre 1023.

El programa queda así:

float temperatura;
void setup() {
 Serial.begin(9600); //inicializamos monitor serie
}

void loop() {
  temperatura = analogRead(1);
  temperatura = temperatura * 500. / 1023.;
  Serial.println(temperatura); //solo para imprimir en monitor
  delay(500);
}

Suscríbete a nuestra página y recibe gratis un ebook donde explicamos cómo medir velocidades con arduino, con esquemas, fotografías y programas

Desarrollamos un ejemplo de aplicación de la robótica educativa a la física, y adjuntamos también el programa

¡Te has suscrito correctamente!