entree-analogique.ino

Arduino UNO R4 WiFi · Archivo : entree-analogique.ino · Lenguaje : Arduino · Uso : Exploiter la résolution 14 bits de l'ADC du R4

El ADC del R4 llega a 14 bits (16384 niveles) frente a 10 en los Uno clásicos: la ventana deslizante de 32 medidas da tensiones muy estables, ideal para un sensor de precisión o un puente de galga amplificado.

Hardware

Un Arduino UNO R4 WiFi (Renesas RA4M1 @ 14 MHz + ESP32-S3 Wi-Fi/BLE compañero, matriz LED 12x8, LED RGB) alimentado por USB o 6-24 V. 1 potenciómetro de 10 kΩ para probar (o sensor analógico 0-3,3 V).

Cableado

Cursor a A1, extremos del potenciómetro a 3V3 y GND. Entrada máxima 3,3 V (ojo con montajes de 5 V).

Funcionamiento

analogReadResolution(14) explota toda la resolución del convertidor; la ventana deslizante divide el ruido por √32. La conversión usa referencia de 3,3 V.

Ejecución

Arduino IDE 2.x con el core « Arduino UNO R4 Boards », placa « Arduino UNO R4 WiFi », puerto serie y Subir. El coprocesador ESP32-S3 se actualiza aparte si el IDE lo pide.

Variantes

Cambiar a la referencia interna (analogReference) para medir más allá de 3,3 V, o muestrear con temporizador + DMA para audio.

entree-analogique.ino

// ADC 14 bits du R4 (0..16383) avec moyenne glissante.
const int CANAL = A1;
const int NB = 32;

uint16_t fenetre[NB];
int idx = 0;
bool plein = false;
unsigned long t0 = 0;

void setup() {
  analogReadResolution(14);   // 14 bits natifs du RA4M1
  Serial.begin(9600);
}

void loop() {
  if (millis() - t0 < 100) return;
  t0 = millis();

  fenetre[idx] = analogRead(CANAL);
  idx = (idx + 1) % NB;
  if (idx == 0) plein = true;
  int n = plein ? NB : idx;
  if (!n) return;

  long somme = 0;
  for (int i = 0; i < n; i++) somme += fenetre[i];
  long moyenne = somme / n;

  float tension = moyenne * 3.3 / 16383.0;
  Serial.print(F("brut=")); Serial.print(moyenne);
  Serial.print(F("  U=")); Serial.print(tension, 4);
  Serial.println(F(" V"));
}

← Volver a la ficha