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 :
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 :
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 :
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.
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.