🛠 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

Objetivos

Utilizar el convertidor analógico-digital SAR de 12 bits / 500 kSPS del RP2350 para leer un potenciómetro, convertir el valor en tensión y comprender las particularidades de la referencia ADC en Pico 2 (rail SMPS de 3,3 V filtrado, offset inherente de aproximadamente 30 mV).

Material

Código completo

/* 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);
    }
}

Verificación esperada

Al girar el cursor, el valor bruto sigue 0 → 4095 y la tensión mostrada 0 → ~3,3 V. En el extremo inferior, se pueden leer unas decenas de mV en lugar de 0: es el offset documentado (~30 mV) relacionado con el consumo propio del ADC (~150 µA) sobre la referencia filtrada de 200 Ω/2,2 µF.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales