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
| Test | Norme | Ce qu'il mesure |
|---|---|---|
| Émissions rayonnées | CISPR 32, FCC Part 15 | Énergie RF rayonnée par le produit |
| Émissions conduites | CISPR 32, FCC Part 15 | Bruit RF sur les lignes d'alimentation |
| Immunité rayonnée | IEC 61000-4-3 | Résistance aux champs RF externes |
| Immunité ESD | IEC 61000-4-2 | Résistance aux décharges électrostatiques |
| Immunité aux surtensions | IEC 61000-4-5 | Résistance aux surtensions du réseau |
| Immunité conduite | IEC 61000-4-6 | Ré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é
| Équipement | Utilisation | Coût typique |
|---|---|---|
| Jeu de sondes champ proche | Localiser les sources d'émission sur le PCB | 500-2 000 $ |
| Analyseur de spectre | Mesurer le contenu fréquentiel | 5 000-30 000 $ |
| RSIL (Réseau Stabilisateur d'Impédance de Ligne) | Mesure des émissions conduites | 2 000-5 000 $ |
| Antenne CEM (biconique + log-périodique) | Mesure des émissions rayonnées | 3 000-8 000 $ |
| Enceinte blindée ou site de test en espace libre | Environnement 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
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
# É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).
| Marge | Niveau de risque | Action |
|---|---|---|
| > 10 dB | Faible | Procéder à la certification |
| 6-10 dB | Moyen | Procéder, mais avoir des plans d'atténuation prêts |
| 3-6 dB | Élevé | Corriger avant la certification |
| < 3 dB | Trè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éfaillance | Cause typique | Correction |
|---|---|---|
| Harmoniques de la fréquence de commutation | Convertisseur DC-DC, oscillateur d'horloge | Ajouter un filtrage entrée/sortie, étalement de spectre |
| Émissions rayonnées par les câbles | Câbles non blindés agissant comme antennes | Ajouter des selfs de mode commun, utiliser des câbles blindés |
| Large bande haute fréquence | Fronts numériques rapides, mauvaise mise à la masse | Ralentir les fronts, améliorer le plan de masse |
| Conduit basse fréquence | Ondulation de l'alimentation à découpage | Ajouter 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_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