Aller au contenu

Calibration et fiabilité des mesures

Un capteur non étalonné fournit des données précises mais inexactes — et dans l'IoT industriel, l'exactitude compte autant que la précision.


Distinction précision / exactitude / résolution

Trois termes souvent confondus, mais dont la distinction est fondamentale en métrologie :

  • Résolution : la plus petite variation que l'instrument peut détecter. Un ADC 12 bits sur une plage 0–3,3 V a une résolution de 3,3 V / 4096 ≈ 0,8 mV.
  • Précision (ou répétabilité) : la dispersion des mesures répétées dans les mêmes conditions. Un capteur très précis donne toujours la même valeur... même si elle est fausse.
  • Exactitude : l'écart entre la mesure et la vraie valeur. Un capteur exact est calibré sur un étalon de référence traçable.

La calibration vise à améliorer l'exactitude ; le filtrage améliore la précision.


Modèles d'erreur d'un capteur

Offset et gain

La relation entre la grandeur physique réelle X et la valeur brute mesurée Y suit le modèle affine le plus courant :

Y_brut = Gain × X_réel + Offset

L'offset (décalage zéro) est l'erreur à grandeur nulle : un capteur de pression qui indique 2,3 Pa quand la pression réelle est 0 Pa a un offset de +2,3 Pa.

Le gain (erreur de pente) traduit une sensibilité incorrecte : si le capteur indique 98 Pa pour 100 Pa réels, l'erreur de gain est 2 %.

La correction est l'opération inverse :

X_corrigé = (Y_brut - Offset) / Gain

Non-linéarité

Certains capteurs (thermocouples, RTD, capteurs de pression différentiels) ont une relation non linéaire entre la grandeur physique et la sortie. La correction passe alors par :

  • Un polynôme de correction (ordre 2 à 5)
  • Une table de correspondance (LUT) interpolée linéairement entre les points

Étalonnage pratique : calibration en 3 points

Protocole

Pour un capteur de température, une calibration à 3 points (zéro, milieu, haut de gamme) suffit généralement à corriger l'offset et le gain. Voici le protocole complet pour un DS18B20 :

Équipements requis :

  • Bain thermostaté (ou au minimum : glace fondante à 0°C, eau bouillante à 100°C corrigée par altitude, bain corps noir)
  • Thermomètre étalon certifié (classe 0,1°C tracé COFRAC / DKD)
  • Enregistreur de données

Points de calibration :

Point Température étalon (°C) Mesure capteur (°C) Correction calculée
0 0,00 +0,42 Offset = -0,42
1 50,00 50,18
2 100,00 100,31

Calcul du gain :

Gain_corrigé = (100,00 - 0,00) / (100,31 - 0,42) = 100 / 99,89 = 1,0011

Formule de correction appliquée en firmware :

float calibrate_temp(float raw_celsius) {
    const float offset = -0.42f;
    const float gain   = 1.0011f;
    return (raw_celsius + offset) * gain;
}

Filtrage logiciel

Moyenne glissante

La moyenne glissante (Moving Average) calcule la moyenne des N dernières mesures. Simple à implémenter, elle réduit le bruit blanc mais introduit un retard de N/2 échantillons.

#define WINDOW 8
float buffer[WINDOW];
int   index = 0;

float moving_average(float new_value) {
    buffer[index % WINDOW] = new_value;
    index++;
    float sum = 0;
    for (int i = 0; i < WINDOW; i++) sum += buffer[i];
    return sum / WINDOW;
}

Quand l'utiliser : bruit blanc gaussien, signaux lents (température, humidité).\ Limite : N × temps_échantillonnage de latence, sensible aux pics isolés.

Filtre médian

Le filtre médian trie les N dernières mesures et retourne la valeur centrale. Il est particulièrement efficace contre les pics impulsionnels (glitches, rebonds de contact) qui traversent une moyenne glissante.

Implémentation typique avec N = 5 : stocker les 5 dernières mesures, les trier, retourner buffer[2].

Filtre passe-bas du premier ordre (RC numérique)

Le filtre exponentiel (EWA — Exponentially Weighted Average) est l'équivalent numérique d'un filtre RC analogique :

float ewa_filter(float previous, float new_value, float alpha) {
    // alpha = 0.1 → fort lissage ; alpha = 0.9 → faible lissage
    return alpha * new_value + (1.0f - alpha) * previous;
}

La constante de temps τ = T_s × (1 - alpha) / alpha, avec T_s le temps d'échantillonnage.

Filtre de Kalman (version scalaire simplifiée)

Le filtre de Kalman est optimal pour un bruit gaussien avec un modèle d'état connu. La version scalaire (1D) est simple à implémenter :

typedef struct {
    float q;  // bruit de processus
    float r;  // bruit de mesure
    float x;  // état estimé
    float p;  // variance d'estimation
} KalmanFilter;

float kalman_update(KalmanFilter *f, float measurement) {
    // Prédiction
    f->p = f->p + f->q;
    // Mise à jour
    float k = f->p / (f->p + f->r);  // gain de Kalman
    f->x = f->x + k * (measurement - f->x);
    f->p = (1.0f - k) * f->p;
    return f->x;
}

Paramétrage : q élevé → suit rapidement les variations ; r élevé → fait confiance au modèle plutôt qu'à la mesure.


Dérive et vieillissement

Dérive thermique

La dérive thermique (température coefficient) est exprimée en ppm/°C ou %FS/°C. Un capteur avec une dérive de 50 ppm/°C soumis à une variation de 30°C introduira une erreur de 50 × 30 = 1 500 ppm = 0,15 % de la pleine échelle.

Compensation : mesurer simultanément la température ambiante du capteur et appliquer un polynôme de compensation thermique, calculé lors de la calibration en chambre climatique.

Dérive temporelle

Tous les capteurs dérivent dans le temps (ageing). Le SHT31 Sensirion garantit une dérive de < 0,02 % HR/an pour l'humidité. Un capteur de pression piézorésistif peut dériver de 0,1 % FS/an sous contrainte mécanique.

Stratégie : définir une fréquence de recalibration basée sur la dérive spécifiée et les exigences de précision du système (par exemple : recalibration annuelle ou déclenchée si l'écart à un capteur de référence dépasse un seuil).


MTBF et maintenance préventive

Définition

Le MTBF (Mean Time Between Failures) est le temps moyen entre deux défaillances pour un composant réparable. Il est exprimé en heures et calculé selon la norme MIL-HDBK-217 ou la méthode IEC 61709.

MTBF = 1 / λ

où λ est le taux de défaillance en défauts par heure (h⁻¹).

Exemple de calcul

Pour un nœud IoT comprenant :

  • MCU STM32L4 : λ = 120 × 10⁻⁹ h⁻¹
  • Capteur BME280 : λ = 50 × 10⁻⁹ h⁻¹
  • Régulateur 3,3 V : λ = 80 × 10⁻⁹ h⁻¹
  • Condensateurs (×10) : λ = 20 × 10⁻⁹ h⁻¹ total
λ_total = (120 + 50 + 80 + 20) × 10⁻⁹ = 270 × 10⁻⁹ h⁻¹
MTBF = 1 / 270 × 10⁻⁹ ≈ 3 700 000 h ≈ 422 ans

Ce MTBF élevé s'explique par l'absence de pièces mécaniques et le faible niveau de stress électrique. Dans la réalité, les facteurs environnementaux (vibrations, humidité, température) réduisent significativement ce chiffre — d'un facteur 10 en environnement industriel difficile.

Impact sur la maintenance préventive

Un MTBF de 3,7 Mh pour 100 nœuds déployés prédit en moyenne 100 / 3 700 000 = 0,027 défaillances par heure, soit environ une panne par 40 jours. La maintenance préventive (remplacement des batteries, nettoyage des capteurs, vérification des connexions) doit être planifiée avant d'atteindre ce seuil.


Conditions environnementales et indice IP

Indice de protection IP (IEC 60529)

Code IP Protection poussière Protection eau
IP20 Doigt (> 12 mm) Aucune
IP54 Poussière limitée Projections toutes directions
IP65 Étanche à la poussière Jets d'eau (buse 6,3 mm)
IP67 Étanche à la poussière Immersion 1 m / 30 min
IP68 Étanche à la poussière Immersion continue (profondeur définie)
IP69K Étanche à la poussière Jet haute pression / haute température

En environnement industriel extérieur, IP65 minimum est la norme. Pour les équipements lavés au jet à haute pression (agroalimentaire, industrie pharmaceutique), IP69K est requis.

Plage de température

Qualification Plage standard Qualification étendue
Commercial 0°C / +70°C
Industriel -40°C / +85°C -40°C / +105°C
Automobile -40°C / +125°C -40°C / +150°C

Flux complet de calibration

flowchart TD
    A["Mesure brute\nValeur ADC ou registre capteur"] --> B["Correction offset\nY = Y_brut - Offset"]
    B --> C["Correction gain\nY = Y / Gain"]
    C --> D["Compensation thermique\nY = Y + f(T_ambiante)"]
    D --> E["Filtrage numérique\nKalman / EWA / médian"]
    E --> F["Vérification plage\nSaturation / alarme"]
    F --> G{"Valeur dans\nplage nominale ?"}
    G -->|Oui| H["Valeur finale\ncalibrée en unité SI"]
    G -->|Non| I["Alarme capteur\nHors plage ou défaut"]

    style H fill:#2d8a4e,color:#fff
    style I fill:#c0392b,color:#fff

Ce qu'il faut retenir

  • La calibration corrige l'offset et le gain ; la compensation thermique corrige la dérive avec la température ; le filtrage réduit le bruit.
  • Une calibration à 3 points (bas, milieu, haut de gamme) suffit pour corriger les erreurs affines de la plupart des capteurs.
  • Le filtre de Kalman scalaire est simple à implémenter et optimal pour les bruits gaussiens ; le filtre médian est préférable contre les pics impulsionnels.
  • Le MTBF est un outil de planification de la maintenance, pas une garantie individuelle : un composant avec un MTBF de 1 000 000 h peut tomber en panne au bout de 10 min.

Chapitre suivant : Choix de plateforme — matrice de décision pondérée et trois cas d'usage industriels pour choisir la bonne plateforme.