Conectar LM35 al ESP32


En este post aprenderemos a conectar el sensor LM35 a un puerto ADC del ESP32 para poder leer y mostrar la temperatura por la consola

Conectar LM35 al ESP32
oscar Escrito por oscar 12 August 2025 30 0

El ESP32 es un microcontrolador con WiFi y Bluetooth integrado, muy potente y con entradas ADC (convertidor analógico-digital) que permiten leer voltajes y convertirlos en valores numéricos. El LM35 es un sensor de temperatura analógico cuya salida es directamente proporcional a la temperatura en grados Celsius: 10 mV/°C.

En este post aprenderemos a conectar el sensor LM35 a un puerto ADC del ESP32 para poder leer y mostrar la temperatura por la consola.

Prerequisitos

Proyecto Descripción
Conversor análogo a digital Este post proporciona una breve panorámica del procesamiento digital de la señal, donde vamos a centrarnos principalmente en las características del sistema ideal y también mencionaremos algunos métodos de conversion A/D.
LM35 datasheet En este post encontrara la hoja de datos del lm35, describimos el elementos, sus características y la forma de conexión
analogRead() Contienen un convertidor de analógico a digital multicanal de 10 bits. Esto significa que mapeará voltajes de entrada entre 0 y el voltaje de operación (5V o 3.3V) en valores enteros entre 0 y 1023.

Conversión análogo a digital

He creado un post completo en donde realizamos la explicación de Conversor análogo a digital, damos los conceptos básicos y el paso a paso teórico en donde mostramos como de una señal análoga creamos los valores digitales, recomiendo leer un poco de este tema antes de continuar.

🔹 ESP32

Puede revisar los pines y caracteristicas adicionales del ESP32 en si Hoja de dato esp32

Pines esp32
Pines esp32

🧠 ¿Qué son los pines analógicos en el ESP32?

El ESP32 cuenta con 18 entradas analógicas distribuidas en dos ADCs (ADC1 y ADC2). Puedes usar cualquiera de los siguientes pines para leer valores analógicos:

Pines ADC1 (recomendados):

  • GPIO 32
  • GPIO 33
  • GPIO 34
  • GPIO 35
  • GPIO 36
  • GPIO 39

LM35

  • El LM35 mide la temperatura interna y genera una señal de salida analógica (tensión continua).
  • La relación es 10 mV por cada °C.
  • Ejemplo:
    • 25 °C → 250 mV
    • 100 °C → 1 000 mV (1 V)

Para mas detalles, tenemos la hoja de datos de este componente para que tambien le den un repaso antes de seguir con el circuito.

Pines LM35
Pines LM35

Componentes necesarios

Componente Cantidad Descripción
ESP32 1 Placa de desarrollo (DOIT DevKit V1, NodeMCU-32S, etc.)
Sensor LM35 1 Sensor de temperatura analógico
Protoboard 1 Para montar el circuito sin soldar
Cables jumper 3 Macho-macho
Capacitor 100 nF (opcional) 1 Entre salida y GND para filtrar ruido

Conexión LM35 con ESP32

El ESP32 funciona con 3.3V lógicos, pero su ADC puede leer hasta 3.3V en la entrada. Como el LM35 genera 10 mV/°C, incluso a 150°C serían solo 1.5V, así que no hay problema.

Conexión:

LM35 ESP32
Vcc 3V3
GND GND
Vout GPIO34 (ADC1_CH6)

⚠️ Usamos un pin ADC recomendado como GPIO34, 35, 36 o 39, ya que son solo de entrada y no generan conflictos.

Conexión ESP32 lm35
Conexión ESP32 lm35

Esquema básico:

LM35      ESP32
(1) Vcc → 3.3V
(2) Vout → GPIO34
(3) GND → GND

(Si quieres estabilidad, coloca un capacitor de 100 nF entre Vout y GND)

Código para ESP32 (Arduino IDE)

// Pin donde conectamos el LM35
const int pinLM35 = 34; // GPIO34 (entrada ADC)

// Resolución ADC del ESP32
const float VREF = 3.3;   // Voltaje de referencia del ADC
const int ADC_RES = 4095; // Resolución de 12 bits (0-4095)

void setup() {
  Serial.begin(115200);
}

void loop() {
  // Leer valor ADC
  int lecturaADC = analogRead(pinLM35);

  // Convertir a voltaje
  float voltaje = (lecturaADC * VREF) / ADC_RES;

  // Convertir voltaje a temperatura
  float temperaturaC = voltaje * 100.0; // LM35: 10mV = 0.01V por °C

  // Mostrar resultados
  Serial.print("ADC: ");
  Serial.print(lecturaADC);
  Serial.print(" | Voltaje: ");
  Serial.print(voltaje, 3);
  Serial.print(" V | Temp: ");
  Serial.print(temperaturaC, 2);
  Serial.println(" °C");

  delay(1000); // Esperar 1 segundo
}

Explicación del código

  • pinLM35 → define el pin GPIO34 como entrada ADC.
  • VREF y ADC_RES → valores para calcular el voltaje real leído.
  • analogRead() → obtiene un valor entre 0 y 4095 (resolución de 12 bits en ESP32).
  • Conversión:
    • lecturaADC → voltaje usando regla de tres: Voltaje = (lecturaADC×VREF) / ADC_RESVoltaje
    • voltaje → temperatura multiplicando por 100 (porque 1°C = 0.01 V).
  • Se envían los valores por Serial Monitor para ver en tiempo real.

Resultado esperado

En el Serial Monitor (115200 baudios) deberías ver algo así:

ADC: 315 | Voltaje: 0.254 V | Temp: 25.40 °C
ADC: 317 | Voltaje: 0.256 V | Temp: 25.60 °C
ADC: 320 | Voltaje: 0.258 V | Temp: 25.80 °C

Si calientas el sensor con los dedos o acercas una fuente de calor, el voltaje y la temperatura subirán gradualmente.


Comentario

Debe aceptar antes de enviar