lecture-adc.py
Deux mesures analogiques 12 bits avec un seul script : une tension externe sur GP26 (ADC0) et le capteur thermique intégré au circuit, converti en degrés grâce aux paramètres de la fiche technique. Idéal pour surveiller la charge CPU.
Matériel requis
Une Raspberry Pi Pico 2 (RP2350 double Cortex-M33 @ 150 MHz) avec MicroPython installé, alimentée par USB. Pour la voie externe : potentiomètre 10 kΩ (curseur vers GP26, extrémités sur 3V3 et GND). Le capteur interne ne demande rien.
Câblage
Curseur du potentiomètre sur GP26, une extrémité sur 3V3, l'autre sur GND. Ne jamais dépasser 3,3 V sur une broche ADC.
Fonctionnement
ADC(Pin) ou ADC(4) ouvre un canal ; read_u16() renvoie 0-65535 ramené aux 3,3 V de référence. La température interne utilise l'étalonnage typique 0,706 V à 27 °C, pente -1,721 mV/K.
Exécution
Installer le MicroPython « Pico 2 » (maintenir BOOTSEL, brancher l'USB, déposer le .uf2), puis copier le script via Thonny. Démarrage automatique avec le nom main.py.
Variantes
Moyennez plusieurs lectures pour réduire le bruit, ou changez l'adc.init(sample_bits=8) pour gagner en vitesse contre la précision.
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)