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.

Câbler
| Composant | Connexion |
|---|---|
| Extrémités du potentiomètre | 5V et GND |
| Curseur | A0 |
| D9 | 1 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.
- Arduino UNO R4 Minima · UNO R4 WiFi
- Arduino : résolution du convertisseur analogique
- Arduino : exemples WiFiS3
- Analog Devices : DS18B20
- OneWire · DallasTemperature
- Éduscol : programmes et ressources STI2D
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.