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 Raspberry Pi Pico W (RP2040 + chip radio Wi-Fi de 2,4 GHz) con MicroPython instalado, alimentada por USB. 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
Instala la versión MicroPython « Pico W » (BOOTSEL + .uf2) y copia el script vía Thonny. Como el LED de usuario lo gestiona el chip de radio, los ejemplos de salida usan un LED externo.
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)