🛠 Lire l'ADC 12 bits et le capteur de température interne du RP2350

RP2350 (genérico / placas basadas en RP2350) · debutant · Schéma : IMG-rp2350-generic-debutant-3-rp2350-adc-capteur-interne.svg — carte RP2350 générique, potentiomètre entre 3V3, GND et curseur sur GP26 (ADC0), puce RP2350 avec bloc ADC 12-bit SAR 500 kSPS et canal température interne, graphique des valeurs 0..4095

Objetivos

El RP2350 incorpora un ADC SAR de 12 bits, 500 kSPS, 4 canales en RP2350A / 8 en RP2350B, más un canal de temperatura interna — pero ningún DAC (hoja de datos RP2350). Los ejemplos oficiales del SDK ubican los canales ADC0..3 en GP26..GP28. Este tutorial: leer una tensión externa con un potenciómetro, leer la temperatura del núcleo y manipular correctamente la escala de 12 bits (0..4095) del ADC del RP2350.

Material

Código completo

# adc_temp.py — ADC0 (GP26) + canal température interne
from machine import ADC, Pin
import time

# Canal 4 = capteur thermique interne (comme sur RP2040)
sense = ADC(4)
# ADC0 : sur le port rp2, ADC(0) cible l'entrée analogique ADC0 = GP26
pot = ADC(0)

REF = 3.3            # pleine échelle = alimentation IO, ici 3,3 V
FULL = 4095          # l'ADC du RP2350 est nativement 12 bits

def tension(adc):
    return adc.read * REF / FULL        # read = valeur brute 12 bits

def temperature:
    v = tension(sense)
    # formule datasheet famille RP2 : 0,706 V à 27 °C, pente -1,721 mV/°C
    return 27.0 - (v - 0.706) / 0.001721

while True:
    print('pot: %4d  %.3f V   coeur: %.1f C'
          % (pot.read, tension(pot), temperature))
    time.sleep_ms(500)

Verificación esperada

Gira el potenciómetro: el valor bruto sigue 0 → 4095 y la tensión 0 → 3,3 V de forma lineal. Coloca el dedo sobre el RP2350: la temperatura del núcleo sube unos grados en pocos segundos y luego vuelve a bajar. La fórmula 27.0 - (v - 0.706) / 0.001721 es la de la familia RP2 (tensión del sensor 0,706 V a 27 °C, pendiente 1,721 mV/°C) — da la temperatura del núcleo (diodo interno), no la temperatura ambiente: 30–35 °C en mano es normal.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales