🛠 Lire un potentiomètre avec l'ADC 12 bits

Raspberry Pi Pico 2 · debutant · Schéma : IMG-pico-2-debutant-3-pico2-adc-potentiometre.svg — potentiomètre relié à 3V3, GND et GP26 (entrée ADC) sur une Pico 2, curseur au centre

Objectifs

Utiliser le convertisseur analogique-numérique SAR 12 bits / 500 kSPS du RP2350 pour lire un potentiomètre, convertir la valeur en tension, et comprendre les particularités de la référence ADC sur Pico 2 (rail SMPS 3,3 V filtré, offset inhérent d'environ 30 mV).

Matériel

Code complet

/* adc_pot.c — lecture potentiomètre sur GP26, affichage tension */
#include "pico/stdlib.h"
#include "hardware/adc.h"
#include <stdio.h>

#define POT_ADC_PIN 26
#define SMPS_MODE_PIN 23   /* GP23 haut = mode PWM SMPS, ripple réduit */

int main(void) {
    stdio_init_all;
    /* Améliore la stabilité de la référence ADC (conseil datasheet §5.3) */
    gpio_set_function(SMPS_MODE_PIN, GPIO_FUNC_SIO);
    gpio_set_dir(SMPS_MODE_PIN, GPIO_OUT);
    gpio_put(SMPS_MODE_PIN, 1);

    adc_init;
    adc_gpio_init(POT_ADC_PIN);

    while (true) {
        adc_select_input(0);              /* canal ADC0 (GP26) */
        uint16_t raw = adc_read;        /* 0..4095 (12 bits) */
        float v = raw * 3.3f / 4096.0f;
        printf("raw=%4u  U=%.3f V\n", raw, v);
        sleep_ms(200);
    }
}

Vérification attendue

En tournant le curseur, la valeur brute suit 0 → 4095 et la tension affichée 0 → ~3,3 V. En butée basse, on peut lire quelques dizaines de mV au lieu de 0 : c'est l'offset documenté (~30 mV) lié à la consommation propre de l'ADC (~150 µA) sur la référence filtrée 200 Ω/2,2 µF.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels