🛠 Régler la référence de mesure avec AREF et analogReference
Objectifs
L'ADC 10 bits de la Duemilanove ne mesure pas « des volts » : il mesure une proportion de sa tension de référence, par défaut le 5 V régulier. La page officielle documente la broche AREF et analogReference pour changer ce plafond. Ce tuto montre pourquoi alimenter un capteur en 3,3 V tout en mesurant en référence 5 V gaspille 34 % de la résolution, et comment AREF récupère les 1024 niveaux complets — une compétence qui devient critique quand on branche des capteurs 3,3 V sur une carte 5 V.
Matériel
- 1 Arduino Duemilanove
- 1 potentiomètre 10 kΩ alimenté en 3V3 (rappel : la broche 3V3 vient de la FTDI, 50 mA max — un potentiomètre ne consomme presque rien)
- 1 fil pour relier AREF au 3V3, câble mini-USB
- Multimètre utile pour vérifier le 3V3 réel
Code complet
// Mesure d'un potentiomètre 0..3,3 V avec reference externe 3,3 V
// Fils : pot. entre 3V3 et GND, curseur -> A0 ; AREF -> 3V3
const byte POT = A0;
void setup {
Serial.begin(9600);
analogReference(EXTERNAL); // la mesure sera proportionnelle a V(AREF)
delay(100); // laisser la reference se stabiliser
Serial.println("Ref externe 3,3 V activee");
}
void loop {
int brut = analogRead(POT); // 0..1023 sur 0..3,3 V
float tension = brut * 3.3 / 1023.0;
Serial.print("brut="); Serial.print(brut);
Serial.print(" U="); Serial.print(tension);
Serial.println(" V");
delay(100);
}
Vérification attendue
Avec AREF relié au 3V3, le potentiomètre à fond donne une lecture proche de 1023 (et non ~675 comme en référence 5 V interne). La tension affichée suit le multimètre branché sur le curseur. Débrancher AREF (retour en référence interne 5 V par défaut après reset) et la plage maxi retombe vers 675 : la résolution gagnée est mesurable.
Erreurs fréquentes
- Appeler
analogReference(EXTERNAL)sans rien brancher sur AREF : l'ADC mesure une référence flottante, n'importe quoi ; toujours alimenter AREF d'abord. - Oublier que le changement de référence ne prend effet qu'après un
analogRead: faire une lecture de chauffe. - Envoyer plus de 5 V sur AREF ou mésaligner référence et capteur : la référence doit être inférieure à AVCC (5 V) et couvrir la plage du capteur.
- Compter sur le 3V3 pour alimenter le capteur ET servir de référence à un montage gourmand : la broche 3V3 est limitée à 50 mA (produite par la FTDI) ; au-delà, alimenter le capteur séparément et ne tirer sur AREF qu'un signal de référence (consommation négligeable).
- En référence EXTERNAL, oublier que la tension affichée suppose 3,3 V exacts : mesurer le vrai 3V3 au multimètre (souvent 3,2–3,4 V) et corriger la constante.
- Ne pas faire de
delay(100)après le changement de référence : les premières lectures sont faussées le temps que le condensateur de référence se stabilise.
Autres tutoriels pour cette carte
- Faire clignoter la LED 13 d'une Duemilanove (et choisir le bon ATmega)
- Bouton poussoir et moniteur série sur la Duemilanove (avec ses 0,5 s de silence)
- Potentiomètre et variation LED : l'ADC 10 bits et le PWM 8 bits version AVR
- Ajouter un deuxième port série avec SoftwareSerial (GPS sur broches 10/11)
- Persister une calibration dans l'EEPROM de l'ATmega (512 octets ou 1 Ko)
- Convertir la Duemilanove en programmateur AVR (ArduinoISP) pour graver des puces nues
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduinoservo-balayage.inoArduinobuzzer-melodie.inoArduino