🛠 Lire un capteur analogique sur A0
Objetivos
Leer un sensor analógico (potenciómetro, termistor, sensor de luz) en la entrada A0 del MKR NB 1500. El SAMD21 posee un ADC de 10 bits (0–1023) limitado a 3,3 V, y A0 (PA02) es también la salida DAC del microcontrolador: el mismo pin sabe medir y generar una tensión analógica.
Material
- 1 placa MKR NB 1500 + cable micro-USB
- 1 potenciómetro de 10 kΩ: un extremo a 3,3 V, el otro a GND, el cursor en A0
- Opcionalmente un sensor de 3,3 V en lugar del potenciómetro (nunca una señal > 3,3 V en A0)
Código completo
// Lecture ADC + boucle DAC — MKR NB 1500
const uint8_t SENSOR_PIN = A0; // PA02 : entree ADC0 + sortie DAC (DAC0)
void setup {
Serial.begin(9600);
while (!Serial);
analogReadResolution(10); // ADC SAMD21 : 10 bits par defaut
}
void loop {
int raw = analogRead(SENSOR_PIN); // 0..1023 pour 0..3,3 V
uint32_t mv = (uint32_t)raw * 3300UL / 1023UL; // tension en millivolts
Serial.print("raw="); Serial.print(raw);
Serial.print(" -> "); Serial.print(mv); Serial.println(" mV");
analogWrite(DAC0, raw); // reemet la meme tension en 0..3,3 V
delay(500);
}
Verificación esperada
Gire el potenciómetro: el valor mostrado pasa de 0 a 1023 y los milivoltios lo siguen. Al conectar A0 (a través de un condensador de 100 nF a GND para suavizar) a otra entrada analógica, la tensión copiada por el DAC se encuentra idéntica — el bucle de medición/reproducción funciona.
Errores frecuentes
- Aplicar 5 V en A0 (sensor de 5 V sin divisor): por encima de 3,3 V se satura, peor aún, se corre el riesgo de dañar el SAMD21.
- Esperar una resolución de 12 bits: el ADC es de 10 bits,
analogReaddevuelve 0–1023. - Olvidar que el pin pasa a modo DAC en cuanto se llama a
analogWrite(DAC0, ...): hay que reconfigurarlo para poder volver a leerlo después. - Mediciones que «bailan» varios pasos: es normal sin desacoplamiento; añada un promedio sobre N lecturas.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
attente-lte-nbiot.inoArduinochoix-bande.inoArduinopublish-mqtt-minimal.inoArduinoeconomie-energie.inoArduinogeoloc-cellules.inoArduinotest-coverage.inoArduino