En este tutorial, aprenderás cómo usar un LM35 sensor de temperatura analógico con Arduino. He incluido un diagrama de conexiones y códigos de ejemplo para ayudarte a empezar.
En la primera parte de este artículo, encontrarás las especificaciones y el pinout del LM35. Luego, veremos cómo conectar el sensor al Arduino.
El primer ejemplo de código se puede usar para tomar lecturas de temperatura del sensor y mostrar los resultados en el Monitor Serial. En el segundo ejemplo, te mostraré cómo usar la tensión de referencia interna de 1.1 V del Arduino para obtener lecturas más precisas. Por último, veremos cómo mostrar la temperatura en un I2C LCD para crear un termómetro independiente.
Materiales
Componentes de hardware
| LM35 analog temperature sensor (TO-92) | × 1 | Amazon |
| Arduino Uno | × 1 | Amazon |
| Breadboard | × 1 | Amazon |
| Jumper wires | ~ 10 | Amazon |
| 16×2 character I2C LCD | × 1 | Amazon |
| USB cable type A/B | × 1 | Amazon |
Software
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Acerca del LM35
El LM35 es un sensor de temperatura Centígrados de precisión y bajo costo fabricado por Texas Instruments. Proporciona una tensión de salida linealmente proporcional a la temperatura en grados Centígrados y, por lo tanto, es muy fácil de usar con Arduino.
El sensor no requiere calibración externa ni ajuste para ofrecer una precisión de ±0.5°C a temperatura ambiente y ±1°C en el rango de −50°C a +155°C.
Una desventaja del sensor es que necesita un voltaje de polarización negativo para medir temperaturas bajo cero. Si eso es necesario para tu proyecto, te recomiendo usar el DS18B20 o el TMP36. El TMP36 de Analog Devices es muy similar al LM35 y puede medir temperaturas desde -40°C hasta 125°C sin componentes externos.
Puedes encontrar un tutorial dedicado para el TMP36 y DS18B20 aquí:
- TMP36 analog temperature sensor with Arduino tutorial
- The complete guide for DS18B20 digital temperature sensors with Arduino
El factor de escala de salida del LM35 es 10 mV/°C y proporciona una tensión de salida de 250 mV a 25°C (ver figura abajo).

Ten en cuenta que el sensor funciona en un rango de tensión de 4 a 30 V y que la tensión de salida es independiente de la tensión de alimentación.
El LM35 forma parte de una serie de sensores de temperatura analógicos vendidos por Texas Instruments. Otros miembros de la serie incluyen:
- LM335 – tensión de salida directamente proporcional a la temperatura absoluta a 10 mV/°K.
- LM34 – tensión de salida linealmente proporcional a la temperatura en Fahrenheit a 10 mV/°F.
Pinout del LM35
El LM35 viene en 4 tipos de encapsulados, pero el más común es el transistor de 3 pines en encapsulado TO-92.

El pinout del sensor es el siguiente:

Ten en cuenta que el pin 1 (+V S ) es el pin más a la izquierda cuando el lado plano del sensor (con el texto impreso) está mirando hacia ti.
| Nombre | Pin | Descripción |
|---|---|---|
| +V S | 1 | Pin de alimentación positiva (4 – 30 V) |
| V OUT | 2 | Salida analógica del sensor de temperatura |
| GND | 3 | Pin de tierra del dispositivo, conectar al terminal negativo de la fuente de alimentación |
Puedes encontrar las especificaciones del LM35 en la tabla a continuación.
Especificaciones del sensor de temperatura analógico LM35
| Tensión de alimentación | 4 V a 30 V |
| Corriente de operación | 60 µA |
| Rango de temperatura | -55°C a +155°C |
| Precisión garantizada | ±0.5°C a +25°C ±1°C de -55°C a +150°C |
| Factor de escala de salida | 10 mV/°C |
| Tensión de salida a 25°C | 250 mV |
| Auto-calentamiento | <0.1°C en aire quieto |
| Encapsulado | TO-92 de 3 pines |
| Fabricante | Texas Instruments |
Para más información, también puedes consultar la hoja de datos aquí:
Conexiones – Cómo conectar el sensor de temperatura analógico LM35 al Arduino
Conectar un LM35 al Arduino es muy sencillo, solo necesitas conectar 3 pines. Comienza conectando el pin +V S al pin de 5 V del Arduino y el pin GND a tierra.
Luego, conecta el pin central (V OUT ) a cualquiera de las entradas analógicas del Arduino. En este caso, usé el pin analógico A0.

Las conexiones también se muestran en la tabla a continuación:
Conexiones del sensor de temperatura analógico LM35
| LM35 | Arduino |
|---|---|
| Pin 1 (+V S ) | 5 V |
| Pin 2 (V OUT ) | Pin A0 |
| Pin 3 (GND) | GND |
Convertir la tensión de salida del LM35 en temperatura
Para convertir la tensión de salida del sensor en temperatura en grados Celsius, puedes usar la siguiente fórmula:
Temperatura (°C) = V OUT / 10
donde V OUT está en milivoltios (mV). Así que si la salida del sensor es 750 mV, la temperatura es 75°C.
Como ves en el diagrama de conexiones arriba, la salida del LM35 está conectada a una de las entradas analógicas del Arduino. El valor de esta entrada analógica se puede leer con la función analogRead(). Sin embargo, esta función no devuelve directamente la tensión de salida del sensor.
Las placas Arduino contienen un convertidor analógico a digital (ADC) multicanal de 10 bits, que mapea tensiones de entrada entre 0 y la tensión de operación (5 V o 3.3 V) en valores enteros entre 0 y 1023. En un Arduino Uno, por ejemplo, esto da una resolución entre lecturas de 5 voltios / 1024 unidades, o 0.0049 voltios (4.9 mV) por unidad.
Así que si usas analogRead() para leer la tensión en una de las entradas analógicas del Arduino, obtendrás un valor entre 0 y 1023.
Para convertir este valor de nuevo en la tensión de salida del sensor, puedes usar:
V OUT = lectura del ADC * (Vref / 1024)
Usaremos estas fórmulas en los ejemplos de código a continuación.
Ejemplo de código para el sensor de temperatura analógico LM35 con Arduino
Con el siguiente código de ejemplo, puedes leer la temperatura de un sensor LM35 y mostrarla en el Monitor Serial.
/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (5000 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
delay(1000); // wait a second between readings
}
Deberías ver la siguiente salida en el Monitor Serial:

Asegúrate de que la velocidad en baudios del Monitor Serial también esté configurada a 9600.
Cómo funciona el código
Primero, definí a qué pin del Arduino está conectado el pin V OUT del sensor. En este caso, usamos el pin analógico A0. La instrucción #define se usa para dar un nombre a un valor constante. El compilador reemplazará todas las referencias a esta constante con el valor definido cuando se compile el programa. Así que donde menciones sensorPin, el compilador lo reemplazará por A0 al compilar el programa.
// Define to which pin of the Arduino the output of the LM35 is connected: #define sensorPin A0
En la sección setup del código, iniciamos la comunicación serial a una velocidad de 9600 baudios.
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
}
En la sección loop del código, comenzamos tomando una lectura del sensor con la función analogRead(pin).
// Get a reading from the temperature sensor: int reading = analogRead(sensorPin);
Luego, usamos las fórmulas que mencioné antes en el artículo para convertir la lectura en voltaje y luego en temperatura.
// Convert the reading into voltage: float voltage = reading * (5000 / 1024.0); // Convert the voltage into the temperature in degree Celsius: float temperature = voltage / 10;
Por último, los resultados se imprimen en el Monitor Serial:
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
Mejorar la precisión de las lecturas
Como usamos la tensión de referencia por defecto del Arduino para la entrada analógica (es decir, el valor usado como el máximo del rango de entrada), la máxima resolución que obtenemos del ADC es 5000/1024 = 4.88 mV o 0.49°C.
Si queremos mayor precisión, podemos usar la referencia interna de 1.1 V del Arduino. Esta tensión de referencia se puede cambiar usando la función analogReference().
Con 1.1 V como tensión de referencia, obtenemos una resolución de 1100/1024 = 1.07 mV o 0.11°C. Ten en cuenta que esto limita el rango de temperatura que podemos medir a 0 a 110 grados Celsius.
He resaltado las líneas que necesitas añadir o cambiar en el código a continuación:
/* LM35 analog temperature sensor with Arduino example code. More info: https://www.makerguides.com */
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Begin serial communication at a baud rate of 9600:
Serial.begin(9600);
// Set the reference voltage for analog input to the built-in 1.1 V reference:
analogReference(INTERNAL);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (1100 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature in the Serial Monitor:
Serial.print(temperature);
Serial.print(" \xC2\xB0"); // shows degree symbol
Serial.println("C");
delay(1000); // wait a second between readings
}

Ejemplo de código LM35 con LCD I2C y Arduino
Si quieres hacer un termómetro independiente que no necesite un ordenador, puede ser útil saber cómo mostrar las lecturas de temperatura en una pantalla LCD.
Con el código de ejemplo a continuación, puedes mostrar las lecturas de temperatura en un 16×2 character I2C LCD.
Conectar el LCD I2C es bastante fácil como ves en el diagrama de conexiones abajo. Puedes consultar mi tutorial detallado sobre How to control a character I2C LCD with Arduino para más información. Si quieres usar un LCD estándar sin I2C, echa un vistazo a How to use a 16×2 character LCD with Arduino.

Las conexiones también se muestran en la tabla a continuación:
Conexiones del LCD I2C
| LCD de caracteres I2C | Arduino |
|---|---|
| GND | GND |
| VCC | 5 V |
| SDA | A4 |
| SCL | A5 |
Ten en cuenta que el sensor de temperatura LM35 está conectado igual que antes.
Instalación de las librerías necesarias para Arduino
Para usar un LCD I2C, necesitas instalar la librería LiquidCrystal_I2C de Arduino.
Para instalar esta librería, ve a Tools > Manage Libraries (Ctrl + Shift + I en Windows) en el IDE de Arduino. Se abrirá el Gestor de Librerías y actualizará la lista de librerías instaladas.

Ahora busca ‘liquidcrystal_i2c’ y busca la librería de Frank de Brabander . Selecciona la última versión y luego haz clic en Install.

Ejemplo de código LM35 con LCD I2C
/* LM35 analog temperature sensor with I2C LCD and Arduino example code.
https://www.makerguides.com */
// Include the required Arduino libraries:
#include "LiquidCrystal_I2C.h"
// Create a new instance of the LiquidCrystal_I2C class:
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Degree symbol:
byte Degree[] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};
// Define to which pin of the Arduino the output of the LM35 is connected:
#define sensorPin A0
void setup() {
// Start the LCD and turn on the backlight:
lcd.init();
lcd.backlight();
// Create a custom character:
lcd.createChar(0, Degree);
}
void loop() {
// Get a reading from the temperature sensor:
int reading = analogRead(sensorPin);
// Convert the reading into voltage:
float voltage = reading * (5000 / 1024.0);
// Convert the voltage into the temperature in degree Celsius:
float temperature = voltage / 10;
// Print the temperature on the LCD;
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(temperature);
lcd.write(0); // print the custom character
lcd.print("C");
delay(1000); // wait a second between readings
}
Deberías ver la siguiente salida en el LCD:

Conclusión
En este tutorial, te he mostrado cómo usar un sensor de temperatura analógico LM35 con Arduino. Si quieres aprender más sobre otros sensores de temperatura, consulta los artículos a continuación.
- The complete guide for DS18B20 digital temperature sensors with Arduino
- How to use DHT11 and DHT22 sensors with Arduino
- TMP36 analog temperature sensor with Arduino tutorial
- How to control a character I2C LCD with Arduino
Si tienes alguna pregunta, sugerencia o crees que falta algo en este tutorial, por favor deja un comentario abajo.

