🛠 Régler la référence de mesure avec AREF et analogReference
Objetivos
El ADC de 10 bits de la Duemilanove no mide « voltios »: mide una proporción de su tensión de referencia, por defecto los 5 V regulados. La página oficial documenta el pin AREF y analogReference para cambiar este límite superior. Este tutorial muestra por qué alimentar un sensor a 3,3 V mientras se mide con una referencia de 5 V desperdicia el 34 % de la resolución, y cómo AREF recupera los 1024 niveles completos — una habilidad que se vuelve crítica cuando se conectan sensores de 3,3 V a una placa de 5 V.
Material
- 1 Arduino Duemilanove
- 1 potenciómetro de 10 kΩ alimentado a 3V3 (recordatorio: el pin 3V3 proviene del chip FTDI, máx. 50 mA — un potenciómetro consume casi nada)
- 1 cable para conectar AREF a 3V3, cable mini-USB
- Un multímetro es útil para verificar el 3V3 real
Código completo
// 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);
}
Verificación esperada
Con AREF conectado a 3V3, el potenciómetro al máximo da una lectura cercana a 1023 (y no ~675 como con la referencia interna de 5 V). La tensión mostrada sigue al multímetro conectado al cursor. Desconectar AREF (vuelve a la referencia interna de 5 V por defecto tras un reset) y el rango máximo vuelve a caer hacia 675: la resolución ganada es medible.
Errores frecuentes
- Llamar a
analogReference(EXTERNAL)sin conectar nada a AREF: el ADC mide una referencia flotante, cualquier cosa; siempre alimentar AREF primero. - Olvidar que el cambio de referencia solo tiene efecto después de un
analogRead: hacer una lectura de calentamiento. - Enviar más de 5 V a AREF o desalinear la referencia y el sensor: la referencia debe ser inferior a AVCC (5 V) y cubrir el rango del sensor.
- Confiar en 3V3 para alimentar el sensor Y servir de referencia para un montaje que consume mucho: el pin 3V3 está limitado a 50 mA (producido por el chip FTDI); por encima de eso, alimentar el sensor por separado y usar AREF solo para una señal de referencia (consumo despreciable).
- En referencia EXTERNAL, olvidar que la tensión mostrada asume 3,3 V exactos: medir el verdadero 3V3 con el multímetro (a menudo 3,2–3,4 V) y corregir la constante.
- No hacer un
delay(100)después del cambio de referencia: las primeras lecturas son erróneas mientras el condensador de referencia se estabiliza.
Otros tutoriales para esta placa
- 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
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduinoservo-balayage.inoArduinobuzzer-melodie.inoArduino