Cours 5IT

Acquisition et Traitement du Signal

Chaîne d'acquisition, conversion CAN/CNA, échantillonnage et traitement numérique

Objectifs pédagogiques

  • Identifier les éléments d'une chaîne d'acquisition de données
  • Comprendre le principe de la conversion analogique-numérique (CAN) et numérique-analogique (CNA)
  • Appliquer le théorème de Shannon pour dimensionner un système d'acquisition
  • Calculer la résolution et la plage de mesure d'un convertisseur
  • Mettre en oeuvre un traitement numérique simple (moyenne, filtrage)

1. Chaîne d'acquisition

Une chaîne d'acquisition est l'ensemble des éléments qui permettent de mesurer une grandeur physique et de la convertir en données numériques exploitables par un système informatique. Elle constitue l'interface entre le monde physique (analogique) et le monde numérique.

Structure d'une chaîne d'acquisition

Grandeur physique
Température, pression...
Capteur
Transducteur
Conditionneur
Amplification, filtrage
CAN
Numérisation
Traitement
Microcontrôleur

Rôle de chaque élément

Capteur (transducteur)

Convertit la grandeur physique en signal électrique (tension ou courant). Exemple : une thermistance convertit la température en variation de résistance, qui produit une variation de tension dans un pont diviseur.

Conditionneur de signal

Adapte le signal du capteur pour le CAN : amplification (augmente l'amplitude), filtrage (élimine le bruit), adaptation d'impédance (assure un bon transfert d'énergie).

Convertisseur Analogique-Numérique (CAN)

Transforme le signal analogique continu en valeurs numériques discrètes. Caractérisé par sa résolution (nombre de bits) et sa fréquence d'échantillonnage.

Chaîne de restitution

L'inverse d'une chaîne d'acquisition est une chaîne de restitution : données numériques → CNA → conditionneur → actionneur → grandeur physique. Exemple : fichier audio → CNA → amplificateur → haut-parleur → son.

2. Échantillonnage et théorème de Shannon

L'échantillonnage consiste à prélever des valeurs d'un signal analogique à intervalles réguliers. La fréquence d'échantillonnage (Fe) détermine combien de mesures sont effectuées par seconde.

Théorème de Shannon-Nyquist

Pour reconstituer fidèlement un signal, la fréquence d'échantillonnage doit être au moins deux fois supérieure à la fréquence maximale du signal :

Fe ≥ 2 × Fmax

Fe : fréquence d'échantillonnage | Fmax : fréquence maximale du signal

Exemple : Numérisation audio

L'oreille humaine perçoit des sons jusqu'à environ 20 kHz. Pour numériser de la musique, on utilise une fréquence d'échantillonnage de :

Fe ≥ 2 × 20 000 Hz = 40 000 Hz

CD Audio : Fe = 44 100 Hz (44,1 kHz) → respecte Shannon avec marge
DVD Audio : Fe = 96 000 Hz (96 kHz) → haute fidélité

Repliement spectral (aliasing)

Si Fe < 2×Fmax, le signal numérisé sera déformé : des fréquences parasites apparaissent, c'est le repliement spectral. Pour l'éviter, on place un filtre anti-repliement (passe-bas) avant le CAN.

Attention au sous-échantillonnage !

Un signal de 15 kHz échantillonné à 20 kHz (Fe < 2×15) produira un signal parasite à 5 kHz (20-15). C'est pourquoi les convertisseurs audio utilisent toujours un filtre anti-aliasing.

3. Conversion Analogique-Numérique (CAN)

Le CAN (ADC en anglais) convertit une tension analogique en un nombre binaire. Il est caractérisé par sa résolution (nombre de bits n), sa plage d'entrée (Vref) et sa vitesse (fréquence max).

Caractéristiques d'un CAN

ParamètreFormuleDescription
Résolution (n bits)2ⁿ niveauxNombre de valeurs distinctes possibles
Quantum (q)q = Vref / 2ⁿPlus petite variation détectable
Plage de mesure0 à VrefÉtendue des tensions convertibles
Valeur numériqueN = Vin / qCode numérique de sortie

Exemple de calcul

Données : CAN 10 bits, Vref = 5V, tension d'entrée Vin = 2.5V

Nombre de niveaux : 2¹⁰ = 1024 niveaux

Quantum : q = 5V / 1024 = 4.88 mV

Valeur numérique : N = 2.5V / 4.88mV = 512

Code binaire : 512 = 0b1000000000

La résolution de 4.88 mV signifie qu'on ne peut pas distinguer deux tensions séparées de moins de 4.88 mV. C'est l'erreur de quantification.

CAN de l'Arduino et ESP32

Arduino Uno (ATmega328P)

  • • Résolution : 10 bits (0-1023)
  • • Vref : 5V (ou 1.1V interne)
  • • Quantum : 4.88 mV
  • • 6 entrées analogiques (A0-A5)
  • • Vitesse : ~10 000 éch./s

ESP32

  • • Résolution : 12 bits (0-4095)
  • • Vref : 3.3V
  • • Quantum : 0.8 mV
  • • 18 entrées analogiques
  • • Vitesse : ~100 000 éch./s
// Lecture analogique sur Arduino
int valeur_brute = analogRead(A0); // 0-1023

// Conversion en tension
float tension = valeur_brute * (5.0 / 1023.0);

// Exemple : capteur de température LM35 (10mV/°C)
float temperature = tension / 0.01; // en °C

4. Conversion Numérique-Analogique (CNA)

Le CNA (DAC en anglais) effectue l'opération inverse du CAN : il convertit un nombre binaire en tension analogique. Il est utilisé pour générer des signaux audio, commander des actionneurs, ou créer des tensions de référence.

Formule de conversion

Vout = N × (Vref / 2ⁿ) = N × q

N : valeur numérique | Vref : tension de référence | n : nombre de bits

Alternative : PWM (Modulation de Largeur d'Impulsion)

L'Arduino ne possède pas de vrai CNA, mais utilise la PWM pour simuler une tension analogique. Le signal alterne rapidement entre 0V et 5V, et le rapport cyclique détermine la tension moyenne.

Principe de la PWM

25%
Rapport cyclique
Vmoy = 1.25V
50%
Rapport cyclique
Vmoy = 2.5V
75%
Rapport cyclique
Vmoy = 3.75V

Formule : Vmoy = (Rapport cyclique / 100) × Vmax

// PWM sur Arduino (8 bits : 0-255)
analogWrite(9, 127); // 50% → ~2.5V moyen
analogWrite(9, 255); // 100% → 5V
analogWrite(9, 0); // 0% → 0V

// Variation progressive de luminosité LED
for (int i = 0; i <= 255; i++) {
  analogWrite(9, i);
  delay(10);
}

5. Traitement numérique du signal

Une fois le signal numérisé, on peut appliquer des traitements numériquespour améliorer la qualité des mesures, extraire des informations ou détecter des événements. Ces traitements sont réalisés par le microcontrôleur.

Moyenne glissante (lissage)

La moyenne glissante réduit le bruit en calculant la moyenne des N dernières mesures. Plus N est grand, plus le signal est lissé, mais plus la réponse est lente.

// Moyenne glissante sur 10 échantillons
#define N_SAMPLES 10
int mesures[N_SAMPLES];
int index_mesure = 0;

int moyenneGlissante(int nouvelle_valeur) {
  mesures[index_mesure] = nouvelle_valeur;
  index_mesure = (index_mesure + 1) % N_SAMPLES;

  long somme = 0;
  for (int i = 0; i < N_SAMPLES; i++) {
    somme += mesures[i];
  }
  return somme / N_SAMPLES;
}

// Utilisation
int brute = analogRead(A0);
int filtree = moyenneGlissante(brute);

Détection de seuil

Déclencher une action quand le signal dépasse un seuil. Pour éviter les fausses détections dues au bruit, on utilise un hystérésis (deux seuils différents pour le déclenchement et le retour).

// Détection avec hystérésis
#define SEUIL_HAUT 700
#define SEUIL_BAS 600
bool alarme_active = false;

void loop() {
  int valeur = analogRead(A0);

  if (!alarme_active && valeur > SEUIL_HAUT) {
    alarme_active = true;
    digitalWrite(LED, HIGH);
  }
  else if (alarme_active && valeur < SEUIL_BAS) {
    alarme_active = false;
    digitalWrite(LED, LOW);
  }
}

Calcul de valeurs statistiques

Minimum / Maximum

Valeurs extrêmes sur une période

Écart-type

Mesure de la dispersion (bruit)

Dérivée

Détection de variations rapides

Pour aller plus loin
  • FFT (Fast Fourier Transform) : analyse fréquentielle du signal
  • Filtres IIR/FIR : filtrage numérique avancé
  • PID : régulation en boucle fermée
  • Machine Learning : classification de signaux (TinyML)

À retenir

Chaîne : Capteur → Conditionneur → CAN → Traitement

Shannon : Fe ≥ 2 × Fmax (évite l'aliasing)

CAN : n bits → 2ⁿ niveaux, q = Vref/2ⁿ

Arduino : CAN 10 bits (0-1023), PWM 8 bits

PWM : Vmoy = rapport cyclique × Vmax

Filtrage : moyenne glissante pour réduire le bruit

Scientia