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 time
import openhtf as htf
from openhtf.util import units
from tofupilot.openhtf import TofuPilot
class 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 |