Test Types & Methods

Tester les rails d'alimentation PCBA

Apprenez à tester les rails d'alimentation d'un PCBA avec Python, incluant les limites des régulateurs de tension, les vérifications de courant, le.

JJulien Buteau
beginner8 min de lecture14 mars 2026

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

RailSource typiqueNominal (V)Tolérance courantePlage de charge
3,3VLDO ou buck (ex. TPS62840)3,3+/-2%0-500 mA
5VBoost ou USB VBUS5,0+/-5%0-2 A
1,8VLDO (ex. TLV75518)1,8+/-2%0-300 mA
1,2VLDO ou buck de cœur1,2+/-3%0-1 A
12VBoost ou entrée directe12,0+/-5%0-3 A
VBATCellule Li-ion3,0-4,2variableN/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

MesureInstrumentQuand utiliser
Tension DCDMM / ADCChaque unité
Courant à videPince de courant ou résistance de détectionPremier article, inspection entrante
Courant en chargeRetour d'information de l'alimentationTest fonctionnel
Ondulation (crête à crête)Oscilloscope ou ADC RMSValidation de conception, défauts échappés

Séquencement de l'alimentation

  1. Activer l'alimentation de banc ou le relais de fixation
  2. Attendre que le régulateur le plus lent se stabilise (typiquement 1 à 5 ms)
  3. Mesurer tous les rails
  4. Exécuter les tests fonctionnels
  5. 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ômeCause probablePremière vérification
La tension lit 0 VRé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 minimumLimite de courant atteinte ; sous-tension d'entréeMesurer le courant consommé ; vérifier la chute de tension de l'alimentation d'entrée
Tension au-dessus du maximumRésistance de rétroaction ouverte ou de mauvaise valeurMesurer le pont diviseur de rétroaction ; confirmer la nomenclature
Tension oscillante / bruitéeCondensateur de sortie manquant ou de mauvais typeVérifier l'ESR du condensateur de sortie ; inspecter les composants en pierre tombale
Tension correcte, courant excessifCourt-circuit sur un net en avalDéconnecter les charges une par une pour isoler le court-circuit
Démarrage progressif trop lentGros condensateur de sortie ; mauvaise résistance de soft-startComparer le temps de montée mesuré à la spécification de la fiche technique

Plus de guides

Mettez ce guide en pratique