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.

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); }