lecture-adc.py
Dos medidas analógicas de 12 bits en un solo script: una tensión externa en GP26 (ADC0) y el sensor térmico integrado del chip convertido a grados con los parámetros de la ficha técnica. Ideal para vigilar la carga de la CPU.
Hardware
Una placa genérica con microcontrolador RP2350 (doble Cortex-M33) programada en MicroPython. Para la vía externa: potenciómetro de 10 kΩ (cursor a GP26, extremos a 3V3 y GND). El sensor interno no necesita nada.
Cableado
Cursor del potenciómetro a GP26, un extremo a 3V3 y el otro a GND. Nunca superar 3,3 V en una pata ADC.
Funcionamiento
ADC(Pin) o ADC(4) abren un canal; read_u16() devuelve 0-65535 escalado a la referencia de 3,3 V. La temperatura interna usa la calibración típica 0,706 V a 27 °C, pendiente -1,721 mV/K.
Ejecución
Graba la versión MicroPython « RP2350 » vía BOOTSEL (.uf2) y copia el script en la unidad. El pin del LED de usuario varía según el fabricante: consulta la documentación de la placa.
Variantes
Promedia varias lecturas para reducir el ruido, o usa adc.init(sample_bits=8) para ganar velocidad a costa de precisión.
lecture-adc.py
# ADC 12 bits : entree externe GP26 (ADC0) + capteur thermique interne.
from machine import ADC, Pin
import time
# CAN 0-3 = GP26..GP29 ; le canal 4 est le capteur de temperature.
adc_externe = ADC(Pin(26))
adc_temp = ADC(4)
REFERENCE = 3.3 # tension de reference de l'ADC
def tension(adc):
# read_u16 renvoie 0..65535 ; l'ADC interne a 12 bits.
return adc.read_u16() * REFERENCE / 65535.0
def temperature_interne():
# Doc technique RP2040/RP2350 : 0,706 V a 27 degC, pente -1,721 mV/K.
v = tension(adc_temp)
return 27.0 - (v - 0.706) / 0.001721
print("Mesures toutes les secondes (Ctrl-C pour arreter)")
while True:
u = tension(adc_externe)
t = temperature_interne()
print("GP26 = %.2f V | temperature interne = %.1f C" % (u, t))
time.sleep(1)