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

ESP8266 (módulo 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.

Objetivos

Comprender la principal trampa de hardware del ESP8266EX: su único convertidor analógico-digital (pin A0, 10 bits) solo mide de 0 a 1,0 V, y no de 0 a 3,3 V como en un Arduino. Para medir un voltaje más alto, se necesita un divisor de voltaje externo. Presta atención a las diferencias entre tarjetas: los NodeMCU ya integran un divisor (relación aproximada de 5/1,1) en A0, mientras que un módulo ESP-12E desnudo no tiene ninguno: el código y el cableado no son los mismos. Calculamos el voltaje real a partir del valor bruto de analogRead y la relación del divisor.

Material

Código completo

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

Verificación esperada

Gira el potenciómetro: el valor bruto debe barrer aproximadamente de 0 a 1023 y Vin debe seguir el voltaje medido con el multímetro (±0,1 V, el ADC del ESP8266 es mediocre). Con un divisor ×3, Vin ≈ 3× el voltaje realmente presente en A0. En un módulo desnudo, inyecta directamente 0 V en A0: raw debe caer a 0 o 1.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales