entree-analogique.ino

Arduino Portenta H7 · Archivo : entree-analogique.ino · Lenguaje : Arduino · Uso : Lire une entrée analogique 12 bits avec moyenne

El ADC de 12 bits del H7 ofrece dieciséis veces la resolución de los Uno clásicos. La ventana deslizante de 16 medidas da tensiones estables para un sensor industrial 0-3,3 V o un divisor de batería.

Hardware

Un Arduino Portenta H7 (módulo ST STM32H747 doble núcleo Cortex-M7 @ 480 MHz + M4 @ 240 MHz, 8 MB SDRAM, conector high-density), alimentado por USB-C o 5 V. 1 potenciómetro de 10 kΩ para probar (o sensor 0-3,3 V).

Cableado

Cursor a A0, extremos a 3V3 y GND. Entrada estrictamente ≤ 3,3 V (los pines ADC no toleran 5 V).

Funcionamiento

analogReadResolution(12) explota toda la conversión; el promedio por software divide el ruido por 4. Referencia de conversión 3,3 V.

Ejecución

Arduino IDE con el core « Arduino Mbed OS Portenta Boards »: elige « Portenta H7 » (núcleo M7), el puerto USB-C y Subir. El selector M7/M4 del modo DFU permite cargar también el núcleo M4.

Variantes

Muestrear con DMA (API Mbed ADC) para un flujo rápido, o fijar una referencia externa para precisión.

entree-analogique.ino

// ADC 12 bits (0..4095) sur A0 avec moyenne glissante.
const int CANAL = A0;
const int NB = 16;

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

void setup() {
  analogReadResolution(12);
  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;

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

  float tension = moyenne * 3.3f / 4095.0f;
  Serial.printf("brut=%lu  U=%.3f V\n", moyenne, tension);
}

← Volver a la ficha