Le test des rails d'alimentation valide que les régulateurs de tension produisent une sortie correcte avant d'exercer les composants en aval. Exécutez ces vérifications en premier : un rail défaillant contamine chaque mesure suivante et risque d'endommager le dispositif sous test.
Prérequis
- Compte TofuPilot et clé API
- OpenHTF et TofuPilot installés (
pip install openhtf tofupilot) - Alimentation de banc ou fixation avec ligne d'activation d'alimentation contrôlable
- Multimètre numérique ou DAQ accessible depuis Python
Rails d'alimentation courants sur un PCBA
| Rail | Source typique | Nominal (V) | Tolérance courante | Plage de charge |
|---|---|---|---|---|
| 3,3V | LDO ou buck (ex. TPS62840) | 3,3 | +/-2% | 0-500 mA |
| 5V | Boost ou USB VBUS | 5,0 | +/-5% | 0-2 A |
| 1,8V | LDO (ex. TLV75518) | 1,8 | +/-2% | 0-300 mA |
| 1,2V | LDO ou buck de cœur | 1,2 | +/-3% | 0-1 A |
| 12V | Boost ou entrée directe | 12,0 | +/-5% | 0-3 A |
| VBAT | Cellule Li-ion | 3,0-4,2 | variable | N/A |
Définir les limites à partir des fiches techniques
Tirez les limites directement de la fiche technique du régulateur de tension.
TPS62840 (buck 3,3V, Texas Instruments)
- Précision de sortie typique : +/-1,5% à température ambiante
- Sur la plage de température : +/-2,5%
- Test de production à température ambiante, utilisez +/-2% : 3,234 V à 3,366 V
TLV75518 (LDO 1,8V, Texas Instruments)
- Précision initiale : +/-0,75%
- Ajoutez +/-0,5% pour la tolérance du pont diviseur résistif
- Test de production, utilisez +/-1,5% : 1,773 V à 1,827 V
Ajoutez toujours une marge pour la précision de votre système de mesure. Un ADC 16 bits avec une référence de 5 V introduit environ +/-0,08 mV de quantification.
Techniques de mesure
| Mesure | Instrument | Quand utiliser |
|---|---|---|
| Tension DC | DMM / ADC | Chaque unité |
| Courant à vide | Pince de courant ou résistance de détection | Premier article, inspection entrante |
| Courant en charge | Retour d'information de l'alimentation | Test fonctionnel |
| Ondulation (crête à crête) | Oscilloscope ou ADC RMS | Validation de conception, défauts échappés |
Séquencement de l'alimentation
- Activer l'alimentation de banc ou le relais de fixation
- Attendre que le régulateur le plus lent se stabilise (typiquement 1 à 5 ms)
- Mesurer tous les rails
- Exécuter les tests fonctionnels
- Désactiver les rails dans l'ordre inverse
Test OpenHTF complet avec TofuPilot
tests/power_rails_test.py
import timeimport openhtf as htffrom openhtf.util import unitsfrom tofupilot.openhtf import TofuPilotclass PowerFixturePlug(htf.plugs.BasePlug): """Contrôle le relais de fixation et lit les tensions depuis un DAQ.""" def enable_power(self): # Activer le relais de fixation pour appliquer la tension au DUT pass def disable_power(self): # Désactiver le relais de fixation pass def read_voltage(self, channel: str) -> float: # Retourner la tension DC en volts sur le canal nommé # Remplacer par votre pilote d'instrument réel voltages = { "rail_3v3": 3.312, "rail_1v8": 1.796, "rail_5v0": 4.985, } return voltages.get(channel, 0.0) def read_current_amps(self, channel: str) -> float: # Retourner le courant en ampères via la résistance de détection currents = { "rail_3v3_current": 0.142, "rail_1v8_current": 0.085, "rail_5v0_current": 0.310, } return currents.get(channel, 0.0) def tearDown(self): self.disable_power()@htf.plug(fixture=PowerFixturePlug)def enable_and_settle(test, fixture): """Activer l'alimentation du DUT et attendre la stabilisation de tous les régulateurs.""" fixture.enable_power() time.sleep(0.010) # 10 ms couvre le soft-start du TPS62840 et du TLV75518@htf.plug(fixture=PowerFixturePlug)@htf.measures( htf.Measurement("rail_3v3_voltage") .in_range(minimum=3.234, maximum=3.366) .with_units(units.VOLT) .doc("Rail 3,3V : TPS62840 +/-2% à température ambiante"), htf.Measurement("rail_3v3_current") .in_range(minimum=0.0, maximum=0.500) .with_units(units.AMPERE) .doc("Courant consommé sur le rail 3,3V"),)def check_3v3_rail(test, fixture): test.measurements.rail_3v3_voltage = fixture.read_voltage("rail_3v3") test.measurements.rail_3v3_current = fixture.read_current_amps("rail_3v3_current")@htf.plug(fixture=PowerFixturePlug)@htf.measures( htf.Measurement("rail_1v8_voltage") .in_range(minimum=1.773, maximum=1.827) .with_units(units.VOLT) .doc("Rail 1,8V : TLV75518 +/-1,5% incluant la tolérance du diviseur"), htf.Measurement("rail_1v8_current") .in_range(minimum=0.0, maximum=0.300) .with_units(units.AMPERE) .doc("Courant consommé sur le rail 1,8V"),)def check_1v8_rail(test, fixture): test.measurements.rail_1v8_voltage = fixture.read_voltage("rail_1v8") test.measurements.rail_1v8_current = fixture.read_current_amps("rail_1v8_current")@htf.plug(fixture=PowerFixturePlug)@htf.measures( htf.Measurement("rail_5v0_voltage") .in_range(minimum=4.750, maximum=5.250) .with_units(units.VOLT) .doc("Rail boost 5V +/-5%"), htf.Measurement("rail_5v0_current") .in_range(minimum=0.0, maximum=2.000) .with_units(units.AMPERE) .doc("Courant consommé sur le rail 5V"),)def check_5v0_rail(test, fixture): test.measurements.rail_5v0_voltage = fixture.read_voltage("rail_5v0") test.measurements.rail_5v0_current = fixture.read_current_amps("rail_5v0_current")@htf.plug(fixture=PowerFixturePlug)def disable_power_phase(test, fixture): """Désactiver l'alimentation du DUT après toutes les mesures.""" fixture.disable_power()def main(): test = htf.Test( enable_and_settle, check_3v3_rail, check_1v8_rail, check_5v0_rail, disable_power_phase, test_name="Power Rails Test", ) with TofuPilot(test): test.execute(test_start=lambda: input("Entrez le numéro de série : ").strip())if __name__ == "__main__": main()Diagnostic des défaillances de rails d'alimentation
| Symptôme | Cause probable | Première vérification |
|---|---|---|
| La tension lit 0 V | Régulateur non activé ; fusible d'entrée grillé | Vérifier le niveau logique de la broche d'activation ; mesurer la tension d'entrée |
| Tension en dessous du minimum | Limite de courant atteinte ; sous-tension d'entrée | Mesurer le courant consommé ; vérifier la chute de tension de l'alimentation d'entrée |
| Tension au-dessus du maximum | Résistance de rétroaction ouverte ou de mauvaise valeur | Mesurer le pont diviseur de rétroaction ; confirmer la nomenclature |
| Tension oscillante / bruitée | Condensateur de sortie manquant ou de mauvais type | Vérifier l'ESR du condensateur de sortie ; inspecter les composants en pierre tombale |
| Tension correcte, courant excessif | Court-circuit sur un net en aval | Déconnecter les charges une par une pour isoler le court-circuit |
| Démarrage progressif trop lent | Gros condensateur de sortie ; mauvaise résistance de soft-start | Comparer le temps de montée mesuré à la spécification de la fiche technique |