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.

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

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.

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

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.