🛠 Lire un capteur analogique avec l’ADC 10 bits
Objetivos
Utilizar el convertidor analógico-digital del ATmega2560: la Mega 2560 posee 16 entradas analógicas (A0 a A15) con una resolución de 10 bits, es decir, valores enteros de 0 a 1023 para una tensión de referencia por defecto de 5 V. Aprenderás a leer un sensor, convertir el valor en tensión y comprender el papel del pin AREF.
Material
- 1 × Arduino Mega 2560 + cable USB
- 1 × potenciómetro de 10 kΩ (simulando cualquier sensor analógico: LDR, sensor de flexión, etc.)
- Placa de pruebas y cables
Conecta los dos extremos del potenciómetro a 5 V y GND, y el cursor (patilla central) a A0. La referencia analógica se puede modificar mediante el pin AREF y la función analogReference — nunca apliques una tensión externa en AREF sin leer previamente la documentación.
Código completo
// Lecture ADC 10 bits — Arduino Mega 2560
const uint8_t CAPTEUR = A0; // 16 entrées : A0..A15
uint32_t t0 = 0;
void setup {
Serial.begin(115200);
}
void loop {
if (millis - t0 >= 100) { // 10 affichages / s
t0 = millis;
uint16_t brut = analogRead(CAPTEUR); // 0..1023
float tension = brut * (5.0 / 1023.0); // 0..5 V
Serial.print(F("brut=")); Serial.print(brut);
Serial.print(F(" tension=")); Serial.print(tension, 2);
Serial.println(F(" V"));
}
}
Verificación esperada
Al girar el potenciómetro, el valor bruto pasa de 0 a 1023 y la tensión de 0,00 a 5,00 V en el monitor serie a 115200 baudios. Una medición con un multímetro entre A0 y GND debe confirmar la tensión mostrada (con la precisión del ADC de 10 bits: 5 V / 1024 ≈ 4,9 mV por paso).
Errores frecuentes
- Aplicar más de 5 V en una entrada analógica: riesgo de daño permanente (lógica de 5 V).
- Confundir las escalas:
analogReaddevuelve 0–1023, no 0–5 ni 0–255; para controlar una salida PWM (analogWrite, 0–255), recuerda dividir entre 4. - Entrada no conectada: el valor "baila" porque la entrada está flotando.
- Olvidar que las 16 entradas A0–A15 comparten el único ADC: la lectura es secuencial, lo cual es importante en mediciones rápidas.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinodouble-servo.inoArduinopont-uart.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduino