Test Types & Methods

Tests de pré-conformité CEM : guide complet

Découvrez comment configurer des tests de pré-conformité CEM, enregistrer les données d'émissions rayonnées et conduites, et suivre les marges CEM avec.

JJulien Buteau
advanced12 min de lecture14 mars 2026

Tests de pré-conformité CEM : guide complet

Échouer à la certification CEM coûte des semaines de retard et des dizaines de milliers d'euros en frais de retest. Les tests de pré-conformité dans votre propre laboratoire détectent les problèmes tôt, quand ils sont peu coûteux à corriger. TofuPilot enregistre vos données de test CEM pour que vous puissiez surveiller les marges, comparer les révisions de conception, et gagner en confiance avant le test formel.

Ce que couvrent les tests CEM

TestNormeCe qu'il mesure
Émissions rayonnéesCISPR 32, FCC Part 15Énergie RF rayonnée par le produit
Émissions conduitesCISPR 32, FCC Part 15Bruit RF sur les lignes d'alimentation
Immunité rayonnéeIEC 61000-4-3Résistance aux champs RF externes
Immunité ESDIEC 61000-4-2Résistance aux décharges électrostatiques
Immunité aux surtensionsIEC 61000-4-5Résistance aux surtensions du réseau
Immunité conduiteIEC 61000-4-6Résistance aux RF sur les câbles

La pré-conformité se concentre sur les émissions (rayonnées et conduites) car ce sont les modes de défaillance les plus courants et elles peuvent être testées avec un équipement relativement abordable.

Équipement de pré-conformité

ÉquipementUtilisationCoût typique
Jeu de sondes champ procheLocaliser les sources d'émission sur le PCB500-2 000 $
Analyseur de spectreMesurer le contenu fréquentiel5 000-30 000 $
RSIL (Réseau Stabilisateur d'Impédance de Ligne)Mesure des émissions conduites2 000-5 000 $
Antenne CEM (biconique + log-périodique)Mesure des émissions rayonnées3 000-8 000 $
Enceinte blindée ou site de test en espace libreEnvironnement de mesure contrôlé10 000 $+

Vous n'avez pas besoin d'une chambre entièrement équipée pour la pré-conformité. Un analyseur de spectre avec des sondes champ proche détecte la plupart des problèmes au niveau de la carte.

Enregistrement des données CEM dans TofuPilot

Balayage des émissions rayonnées

emc_radiated_test.py
from tofupilot import TofuPilotClient

client = TofuPilotClient()

# Pics d'émission aux fréquences clés
emissions = [
    {"freq_mhz": 30, "level_dbuv_m": 28.5, "limit_dbuv_m": 40.0},
    {"freq_mhz": 100, "level_dbuv_m": 32.1, "limit_dbuv_m": 43.5},
    {"freq_mhz": 230, "level_dbuv_m": 35.8, "limit_dbuv_m": 46.0},
    {"freq_mhz": 500, "level_dbuv_m": 22.3, "limit_dbuv_m": 46.0},
    {"freq_mhz": 1000, "level_dbuv_m": 18.7, "limit_dbuv_m": 50.0},
]

measurements = []
all_pass = True
for e in emissions:
    margin = e["limit_dbuv_m"] - e["level_dbuv_m"]
    passed = margin > 0
    if not passed:
        all_pass = False
    measurements.append({
        "name": f"radiated_{e['freq_mhz']}mhz",
        "value": e["level_dbuv_m"],
        "unit": "dBuV/m",
        "limit_high": e["limit_dbuv_m"],
    })
    measurements.append({
        "name": f"margin_{e['freq_mhz']}mhz",
        "value": margin,
        "unit": "dB",
        "limit_low": 6.0,  # Objectif de marge de 6 dB
    })

client.create_run(
    procedure_id="EMC-RADIATED-PRECOMPLIANCE",
    unit_under_test={
        "serial_number": "PROTO-REV-C",
        "part_number": "PRODUCT-V2",
    },
    run_passed=all_pass,
    steps=[{
        "name": "Émissions rayonnées 30 MHz-1 GHz",
        "step_type": "measurement",
        "status": all_pass,
        "measurements": measurements,
    }],
)

Émissions conduites

emc_conducted_test.py
# Émissions conduites sur les lignes d'alimentation
conducted = [
    {"freq_mhz": 0.15, "level_dbuv": 52.3, "limit_avg": 56.0, "limit_qp": 66.0},
    {"freq_mhz": 0.5, "level_dbuv": 48.7, "limit_avg": 46.0, "limit_qp": 56.0},
    {"freq_mhz": 5.0, "level_dbuv": 38.2, "limit_avg": 46.0, "limit_qp": 56.0},
    {"freq_mhz": 30.0, "level_dbuv": 32.1, "limit_avg": 46.0, "limit_qp": 56.0},
]

measurements = []
for c in conducted:
    measurements.append({
        "name": f"conducted_avg_{c['freq_mhz']}mhz",
        "value": c["level_dbuv"],
        "unit": "dBuV",
        "limit_high": c["limit_avg"],
    })

client.create_run(
    procedure_id="EMC-CONDUCTED-PRECOMPLIANCE",
    unit_under_test={"serial_number": "PROTO-REV-C"},
    run_passed=True,
    steps=[{
        "name": "Émissions conduites 150 kHz-30 MHz",
        "step_type": "measurement",
        "status": True,
        "measurements": measurements,
    }],
)

Suivi des marges CEM

L'objectif de la pré-conformité n'est pas seulement réussite/échec. C'est connaître votre marge. Un produit qui passe avec 2 dB de marge échouera probablement au laboratoire d'essai (l'incertitude de mesure seule est de 3-5 dB).

MargeNiveau de risqueAction
> 10 dBFaibleProcéder à la certification
6-10 dBMoyenProcéder, mais avoir des plans d'atténuation prêts
3-6 dBÉlevéCorriger avant la certification
< 3 dBTrès élevéÉchec probable à la certification

Suivez les marges dans TofuPilot à travers les révisions de conception. Si la Rev A avait 4 dB de marge à 230 MHz et la Rev B a 8 dB après l'ajout d'un filtre, vous pouvez voir l'amélioration quantitativement.

Comparaison des révisions de conception

Les performances CEM changent à chaque révision de carte, modification de layout et changement de composant. TofuPilot vous permet de comparer les données d'émissions entre révisions côte à côte.

Rev A (sans filtre) : Rev B (filtre pi ajouté) : ┌─────────────────────┐ ┌─────────────────────┐ │ 230MHz: 42.1 dBuV/m │ │ 230MHz: 35.8 dBuV/m │ │ Limite: 46.0 dBuV/m │ │ Limite: 46.0 dBuV/m │ │ Marge: 3.9 dB ⚠ │ │ Marge: 10.2 dB ✓ │ └─────────────────────┘ └─────────────────────┘

Le filtre pi a apporté 6,3 dB de marge à 230 MHz. Ce type de retour de conception basé sur les données n'est possible que lorsque vous enregistrez chaque itération de test.

Modes de défaillance CEM courants

DéfaillanceCause typiqueCorrection
Harmoniques de la fréquence de commutationConvertisseur DC-DC, oscillateur d'horlogeAjouter un filtrage entrée/sortie, étalement de spectre
Émissions rayonnées par les câblesCâbles non blindés agissant comme antennesAjouter des selfs de mode commun, utiliser des câbles blindés
Large bande haute fréquenceFronts numériques rapides, mauvaise mise à la masseRalentir les fronts, améliorer le plan de masse
Conduit basse fréquenceOndulation de l'alimentation à découpageAjouter un filtre de mode différentiel en entrée

Suivez quels modes de défaillance apparaissent à travers les produits dans TofuPilot. Si chaque produit échoue sur la 3e harmonique de la fréquence de commutation, standardisez votre conception de filtre d'entrée.

Tests ESD

L'ESD est l'échec de test d'immunité le plus courant. Enregistrez les résultats de test ESD de manière systématique.

esd_test.py
esd_levels = [
    {"mode": "contact", "voltage_kv": 4, "result": "pass"},
    {"mode": "contact", "voltage_kv": 6, "result": "pass"},
    {"mode": "contact", "voltage_kv": 8, "result": "fail_recoverable"},
    {"mode": "air", "voltage_kv": 8, "result": "pass"},
    {"mode": "air", "voltage_kv": 15, "result": "pass"},
]

measurements = []
for test in esd_levels:
    passed = test["result"] == "pass"
    measurements.append({
        "name": f"esd_{test['mode']}_{test['voltage_kv']}kv",
        "value": 1 if passed else 0,
        "unit": "pass/fail",
        "limit_low": 1,
    })

client.create_run(
    procedure_id="EMC-ESD-PRECOMPLIANCE",
    unit_under_test={"serial_number": "PROTO-REV-C"},
    run_passed=all(t["result"] == "pass" for t in esd_levels),
    steps=[{
        "name": "Immunité ESD selon IEC 61000-4-2",
        "step_type": "measurement",
        "status": True,
        "measurements": measurements,
    }],
)

De la pré-conformité à la certification

Les données de pré-conformité dans TofuPilot servent de cahier d'ingénierie pour la CEM. Quand vous arrivez au laboratoire d'essai :

  • Vous connaissez vos marges à chaque fréquence
  • Vous savez quelles modifications de conception ont amélioré ou dégradé les performances
  • Vous avez un historique de chaque itération de test
  • Si vous échouez, vous disposez de données pour guider la correction au lieu de repartir de zéro

Plus de guides

Mettez ce guide en pratique