[Tech] Fail en H et gain d’expérience

A l’origine, cet article devait également parler de moteurs brushless, mais j’ai décidé d’en faire deux articles, car cela aurait été trop long. Cet article est déja long, car j’ai volontairement détaillé son contenu pour qu’il soit facile à comprendre.

Vous connaissez tous les ponts en H: ce sont ces réseaux de transistors de puissance qui servent à changer le sens de rotation des moteurs. Plus généralement, ce sont des éléments de commande de puissance permettant le changement du sens du courant dans chaque ligne de puissance. On peut s’en servir pour plein de choses: commander un moteur DC, pas à pas, ou brushless, piloter un élément Peltier, etc. ou tout élément de puissance nécessitant un changement rapide du sens du courant qui le traverse.

Si on a pas besoin de commuter rapidement le sens du courant, un relais 2RT fait l’affaire 🙂

Nous verrons plus tard comment fonctionne un moteur brushless. Pour l’instant, disons seulement qu’il faut donc une carte de commutation pour changer le sens du courant dans les phases du moteur. Pas de secret, il y a plein de docs sur le sujet sur Internet. Cette carte de commutation génère les signaux logiques (0V-5V), mais évidemment, il faut des transistors de commande.

Il y a deux manières de réaliser un pont en H avec des MOSFETs:

Types de ponts
Types de ponts
  • Soit avec des FETs de type N coté “masse”, et des FETs de type P coté “alim”. C’est cette solution que j’ai choisie.
  • Soit avec uniquement des MOSFETs de type N, et un montage “compliqué” qui génère des tensions flottantes pour commander les FETs du coté “alim”. Des chips intégrés existent, mais pour un proto, ça n’est pas du tout amusant.

Pour rappel, le pilotage d’un FET se fait en appliquant une tension entre Grille et Source (VGS = Ug-Us), ce qui autorise le passage d’un courant entre drain et source (Id).

Pour le FET N, cette tension VGS doit être positive. Le FET N est conducteur quand sa grille est à une tension supérieure à sa tension de déclenchement (5-6V environ pour les MOSFETs de puissance), et il est isolant quand sa grille est à la masse. Entre les deux, le FET est dans une zone où il se comporte linéairement, mais la pente de la courbe Id en fonction de Vgs est très raide, il y a beaucoup de variations entre différents composants d’une même série, et les MOSFETs de puissance détestent travailler dans ce mode “résistif” où ils chauffent beaucoup. Mais ça marche, j’ai déja fait une source de courant variable de cette manière, en utilisant un ampli-op pour asservir la tension aux bornes d’un shunt (avec un gros radiateur, et un MOSFET N qui supportait 100A – en commutation, car en linéaire, c’est beaucoup moins).

Pour le FET P, cette tension VGS doit être négative. Et la source est reliée à l’alimentation. Le FET P est conducteur quand sa grille est à une tension inférieure d’environ 5-6V à la tension d’alim du moteur, et il est isolant quand sa grille est à la tension d’alimentation. Attention, je répète je n’ai pas dit que la tension de grille était à 5V, j’ai bien dit 5V en dessous de la source! Pour une tension d’alim de 12V, le FET P connecté à l’alim est donc totalement conducteur quand la tension sur sa grille est en dessous de 7V (=12-5).

On remarque vite que des niveaux logiques ne conviennent pas pour piloter des MOSFETs. Les courants débités par les microcontrôleurs sont déjà un problème, ils sont trop faibles, ce qui va ralentir le temps de commutation des FETs (et donc les faire chauffer). Les tensions surtout posent problème:

  • A zéro volts, on peut bloquer le FET N, et rendre le FET P passant.
  • Mais à 5 volts, le FET N est partiellement passant, et le FET P est toujours passant, car il reste encore 7V (12-5 dans notre cas) entre G et S.

Il faut donc translater ces niveaux de tension à des valeurs qui permettent de faire fonctionner les FETs.

Mon idée initiale a été d’utiliser des transistors bipolaires que j’avais déja, des BC547 et BC557, et des résistances de pull up/down pour réaliser ces translateurs de niveau. Voici en gros le schéma utilisé (les transistors supplémentaires coté N sont censés être des inverseurs pour que toutes les commandes soient positives:

Pont à pilotage Bipolaire
Pont approximativement pifométrique, qui aurait dû marcher. Dessin Kicad.

Grossière erreur, surtout du coté des FET N : les valeurs de composants utilisés ont été calculés de manière totalement “proto-pifométrique-fond-de-tiroir”, je fais passer du courant dans la base mais pas trop, ça saturera à tous les coups, ben… non, ça ne marche pas! Une mesure rapide des niveaux de tension obtenus m’a rapidement montré des tensions bien trop faibles pour commuter les FET N de manière fiable. Après quelques minutes de fonctionnement, un passage de doigt sur les FET m’a révélé une température bien au delà du raisonnable (je me suis pas brûlé, mais ma sueur s’est évaporée avec un petit pshitt), et maintenant, le moteur saute des pas, alors qu’au début de la manip, au moins, toutes les étapes de la commutation étaient observables. J’ai donc explosé au moins un FET N par l’épreuve du feu. Contrairement aux régulateurs de tension et autres, les FETs ne sont donc pas du tout protégés en température…

Mon erreur a été de négliger le pilotage correct des MOSFETs. Ce montage aurait dû marcher, je ne pense pas qu’il soit faux, c’est un problème de choix de composants.

Je dois dire que je suis passé à deux doigts de laisser tomber ce sous-projet (alors que je néglige ma shapeoko), qui était censé être un bricolage rapide du week end. Tout ceci se passait, bien entendu, le dimanche soir à 1h du matin, avec le boulot le lendemain, et pas mal de fatigue accumulée. Un peu désespéré, j’ai googlé “mosfet drive” un peu plus longtemps que d’habitude, et je suis tombé sur cette magnifique page qui expliquait exactement ce que j’avais besoin de savoir: le B-A-BA du pilotage des mosfets avec des composants discrets:

http://modularcircuits.tantosonline.com/blog/articles/h-bridge-secrets/h-bridge_drivers/

Cet article fait en fait partie d’une grande série:

http://modularcircuits.tantosonline.com/blog/articles/h-bridge-secrets/

Voyez vous, ce n’est pas que j’adore réinventer la roue, mais je veux comprendre ce que je fais, alors utiliser un circuit intégré pour piloter un FET dans un prototype, ce n’est pas mon truc. Je sais que ça existe, je sais que ça marche, donc je n’utiliserais ce genre de circuit que si, justement, la compréhension du pilotage des FET n’est pas le point central du projet.

Bref, malgré l’envie de dormir, je lis la page sus-citée, qui mentionne un montage particulièrement intéressant. Je vous la fais en résumé: Puisque le problème des FET est leur pilotage par des niveaux logiques, eh bien on essayons d’utiliser des FETs dont les tension de commutation sont compatibles avec des niveaux logiques. Ces FETs existent, mais ils ne sont pas capables de commuter de grosses charges.

Ce translateur de niveau est un simple MOSFET N dont le niveau logique est compatible avec des signaux logiques. On peut utiliser pour ça le BS170, qui est un FET N de faible puissance, mais dont la tension de déclenchement est de 3V, c’est directement compatible avec un signal logique. Ce MOSFET est câblé en drain ouvert (équivalent du collecteur ouvert) et peut donc “clamper” sa sortie à la masse, qui sera le niveau “0”. Le niveau “1”, lui, est indéfini, il est présent quand le FET est isolant, et sa tension est définie par un pull-up externe, que l’on connecte donc entre le drain et le +12V. On a donc construit un translateur de niveau inverseur.

Le problème est maintenant déplacé: on sait transformer des signaux 0V-5V en signaux 0V-12V, mais le signal haut (+12) n’est pas très franc: A cause de la capacité d’entrée du FET, la résistance du pull-up implique un temps de commutation plus élevé (T=RC), ce qui va certaiment faire chauffer le transistor. On peut régler ce problème en diminuant le pull-up (mais la conso augmentee inutilement) ou en intercalant un inverseur CMOS discret, constitué d’une paire de mos complémentaires (BS170 et BS250): Cet inverseur sera très rapidement déclenché par la tension issue du pull-up, mais il pourra fournir un courant élevé au FET final, car cette paire est directement connectée à l’alimentation, sans résistance. Voici à quoi cela ressemble:

Pilotage CMOS
Pilotage CMOS (R= 4K7) Chaque MOSFET de puissance a droit au même circuit.

J’insiste sur ce point du chargement correct et rapide de la capacité d’entrée des transistors MOSFET, car c’est un sujet très important pour la commutation de (grande) puissance. Pendant le chargement, le FET est demi-passant, et c’est principalement à ce moment qu’il chauffe. Ce n’est pas négligeable, car en PWM, il y a beaucoup de commutations! Regardez un datasheet, la capacité est donnée directement en nano-coulombs, ce qui donne le temps de commutation du FET: Q=IT -> T=Q/I, le temps de commutation est donc d’autant plus court que le courant de commutation est important.

Il peut y avoir un dernier problème, qui ne nous concerne pas vraiment, mais qui devient important si les tensions de pilotage sont plus élevées: la grille d’un FET ne supporte pas toujours la tension d’alimentation du moteur. Il y a en général une limite (destructive) vers 15V. On va alors piloter la grille du FET via un régulateur shunt Résistance Série/Zener à la masse, ce qui évite de le détruire.

Je n’ai pas abordé le sujet des ponts à base de FET N uniquement, il faut savoir qu’ils ont besoin d’une pompe de charge pour produire une tension VGS suffisante pour le FET coté alim. En général, cette pompe implique que le FET supérieur ne peut pas rester enclenché pendant un temps infini, car la pompe de charge a des fuites inévitables et demande un rechargement régulier. Il faut piloter ces ponts en PWM et s’assurer que les FETs supérieurs ne sont jamais pilotés par un PWM à 100%. Pour mon prototype, c’est assez gênant pour faire des essais à basse vitesse, c’est pour ça que je n’ai pas choisi cette conception même si les FET N sont moins chers et plus efficaces que les FET P. Je réserverai les FET N au montage final, si j’en ai besoin.

Voici donc la fin de mon tour d’horizon sur le pilotage des ponts en H, si on veut en savoir plus, je recommande chaudement la lecture des pages que j’ai trouvées, qui décrit avec une infinité de détails tout ce que l’on peut faire avec des ponts. Ces articles sont vraiment très, très complets, je n’ai pas encore eu le temps de tout lire! Je terminerai avec une image de l’état actuel du montage:

Prototype
Le prototype

C’est un pont à 3 branches, pour piloter un moteur brushless. La position des transistors est prévue pour une fixation sur un radiateur de CPU… Ne pas oublier les kits d’isolation, les semelles sont connectées aux drains! J’ai ajouté une résistance de 0R1 pour mesurer le courant consommé.

A+ pour l’application aux brushless!

2 réflexions au sujet de « [Tech] Fail en H et gain d’expérience »

  1. Excellent article.
    Je ne sais pas trop quelle valeur de courant tu cherches à faire passer mais des MOSFET ayant des Vgsth compatibles avec la logique et pouvant faire passer pas mal de courant existent vraiment.
    Par exemple j’aime bien le IRLML2502, pour son boitier minuscule, il peut faire passer 4.2A en continu avec un Vgsth entre 0.6 et 1.2v. Il y a aussi le IPA50R299CP (que j’ai pris surtout pour son Vdsmax de 500v) qui lui peut passer 12A en continu (26A en pulse) pour un Vgsth typique de 3v.
    Sur farnell on en trouve des tas qui passent encore plus de courant pour cette gamme de Vgsth.
    Pour mes ponts en H j’utilise le SI4599 qui contient une paire de mosfet N et P qui peuvent faire passer environ 6A en continu pour des Vgsth entre 1.4v et 3v pour le N et -1.2 à -2.5v pour le P.

    1. Hello,

      Merci pour le commentaire.
      Quel courant je cherche à faire passer? Pas énormément, c’est un proto, sans prétention.

      Je me suis volontairement donné beaucoup de contraintes dont je n’ai pas parlé dans l’article. En particulier, j’aime faire ce genre de proto rapidement, donc c’était en effet Farnell ou Selectronic Nation. Mais je n’ai pas de compte farnell et je n’ai pas envie de payer 12 zorros de frais de port, vu que les composants pour ce montage ont couté au total moins de 20 euros 🙂

      Donc chez Selectronic, autant il y a un grand choix de mosfets N, autant ils sont limites en mosfet P. Donc j’ai choisi un modèle IRF9540 de 19 ampères pour le P, et le N est un IRL540, qui passe plus.

      Disons donc 10-15 ampères. Pour un moteur de CD ROM c’est largement suffisant (pour faire fumer le fil émaillé 😀 )

      Tes références sont très intéressantes, je les garde pour des montages plus modestes. Mais elles sont un peu limites en courant, si je fais moi même un montage pour la broche de ma CNC, je viserai plutôt les 100 ampères, et du coup, je prendrai que des mosfets N à très faible RDSon, et j’utiliserai un circuit de commande dédié.

      Le coup de la paire intégrée est particulièrement intéressant aussi 🙂

      A+
      Sébastien

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *