adc-12-bits.ino
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);
}