Tests RF et calibration avec TofuPilot
Tout produit sans fil nécessite des tests RF : puissance de sortie, sensibilité du récepteur, précision fréquentielle, émissions parasites. Pour les produits intégrant WiFi, Bluetooth, LoRa, cellulaire ou un RF propriétaire, ces mesures déterminent si le produit respecte les exigences réglementaires et fonctionne réellement sur le terrain. TofuPilot stocke les données de test RF pour le suivi de tendances, le suivi de calibration et la conformité.
Paramètres de test RF
| Paramètre | Ce qu'il mesure | Pourquoi c'est important |
|---|---|---|
| Puissance TX de sortie (dBm) | Intensité du signal transmis | Trop élevée : violation réglementaire. Trop faible : mauvaise portée |
| Sensibilité RX (dBm) | Signal minimum recevable | Détermine la portée de réception |
| Erreur de fréquence (ppm) | Précision du quartz/oscillateur | Affecte l'interopérabilité |
| EVM (Error Vector Magnitude) | Qualité de modulation | Affecte le débit de données |
| Émissions parasites | Sortie RF non intentionnelle | Conformité réglementaire |
| Précision RSSI | Indicateur d'intensité du signal reçu | Affecte la gestion de liaison |
Enregistrement des résultats de test RF
Test paramétrique RF de base
from tofupilot import TofuPilotClient
client = TofuPilotClient()
def rf_production_test(serial, tx_power, rx_sensitivity, freq_error_ppm, evm_pct):
client.create_run(
procedure_id="RF-PARAMETRIC-BLE",
unit_under_test={
"serial_number": serial,
"part_number": "IOT-SENSOR-V3",
},
run_passed=True,
steps=[{
"name": "TX Performance",
"step_type": "measurement",
"status": 0 <= tx_power <= 4,
"measurements": [
{"name": "tx_power_dbm", "value": tx_power, "unit": "dBm", "limit_low": 0, "limit_high": 4},
{"name": "freq_error_ppm", "value": freq_error_ppm, "unit": "ppm", "limit_low": -20, "limit_high": 20},
{"name": "evm_pct", "value": evm_pct, "unit": "%", "limit_high": 30},
],
}, {
"name": "RX Performance",
"step_type": "measurement",
"status": rx_sensitivity <= -90,
"measurements": [
{"name": "rx_sensitivity_dbm", "value": rx_sensitivity, "unit": "dBm", "limit_high": -90},
],
}],
)Test RF multi-canaux
Testez sur tous les canaux de fonctionnement pour détecter les problèmes spécifiques à un canal.
# Le BLE possède 40 canaux (0-39)
# Tester un ensemble représentatif
test_channels = [0, 12, 19, 20, 38, 39]
measurements = []
for ch in test_channels:
set_channel(ch)
power = measure_tx_power()
measurements.append({
"name": f"tx_power_ch{ch}_dbm",
"value": power,
"unit": "dBm",
"limit_low": 0,
"limit_high": 4,
})
client.create_run(
procedure_id="RF-MULTI-CHANNEL-BLE",
unit_under_test={"serial_number": serial},
run_passed=all(0 <= m["value"] <= 4 for m in measurements),
steps=[{
"name": "Multi-Channel TX Power",
"step_type": "measurement",
"status": True,
"measurements": measurements,
}],
)Calibration RF
De nombreux produits sans fil nécessitent une calibration RF par unité pour compenser les tolérances des composants. Le processus de calibration :
- Mesurer la puissance TX réelle à un niveau de référence
- Calculer l'écart par rapport à la cible
- Écrire une valeur de calibration dans la flash/EEPROM du DUT
- Vérifier que la sortie calibrée correspond à la cible
def calibrate_rf(serial):
# Étape 1 : Mesurer la puissance non calibrée
raw_power = measure_tx_power()
# Étape 2 : Calculer l'offset de calibration
target_power = 0.0 # dBm
cal_offset = target_power - raw_power
# Étape 3 : Écrire la calibration dans le DUT
write_cal_value(cal_offset)
# Étape 4 : Vérifier
calibrated_power = measure_tx_power()
client.create_run(
procedure_id="RF-CALIBRATION-BLE",
unit_under_test={"serial_number": serial},
run_passed=abs(calibrated_power - target_power) < 1.0,
steps=[{
"name": "TX Calibration",
"step_type": "measurement",
"status": True,
"measurements": [
{"name": "raw_tx_power_dbm", "value": raw_power, "unit": "dBm"},
{"name": "cal_offset_db", "value": cal_offset, "unit": "dB"},
{"name": "calibrated_tx_power_dbm", "value": calibrated_power, "unit": "dBm",
"limit_low": -1.0, "limit_high": 1.0},
],
}],
)Suivi des performances RF en production
Distribution des offsets de calibration
La distribution des offsets de calibration renseigne sur la cohérence de votre matériel RF. Une distribution serrée (petits offsets) indique une fabrication PCB cohérente. Une distribution large ou dérivante suggère :
- Variation de placement d'antenne
- Variation d'impédance du PCB
- Changements de lot de composants (balun, réseau d'adaptation)
Puissance TX dans le temps
Tracez la puissance TX sur l'ensemble de la production. Recherchez :
| Tendance | Cause |
|---|---|
| Dérive progressive | Dérive de calibration de l'équipement de test |
| Changement brusque | Nouveau lot de composants, révision PCB |
| Variance accrue | Variation du processus de fabrication |
| Échecs dépendants du canal | Problèmes d'antenne ou de réseau d'adaptation |
Surveillance de la sensibilité RX
La sensibilité du récepteur est plus difficile à mesurer en production (nécessite un environnement blindé et une source de signal calibrée). Suivez-la pour détecter :
- Dégradation du gain du LNA
- Désaccord de filtre
- Augmentation du facteur de bruit due aux modifications de routage
Considérations sur les bancs de test
Les tests RF nécessitent des environnements RF contrôlés :
| Configuration | Cas d'usage | Isolation |
|---|---|---|
| Boîte blindée | Tests de production | 60-80 dB |
| Chambre anéchoïque | Caractérisation d'antenne | 80+ dB |
| Câble RF (conduit) | Tests au niveau carte | Connexion directe |
Enregistrez le type et le numéro de série du banc de test avec chaque exécution. Si les résultats de test RF changent, la calibration du banc ou l'état du câble peut avoir évolué.
Données de conformité réglementaire
La certification RF (FCC, CE, IC, MIC) exige des données de test spécifiques. Bien que les tests de certification soient réalisés dans des laboratoires accrédités, les données de pré-conformité de TofuPilot vous aident à :
- Prédire les résultats de certification en fonction des marges de production
- Comparer les unités de production à l'unité certifiée d'origine
- Suivre les modifications qui pourraient invalider la certification