Alimentation Linéaire

Transformer un chargeur USB-C PD en alimentation linéaire programmable.

Principe de fonctionnement

Réalisation d’une alimentation de laboratoire à partir d’un chargeur USB-C

L’objectif de ce projet est de réaliser une alimentation de laboratoire à partir d’un chargeur USB-C de nouvelle génération.

Ces chargeurs sont devenus de véritables dispositifs « intelligents ». Ils sont disponibles dans différentes puissances, généralement de 15 W à 100 W, voire davantage pour certains modèles. Le connecteur USB-C intègre notamment deux lignes de communication, appelées CC (Configuration Channel), qui permettent d’établir un dialogue entre la source d’alimentation Power Delivery Source et l’appareil connecté Sink.

Grâce au protocole USB Power Delivery (USB-PD), les deux appareils communiquent afin de déterminer la tension et le courant les mieux adaptés aux besoins du récepteur.

Lors de la connexion, la source transmet à l’appareil ses différentes capacités de puissance, appelées Power Data Objects ou PDO. Par exemple :

L’appareil connecté, après avoir pris connaissance de ces différentes possibilités, sélectionne et négocie avec la source un PDO, c’est-à-dire un « contrat » définissant la tension et le courant qui seront fournis.

C’est précisément cette possibilité qui m’intéresse dans le cadre de ce projet. En exploitant le protocole USB Power Delivery, il est possible de sélectionner une tension d’entrée plus élevée pour mon alimentation linéaire. Cela permet de réduire la différence de tension entre l’entrée et la sortie du régulateur linéaire et, par conséquent, de diminuer les pertes de puissance dissipées dans le ballast.

Cette approche devrait ainsi permettre d’améliorer le rendement global de l’alimentation tout en conservant les avantages d’une régulation linéaire, notamment en matière de stabilité et de faible bruit de sortie.

Synthèse des principales spécifications

Caractéristique Spécification
Tension de sortie maximale 19.5 V
Courant de sortie maximal 2.5 A
Résolution du réglage de tension0.1 V
Résolution du réglage de courant0.1 A
Source d’alimentationUSB-C Power Delivery
Type de régulationLinéaire
Protection thermiqueOui
Limitation de courantOui
Protection contre les courts-circuitsOui
Affichage tension / courantOui
FormatCompact et transportable

Choix des composants

Pour la gestion du protocole USB Power Delivery, j’ai choisi d’utiliser le circuit intégré STUSB4500 de STMicroelectronics.

Ce choix s’est notamment appuyé sur l’étude d’un projet existant réalisé par Paul Strell, dont je me suis inspiré pour la conception de mon alimentation.

Le STUSB4500 présente l’avantage de pouvoir gérer de manière autonome la négociation d’un contrat USB Power Delivery avec la source d’alimentation, sans nécessiter l’intervention permanente d’un microcontrôleur. Il est ainsi capable de recevoir les informations transmises par le chargeur, notamment les Source Capabilities, qui correspondent aux différents profils de tension et de courant que celui-ci est capable de fournir.

Ces informations sont temporairement stockées dans la mémoire RAM du STUSB4500 et doivent être récupérées suffisamment rapidement si l’on souhaite les exploiter dans le cadre de la conception.

Lors de mes premiers essais, j’ai cependant rencontré une difficulté : je n’ai pas réussi à récupérer les Source Capabilities suffisamment tôt pour pouvoir les conserver et les exploiter directement. J’ai donc adopté une autre méthode pour contourner cette limitation.

J’ai demandé au STUSB4500 de négocier un nouveau contrat avec la source, en sélectionnant un profil couramment disponible, à savoir 5 V / 3 A. Cette nouvelle négociation provoque une nouvelle transmission des Source Capabilities par le chargeur, ce qui me permet alors de les récupérer et de les exploiter.

Cette solution constitue donc une étape intermédiaire dans le fonctionnement de mon alimentation. Elle me permet de connaître les différentes tensions disponibles auprès de la source USB-PD et, à terme, de sélectionner le contrat le plus adapté à la tension de sortie demandée par l’utilisateur.

L’utilisation du STUSB4500 est particulièrement intéressante pour ce projet puisqu’elle permet de décharger le microcontrôleur de la gestion bas niveau du protocole USB-PD et de disposer d’une interface relativement simple pour piloter et superviser la négociation avec le chargeur.

TPS62175 Convertisseur abaisseur (buck)
Connecteur USB-C

Pour dissiper une puissance suffisante au niveau du transistor ballast, j'ai choisi de le monter sur un ventirad (un radiateur équipé d'un ventilateur). Cette solution permet de mieux maîtriser la température du composant, même lorsque l'alimentation débite à pleine charge sur une longue durée.

Le ventirad nécessite une alimentation de 5 V et consomme environ 100 mA. Or, la carte de commande que j'utilise ne dispose pas de rail 5 V : elle ne fournit que du 3,3 V et une tension négative de −2,5 V. Il me fallait donc générer ce 5 V à part.

Pour cela, j'utilise un TPS62175, un convertisseur abaisseur (buck) dont la tension d'entrée peut aller de 4,75 V à 28 V. Il peut ainsi être raccordé directement à la tension VUSB, qui varie entre 5 V et 20 V selon le profil négocié en USB Power Delivery. Quelle que soit cette tension d'entrée, il délivre un 5 V stable pour le ventirad.

Un convertisseur à découpage est préférable à un simple régulateur linéaire dans ce cas : avec 20 V en entrée, un régulateur linéaire dissiperait 1,5 W sous forme de chaleur pour alimenter un ventilateur de 0,5 W, ce qui serait un contresens dans un montage dont le but est justement de gérer la chaleur.

Mesure et commande de l’alimentation

Je ne vais pas approfondir le fonctionnement de l’étage de régulation linéaire, celui-ci reposant sur une architecture relativement classique. Je vais en revanche détailler davantage les circuits utilisés pour la mesure de la tension et du courant, ainsi que pour la génération des consignes de régulation.

Mesure du courant et de la tension

Pour la mesure du courant, j’ai choisi d’utiliser le circuit INA226, qui permet d’effectuer une mesure précise du courant et de la tension, tout en offrant la possibilité de calculer directement la puissance consommée par la charge.

La mesure du courant est réalisée à l’aide d’une résistance shunt de 0,022 Ω, placée en série avec la sortie de l’alimentation. Cette faible valeur permet de limiter la chute de tension engendrée par la mesure.

À courant maximal, soit 2,5 A, la chute de tension aux bornes du shunt est de :

U = R × I = 0,022 Ω × 2,5 A = 55 mV

La chute de tension reste donc relativement faible, ce qui limite l’impact de la mesure sur la tension disponible en sortie.

L’INA226 mesure cette faible différence de potentiel aux bornes de la résistance shunt et permet d’en déduire le courant qui traverse la charge. Il mesure également la tension du circuit et peut calculer directement la puissance consommée, selon la relation :

P = U × I

Ces différentes informations pourront ensuite être transmises à la carte de commande afin d’être affichées à l’utilisateur.

Génération des consignes

La carte de commande dispose également de deux convertisseurs numériques-analogiques (DAC). Ceux-ci permettent de générer les tensions de consigne nécessaires au pilotage de l’alimentation.

Un DAC est utilisé pour définir la consigne de tension de sortie, tandis que le second permet de définir la consigne de courant maximal.

Le microcontrôleur peut ainsi modifier numériquement ces deux consignes en fonction des réglages effectués par l’utilisateur. La régulation linéaire compare ensuite ces consignes aux valeurs réellement mesurées afin d’adapter son fonctionnement et de maintenir la tension et le courant aux valeurs demandées.

Cette architecture permet donc de séparer clairement les différentes fonctions du système : le STUSB4500 assure la gestion de la négociation USB Power Delivery, l’INA226 assure la mesure électrique, tandis que les DAC permettent au système de commande de définir précisément les paramètres de régulation.

Le ballast

Dans une alimentation linéaire, le ballast absorbe la différence entre la tension d'entrée et la tension de sortie. Pour mon alimentation de labo alimentée en USB-PD (5 à 20 V, jusqu'à 2,5 A), il me fallait un composant à faible chute de tension, robuste à 20 V et capable de dissiper plusieurs watts sur un radiateur.

J'avais d'abord simulé un Darlington PNP (TIP147), mais sa tension de saturation dépasse 1 V et il demande un courant de base important. Un MOSFET canal P se pilote en tension, et sa chute n'est que Rds(on) × I.

L'IRF4905 répond bien à ce besoin :

L'IRF4905 est spécifié pour 10 V de grille. Ici, la grille est tirée vers −2,5 V, ce qui donne environ 7,3 V de Vsg à 5 V d'entrée : le MOSFET est presque pleinement passant, avec une chute légèrement supérieure à celle annoncée dans la fiche technique. Sa diode interne impose aussi de gérer le retour de courant vers l'entrée (firmware et résistance de décharge sur la sortie), et une zener protège la grille.

Dimensionnement thermique du ballast

Ventirad HZ30B05A
Afin de maintenir le transistor ballast IRF4905 à une température acceptable, la puissance dissipée est limitée à 10 W. Le refroidissement est assuré par un ventirad HZ30B05A, dont la résistance thermique radiateur-air est d'environ 4,7 K/W.

Pour une dissipation de 10 W, l'élévation de température du radiateur par rapport à l'air ambiant est estimée à :

ΔTSA = P × RθSA = 10 × 4,7 = 47 °C

À une température ambiante de 25 °C, le radiateur atteindrait donc environ 72 °C. Il faut également tenir compte des résistances thermiques entre la jonction du transistor et le radiateur. En considérant environ 0,75 K/W pour la jonction-boîtier et 0,5 K/W pour l'interface boîtier-radiateur, la résistance thermique totale est d'environ 5,95 K/W.

RθJA = RθJC + RθCS + RθSA = 0,75 + 0,5 + 4,7 = 5,95 K/W

La température de jonction estimée pour une dissipation continue de 10 W et une température ambiante de 25 °C est alors :

TJ = TA + P × RθJA = 25 + 10 × 5,95 ≈ 85 °C

Cette température reste largement inférieure à la température de jonction maximale admissible du transistor. Le ventirad HZ30B05A offre ainsi une solution de refroidissement adaptée à l'objectif de 10 W de dissipation continue du ballast, tout en conservant une marge thermique confortable.

Schéma partie numériques-analogiques

Asservissement courant / tension

La régulation de l'alimentation repose sur deux boucles d'asservissement : l'une contrôle le courant délivré à la charge et l'autre contrôle la tension de sortie. Ces deux boucles agissent sur le même transistor ballast Q5 afin de maintenir la sortie à la valeur demandée tout en limitant le courant lorsque cela est nécessaire.

L'INA180A est utilisé comme amplificateur de mesure de courant. Il amplifie la faible tension présente aux bornes du shunt de 0,022 Ω, placé en série avec la sortie. Son gain de 50 V/V permet d'obtenir une tension directement proportionnelle au courant traversant la charge : pour 1 A, le shunt produit une chute de tension de 22 mV, amplifiée par l'INA180A en une tension de 1,1 V.

La tension issue de l'INA180A est appliquée au comparateur U5, où elle est comparée à la consigne de courant I_Set générée par le DAC du microcontrôleur. Lorsque le courant tend à dépasser la valeur de consigne, U5 agit sur la commande de Q5 afin de réduire sa conduction et ainsi limiter le courant délivré à la charge.

Une diode Schottky, dont la tension directe est d'environ 0,3 V, est placée sur la sortie de l'amplificateur. Elle permet de décaler le niveau de commande et garantit que lorsque la sortie du comparateur atteint VSS = -2,5 V, le transistor Q5 est correctement bloqué.

La régulation de tension est assurée par un second comparateur, U7. Celui-ci compare la tension de sortie mesurée à la consigne de tension et agit également sur la commande de Q5. Les deux boucles peuvent ainsi agir sur le transistor ballast : en fonctionnement normal, la boucle de tension maintient la tension de sortie à la valeur demandée, tandis que la boucle de courant prend le relais lorsque la limite de courant est atteinte.

Jumper VDD
Alimentation externe
VentiRad
HZ30B05A
Ballast
IRF4905

Problème rencontré lors de la mise au point du firmware

La carte de commande est alimentée par le Power Delivery (STUSB4500). Pour lire les PDO (les profils de tension proposés par la source), le STUSB4500 doit effectuer une négociation, ce qui se produit au branchement du câble USB-C ou après un reset.

Pour tester le firmware sans débrancher le câble à chaque essai, il faut donc simuler un branchement en resettant le STUSB4500. Or ce reset coupe l'alimentation issue du PD, et avec elle celle du processeur : le firmware s'arrête avant d'avoir pu lire les PDO.

Solution : un jumper sur l'entrée VDD de la carte de commande. Pendant le développement, je retire le jumper et j'alimente la carte de commande avec une source externe. Le processeur reste alors sous tension, et je peux resetter le STUSB4500 à volonté pour relancer la négociation et lire les PDO.

Montage du transistor ballast (IRF4905)

Le transistor ballast IRF4905 dissipe l'essentiel de la puissance de l'alimentation linéaire. Il est donc refroidi par un ventirad.

Ventirad : contraction de « ventilateur » et « radiateur », il désigne un radiateur sur lequel un ventilateur est directement intégré.

Pour pouvoir fixer le ventirad, l'IRF4905 est monté couché (horizontalement) et retourné à l'envers. Ainsi, sa languette métallique, qui évacue la chaleur du boîtier, reste dégagée sur le dessus de la carte et le ventirad peut être posé directement dessus.

Commentaires