analogique.ino

Arduino GIGA R1 · Fichier : analogique.ino · Langage : Arduino · Usage : Acquitter un capteur analogique en 12 bits

L'ADC 12 bits de la GIGA acquitte à 50 Hz avec une moyenne glissante sur 32 échantillons : le traceur série montre une courbe propre, prête pour un capteur analogique réel (0-3,3 V).

Matériel requis

Une carte Arduino Giga R1 (STM32H747 double cœur M7 480 MHz + M4, 76 E/S, 2 DAC, FDCAN) alimentée par USB-C ou 5-24 V. 1 capteur analogique 0-3,3 V (curseur de potentiomètre, sortie de module conditionnée).

Branchement

Signal sur A0, GND commun. Ne jamais dépasser 3,3 V : l'ADC n'est pas 5 V tolérant.

Fonctionnement

Le tampon circulaire de 32 valeurs lisse sans allocation ; analogReadResolution aligne la largeur sur le natif du STM32H7. L'échantillonnage à 50 Hz laisse le M7 disponible. Dans l'Arduino IDE, installez la plateforme « Arduino Zephyr-based Boards » (ou Mbed), choisissez « Arduino Giga R1 », puis Téléverser. Logique 3,3 V.

Pour aller plus loin

Déclenchez une alerte hors plage, ou envoyez la moyenne vers le CAN (sketch dédié).

analogique.ino

// Capteur analogique sur A0 : ADC 12 bits + moyenne glissante.
const int CANAL = A0;
const int FENETRE = 32;

uint16_t tampon[FENETRE];
int tete = 0;
unsigned long precedent = 0;

void setup() {
  analogReadResolution(12);           // 0..4095 pour 0..3,3 V
  Serial.begin(115200);
}

void loop() {
  if (millis() - precedent < 20) return;    // 50 Hz
  precedent = millis();

  tampon[tete] = analogRead(CANAL);
  tete = (tete + 1) % FENETRE;
  uint32_t somme = 0;
  for (int i = 0; i < FENETRE; i++) somme += tampon[i];
  float moyenne = (float)somme / FENETRE;
  float volts = moyenne * 3.3f / 4095.0f;
  Serial.printf("%6.1f  %.3f V\n", moyenne, volts);   // traceur serie
}

← Retour à la fiche