Conectar LM35 a Raspberry pi pico


Aprende a conectar LM35 a Raspberry pi pico y usa el ADC para leer el valor de este sensor de temperatura

Conectar LM35 a Raspberry pi pico
oscar Escrito por oscar 13 August 2025 25 0

La Raspberry Pi Pico es una placa con el microcontrolador RP2040, que tiene entradas ADC de 12 bits para leer señales analógicas. El LM35 entrega un voltaje proporcional a la temperatura (10 mV/°C).

Podemos usar el ADC de la Pico para leer ese voltaje y calcular la temperatura en grados Celsius fácilmente.

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.

Instalación y configurar el entono de trabajo

Configurar entorno de trabajo

Para trabajar con este post debemos tener el entorno de trabajo instalado y configurado, ademas del firmware cargado a la raspberry pi pico, en el post instalar entorno de trabajo, explico a detalle como se hace, aunque voy a dar la explicación resumida a continuación.

Configurar para uso en raspberry pi pico

Antes de realizar el primer programa y cargarlo a la tarjeta, debemos realizar la configuración de thonny y cargar el firmware a la tarjeta raspberry pi pico, en post instalar entorno de trabajo tambien se explica a detalle como se debe hacer esta configuración.

Selector de interprete MicroPython
Selector de interprete MicroPython

Raspberry pi pico

Tenemos una imagen que se ha obtenido de la hoja de datos de las raspberry pi pico. Mas informacion en http://codigoelectronica.com/blog/hoja-de-datos-raspberry-pi-pico

Pineas raspberry pi pico
Pineas raspberry pi pico

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
Raspberry Pi Pico 1 Versión estándar (no Pico W) o Pico W si quieres WiFi
Sensor LM35 1 Sensor de temperatura analógico
Protoboard 1 Para conexiones sin soldadura
Cables jumper 3 Macho-macho
Capacitor 100 nF (opcional) 1 Entre salida y GND para filtrar ruido

Conexión LM35 con Raspberry Pi Pico

La Pico funciona con 3.3 V lógicos y su ADC acepta voltajes de 0 V a 3.3 V.
Como el LM35 produce máximo 1.5 V a 150 °C, no hay problema de sobrevoltaje.

Conexión recomendada:

LM35 Pico
Vcc 3V3 (pin 36)
GND GND (pin 38)
Vout GP26 (ADC0, pin 31)
circuito lm35 raspberry pi pico
circuito lm35 raspberry pi pico

Esquema básico:

LM35           Raspberry Pi Pico
(1) Vcc  → 3V3 (pin 36)
(2) Vout → GP26 / ADC0 (pin 31)
(3) GND  → GND (pin 38)

(Capacitor de 100 nF opcional entre Vout y GND para estabilidad)

¿Cómo funciona analogRead en MicroPython?

En MicroPython no existe directamente la función analogRead como en Arduino. En su lugar, se usa la clase ADC del módulo machine.

La lectura de un ADC en el Pico devuelve un valor entre 0 y 65535 (escalado de los 12 bits a 16 bits). Puedes convertir ese valor a voltaje si lo deseas.

Código en MicroPython (Thonny IDE)

from machine import ADC, Pin
import time

# Configuración del pin ADC0 (GP26)
lm35 = ADC(Pin(26))

# Voltaje de referencia del ADC (Pico = 3.3V)
VREF = 3.3
ADC_RES = 65535  # Resolución de 16 bits en MicroPython

while True:
    # Leer valor ADC (0-65535)
    lectura_adc = lm35.read_u16()

    # Convertir a voltaje
    voltaje = (lectura_adc / ADC_RES) * VREF

    # Convertir voltaje a temperatura
    temperatura_c = voltaje * 100  # 10 mV por °C → multiplicar por 100

    # Mostrar en consola
    print("ADC:", lectura_adc,
          "| Voltaje: {:.3f} V".format(voltaje),
          "| Temp: {:.2f} °C".format(temperatura_c))

    time.sleep(1)

Explicación del código

  • ADC(Pin(26)) → usa el pin GP26 (ADC0) para leer voltaje.
  • VREF = 3.3 → voltaje máximo que el ADC interpreta como 100%.
  • read_u16() → devuelve un valor entre 0 y 65535 (escala de 16 bits).
  • Conversión:
    • lectura_adc / ADC_RES * VREF → voltaje real en la salida del LM35.
    • voltaje * 100 → convierte a °C porque el LM35 da 10 mV por grado.
  • time.sleep(1) → lee cada segundo.

Resultado esperado

En el Shell de Thonny deberías ver algo así:

ADC: 5078 | Voltaje: 0.255 V | Temp: 25.50 °C
ADC: 5090 | Voltaje: 0.256 V | Temp: 25.60 °C
ADC: 5102 | Voltaje: 0.257 V | Temp: 25.70 °C

 Si pones el dedo sobre el LM35 o lo acercas a una fuente de calor, la temperatura subirá gradualmente.


Comentario

Debe aceptar antes de enviar