Introduction
Bienvenue dans un nouveau tutoriel pratique sur le blog Velxio ! Aujourd’hui, nous plongeons dans le convertisseur analogique-numérique (ADC) du Raspberry Pi Pico. Le Pico est une carte puissante et l’une de ses fonctionnalités les plus intéressantes est la capacité de lire des tensions analogiques — parfait pour les capteurs, les potentiomètres, etc. Dans cet exemple, nous lirons trois signaux analogiques externes provenant de potentiomètres et récupérerons également la valeur du capteur de température interne. Tout cela s’exécute directement dans votre navigateur avec la simulation précise SPICE de Velxio.

Présentation du Circuit
Examinons le circuit. Nous avons un Raspberry Pi Pico (la variante Nano RP2040 dans Velxio) connecté à deux potentiomètres et une LED.
Composants
- Raspberry Pi Pico (Nano RP2040) : Le cerveau de l’opération.
- Potentiomètre A0 (pot-a0) : Connecté à GPIO26 (A0). Sa broche de sortie (SIG) va à A0, VCC à 3,3 V et GND à la masse.
- Potentiomètre A1 (pot-a1) : Connecté à GPIO27 (A1). Même câblage : SIG à A1, VCC à 3,3 V, GND à la masse.
- LED Rouge (led-temp) : Connectée à GPIO2 (D2) via une résistance de limitation de courant (interne au composant LED). L’anode (A) va à D2, la cathode (C) à la masse.
Détails du Câblage
- A0 (GP26) est connecté à la broche SIG de pot-a0 via un fil bleu (
#4488ff). - A1 (GP27) est connecté à la broche SIG de pot-a1 via un fil vert (
#44cc44). - D2 (GP2) est connecté à l’anode de la LED rouge via un fil rouge (
#ff4444). - Les deux potentiomètres partagent le rail 3,3 V (fils rouges) et la masse (fils noirs) du Pico.
- La cathode de la LED est connectée à la masse.
Remarque : Les broches ADC du Pico supportent le 3,3 V, nous utilisons donc l’alimentation 3,3 V. Les potentiomètres agissent comme des diviseurs de tension, fournissant une tension variable de 0 à 3,3 V à leur broche de sortie.
Explication du Code
Examinons maintenant le code. Il est écrit en C++ de style Arduino pour le Raspberry Pi Pico.
// Raspberry Pi Pico — Test de lecture ADC
// Lit les valeurs analogiques de A0-A2 (GPIO26-28) et du capteur de température interne
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("=== Lecture ADC du Pico ===");
Serial.println("A0=GP26 A1=GP27 A2=GP28 Temp=interne");
Serial.println("Résolution 12 bits (0-4095), référence 3,3 V");
Serial.println();
analogReadResolution(12);
}
void loop() {
int a0 = analogRead(A0);
int a1 = analogRead(A1);
int a2 = analogRead(A2);
// Capteur de température interne sur le canal 4
// T = 27 - (V - 0,706) / 0,001721
int tempRaw = analogRead(A3); // Canal 4 mappé sur A3 par le cœur du Pico
float voltage = tempRaw * 3.3f / 4095.0f;
float tempC = 27.0f - (voltage - 0.706f) / 0.001721f;
Serial.print("A0: "); Serial.print(a0);
Serial.print(" A1: "); Serial.print(a1);
Serial.print(" A2: "); Serial.print(a2);
Serial.print(" Temp: "); Serial.print(tempC, 1); Serial.println(" C");
delay(1000);
}
Points Clés
analogReadResolution(12): Définit la résolution de l’ADC sur 12 bits (0-4095). L’ADC du Pico est en 12 bits par défaut, mais il est de bonne pratique de le définir explicitement.analogRead(A0): Lit la tension sur GPIO26 (A0). Le cœur du Pico mappe A0 sur GPIO26, A1 sur GPIO27, A2 sur GPIO28 et A3 sur le capteur de température interne (canal 4).- Calcul de la Température : Le capteur interne produit une tension qui varie avec la température. La formule
T = 27 - (V - 0,706) / 0,001721convertit la tension en degrés Celsius. La constante 0,706 V est la tension à 27 °C et 0,001721 V/°C est la pente. - Sortie Série : Les résultats sont imprimés chaque seconde.
Concepts Clés
- Résolution de l’ADC : L’ADC du Pico est de 12 bits, ce qui signifie qu’il peut représenter 4096 niveaux de tension discrets (0 à 4095). La tension de référence est de 3,3 V, donc chaque pas représente environ 0,8 mV.
- Analogique vs Numérique : Les potentiomètres fournissent une tension continue ; l’ADC la convertit en un nombre numérique.
- Capteur de Température Interne : Une fonctionnalité pratique pour surveiller la température de la puce sans composants externes.
- Diviseur de Tension : Le potentiomètre agit comme un diviseur de tension, fournissant une fraction de la tension d’alimentation.
Pièges Courants et Conseils de Dépannage
- Mauvais Mappage des Broches : Rappelez-vous que A0 est GPIO26, A1 est GPIO27, A2 est GPIO28 et le capteur de température interne est accessible via A3 (canal 4).
- Broches Flottantes : Si la broche de sortie d’un potentiomètre est déconnectée, la lecture ADC peut être aléatoire. Assurez-vous toujours d’une connexion solide.
- Moniteur Série : Vérifiez que le débit en bauds correspond (115200). Dans Velxio, ouvrez le Moniteur Série depuis la barre d’outils de l’éditeur.
- LED qui ne Clignote Pas : La LED dans cet exemple n’est pas contrôlée par le code ; elle est simplement câblée. Pour la faire clignoter, vous devriez ajouter
digitalWrite(D2, HIGH)et des appelsdelay().
Extensions Suggérées
- Ajouter un Troisième Potentiomètre : Câblez un troisième potentiomètre à GPIO28 (A2) et lisez-le dans le code.
- Contrôler la LED : Utilisez la lecture de température pour allumer la LED lorsqu’elle dépasse un seuil.
- Tracer les Données : Utilisez le Traceur Série dans Velxio pour visualiser les lectures analogiques au fil du temps.
- Utiliser des Capteurs Externes : Remplacez les potentiomètres par une photorésistance (LDR) ou un capteur de température comme le LM35.
Essayez par Vous-Même !
Prêt à expérimenter ? Ouvrez l’exemple en direct dans Velxio et commencez à modifier le circuit ou le code. Cliquez sur le lien ci-dessous pour lancer la simulation directement dans votre navigateur.
Lancer l’exemple de lecture ADC du Pico sur Velxio
Bon bricolage !