quiet bee.Le labo ESP32 ↗LE LABO AU LYCÉE

SÉQUENCE 03 / Première → Terminale · ADC et PWM

Mesurer une tension.

Passer du monde continu à une valeur numérique.

Le défi

Faire varier la luminosité avec un potentiomètre. Distinguer tension d’entrée, nombre retourné par le convertisseur et commande PWM.

Matériel : UNO R4, potentiomètre linéaire 10 kΩ, LED rouge et résistance 1 kΩ. Identifier le curseur dans la fiche du composant : le dessin présente ses fonctions, pas un ordre universel des pattes.

Schéma de branchement : Mesurer une tension
Cliquer pour agrandir · SVG · PNG. Connecteurs déployés pour la lisibilité : suivez les noms des broches de votre carte.

Câbler

ComposantConnexion
Extrémités du potentiomètre5V et GND
CurseurA0
D91 kΩ puis anode LED ; cathode à GND

Le potentiomètre forme un diviseur de tension ; A0 prélève la tension au curseur. Vérifier qu’aucune position ne crée de court-circuit 5V/GND.

Le programme complet

03_analogique.ino

Projet complet ↓
// Potentiometre lineaire 10 kohms : extremites 5V/GND, curseur A0.
// LED : D9 -> resistance 1 kohm -> anode ; cathode -> GND.
constexpr uint8_t POT = A0;
constexpr uint8_t LED = 9; // Broche PWM sur UNO R4.
unsigned long dernierAffichage = 0;

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  analogReadResolution(10); // Valeurs de 0 a 1023, choix explicite.
  analogWriteResolution(8); // Rapport cyclique code de 0 a 255.
}

void loop() {
  const int brut = analogRead(POT);
  const uint8_t commande = (uint32_t(brut) * 255U) / 1023U;
  analogWrite(LED, commande);
  if (millis() - dernierAffichage >= 200) {
    dernierAffichage = millis();
    Serial.print("ADC="); Serial.print(brut);
    Serial.print(" ; PWM="); Serial.print(commande);
    Serial.print(" ; U estimee=");
    Serial.print(brut * (5.0f / 1023.0f), 3);
    Serial.println(" V (reference supposee 5.0 V)");
  }
}

Du volt au nombre

Le code fixe 10 bits : 2¹⁰ = 1024 codes, de 0 à 1023. L’estimation U ≈ brut × 5 / 1023 suppose une référence de 5,0 V. L’alimentation réelle et les caractéristiques du convertisseur créent des écarts.

L’UNO R4 permet aussi 14 bits : davantage de codes ne garantit pas, à lui seul, une meilleure exactitude. Avec 5,0 V supposés, le pas théorique est 5 / 1024 ≈ 4,88 mV à 10 bits.

uint32_t(brut) élargit le calcul avant multiplication. Le résultat est ramené à 0…255 pour la PWM à 8 bits. À mi-course, le rapport cyclique est voisin de 50 % : D9 alterne 0 et 5 V ; ce n’est pas une tension continue de 2,5 V. La fonction DAC de A0 n’est pas utilisée ici.

À VOUS DE JOUER / PREMIÈRE

Relever ADC et PWM aux extrémités et à mi-course. Distinguer résolution et tension.

PLUS LOIN / TERMINALE

Passer à 14 bits : quelles constantes changer ? Comparer la tension estimée à une mesure au multimètre.

Pistes de correction

Configurer analogReadResolution(14), remplacer les deux dénominateurs 1023 par 16383, garder 255 pour la PWM. Il y a 16384 codes ; le pas théorique vaut environ 0,305 mV pour 5 V, sans être une précision garantie.

Étape suivante : Acquérir une température →

SOURCES ET PROLONGEMENTS

Vérifier dans la documentation.

Contenus originaux Quiet Bee. Progression proposée pour travailler la chaîne d’information, le prototypage et la validation ; elle ne remplace pas le programme ni les consignes de votre professeur.