adc-12-bits.ino

Arduino Due · Fichier : adc-12-bits.ino · Langage : Arduino · Usage : Exploiter la résolution 12 bits de l'ADC de la Due

La Due convertit en 12 bits sous 3,3 V : quatre fois plus de pas qu'un AVR. Une moyenne glissante sur 16 échantillons nettoie le bruit, et la tension est rendue en volts.

Matériel requis

Une Arduino Due (AT91SAM3X8E, ARM Cortex-M3 84 MHz) reliée par USB à son port « Programming ». Attention : logique 3,3 V, jamais 5 V sur les broches. 1 potentiomètre 10 kΩ (ou capteur analogique 0-3,3 V).

Branchement

Extrêmes du potentiomètre sur 3,3 V/GND — jamais 5 V sur une Due —, curseur sur A0.

Fonctionnement

analogReadResolution(12) porte le ADC à 4096 pas ; l'anneau de 16 valeurs lisse la lecture avant conversion en volts. Dans l'Arduino IDE, choisissez « Arduino Due (Programming Port) » puis Téléverser ; le moniteur série tourne à la vitesse choisie dans le code.

Pour aller plus loin

Déclenchez une acquisition par timer (TC) pour un échantillonnage régulier, ou filtrez en médiane contre les pics.

adc-12-bits.ino

// ADC 12 bits (0..4095) sur A0, moyenne glissante sur 16 mesures.
const int N = 16;
long valeurs[N];
int idx = 0;
long somme = 0;

void setup() {
  analogReadResolution(12); // 0..4095 au lieu de 0..1023
  Serial.begin(115200);
}

void loop() {
  somme -= valeurs[idx];
  valeurs[idx] = analogRead(A0);
  somme += valeurs[idx];
  idx = (idx + 1) % N;
  float tension = (somme / (float)N) * 3.3 / 4095.0;
  Serial.print(somme / N);
  Serial.print(F(" -> "));
  Serial.println(tension, 3);
  delay(100);
}

← Retour à la fiche