🛠 Lire une tension avec l'ADC A0 et un diviseur de tension

ESP8266 (module ESP-12E) · debutant · Schéma : IMG-esp8266-esp-12e-debutant-3-esp8266-adc-a0-diviseur.svg — Module ESP8266-ESP-12E nu, diviseur de tension R1 20 kΩ / R2 10 kΩ ramenant une tension 0–3,3 V dans la plage 0–1,0 V de la broche A0.

Objectifs

Comprendre la principale piège matériel de l'ESP8266EX : son unique convertisseur analogique-numérique (broche A0, 10 bits) ne mesure que 0 à 1,0 V, et non 0 à 3,3 V comme sur un Arduino. Pour mesurer une tension plus élevée, il faut un diviseur de tension externe. Attention aux différences de cartes : les NodeMCU intègrent déjà un diviseur (rapport environ 5/1,1) sur A0, alors qu'un module ESP-12E nu n'en a aucun — le code et le câblage ne sont pas les mêmes. On calcule la tension réelle à partir de la valeur brute analogRead et du rapport du diviseur.

Matériel

Code complet

// Diviseur externe R1=20k (entre Vin et A0) et R2=10k (entre A0 et GND) -> rapport 3
const float RAPPORT = 3.0f;          // (R1 + R2) / R2
const float FULL_SCALE = 1.0f;       // A0 nu : pleine échelle = 1,0 V (pas 3,3 V !)

void setup {
  Serial.begin(115200);
  Serial.println("Lecture ADC A0 (0-1,0 V sur module nu)");
}

void loop {
  int raw = analogRead(A0);                    // 10 bits : 0..1023
  float vA0 = raw / 1023.0f * FULL_SCALE;      // tension sur la broche A0
  float vIn = vA0 * RAPPORT;                   // tension réelle mesurée
  Serial.printf("raw=%4d  A0=%.3f V  Vin=%.3f V\n", raw, vA0, vIn);
  delay(500);
  yield;
}

Vérification attendue

Fais tourner le potentiomètre : la valeur brute doit balayer environ 0 à 1023 et Vin suivre la tension mesurée au multimètre (±0,1 V, l'ADC de l'ESP8266 est médiocre). Avec un diviseur ×3, Vin ≈ 3× la tension réellement présente sur A0. Sur un module nu, injecte directement 0 V sur A0 : raw doit tomber à 0 ou 1.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels