Un Module à 8 ou 16 Mosfets
Cet article fait suite à celui-ci :
https://riton-duino.blogspot.com/2019/01/mosfets-de-puissance.html
Lorsque l'on veut alimenter une charge (un moteur, une pompe, une vanne, des rubans de LEDs, etc.) à l'aide d'une tension continue le premier réflexe du débutant est de penser à des relais.
Une carte à relais ressemble à un canon pour tuer une mouche quand on veut commuter une charge 5V 12V ou 24V, sans parler de l'encombrement, du bruit et de la fiabilité :
Cette carte a des dimensions imposantes : 180mm * 90mm * 20mm.
N'y a t'il pas d'autre alternative ? Heureusement, si.
Pour commuter une charge en basse tension continue un MOSFET est tout à fait à son aise.
1. Le relais
Le relais a de multiples inconvénients :
- le bruit
- la consommation
- la résistance de contact
1.1. La puissance de commande
La bobine d'un relais courant 5V du type SRD-05VDC-SL-C, qui équipe la majeure partie des cartes du commerce, consomme 70mA, soit 350mW sous 5V.
Lorsque l'on a besoin de 8 ou 16 relais cela devient vite prohibitif.
1.2. La résistance de contact
La résistance de contact de ces relais est de 100mΩ, ce qui implique que pour une dizaine d'ampères qui le traversent, la dissipation thermique sera importante :
P = R * I² = 0.1 * 10² = 10W
10W est une puissance énorme au vu de la taille du relais et de sa capacité à dissiper cette puissance, difficile à dissiper d'ailleurs à travers un boîtier plastique.
L'élévation de température peut occasionner un blocage du relais.
On a souvent des retours négatifs sur la fiabilité de ces relais lorsqu'ils sont utilisés à leurs limites.
La première alternative qui vient à l'esprit est le relais statique (solid state) :
Module relais SSR 2A |
Module 8 relais SSR 2A |
Relais SSR 10A |
Relais SSR 25A avec dissipateur |
Si l'on a besoin de à 8 ou 16 relais pour un courant de 10A, cette solution occupe une place énorme et le prix sera conséquent.
2. Le MOSFET
2.1. La puissance de commande
La puissance nécessaire pour commander un MOSFET est tout simplement nulle. Cela élimine d'office toute consommation du côté commande.
2.2. La résistance à l'état passant
On trouve couramment des MOSFETs ayant une résistance interne en mode passant (RDSon) de quelques milliohms.
Le très courant IRLZ44N a une résistance de 25mΩ. Quant à l'excellent IRLB3034 sa résistance est de seulement 2mΩ.
Il va sans dire que la dissipation d'un tel transistor sera ridicule à 10A :
P = R * I² = 0.001 * 10² = 0.2W
Il ne nécessitera pas le moindre dissipateur.
2.3. La tension de commande
Il est impératif, lorsque l'on désire commander un MOSFET à l'aide d'une tension de 5V, de choisir un MOSFET "Logic Level", c'est à dire commutable à l'aide d'une tension de grille faible.
Ce critère est encore plus important si la tension de commande est de 3.3V.
Cet article présente une liste de MOSFETs utilisables dans le monde ARDUINO ou ESP8266, ESP32, etc. :
https://riton-duino.blogspot.com/2019/01/mosfets-de-puissance.html
Les MOSFETs "Logic Level" sont indiqués en vert.
2.4. Le contrôle PWM
Avec un MOSFET il est facile de contrôler la vitesse d'un moteur ou la luminosité d'un ruban de LEDs avec une sortie PWM d'un microcontrôleur, ce qui serait impossible avec un relais.
3. La disponibilité
S'il est facile de trouver des modules relais de toutes tailles, il n'en va pas de même quand il s'agit de modules à MOSFETs.
Tout d'abord un petit mot à propos des module équipés d'IRF520, IRF530 ou IRF540 : ils sont tout bonnement inutilisables avec une tension de commande de 5V si le courant à commuter est important. A éviter absolument.
Seulement quelques modèles "Logic Level" existent sur le marché :
IRLR7843 |
AOD4184 |
Ci-dessous quelques modules personnels :
IRLZ44N |
AOI403 |
A ma connaissance aucun module à MOSFETs multiples n'existe.
Alors que faire ? Do It Yourself !
La carte que je vais présenter est équipée de 16 MOSFETs de puissance moyenne AO3400 (5A maximum).
On pourra facilement la personnaliser :
- utiliser des MOSFETs plus puissants
- utiliser des MOSFETs en boîtier traversant (TO220 ou IPAK)
- etc.
4. Le schéma
Pour récupérer le projet voir plus bas : 7. Téléchargements.
L'AO3400 est un MOSFET canal N supportant 30V maxi et 5.6A. Sa faible tension VGSth de 1.45V maxi permet de le commander même avec un processeur 3.3V, un ESP8266 ou un ESP32 par exemple.
La carte est équipée d'un connecteur DUPONT 17 broches GND + 16 entrées.
Un connecteur DUPONT 32 broches est utilisé pour les 16 sorties.
Un connecteur 2 broches permet d'alimenter en 5V, 12V, ou 24V.
Cette carte est prévue pour de la puissance moyenne : 1A par sortie et 3A au total. Elle peut être utilisée par exemple pour piloter 16 rubans de LEDs 5630 12V de petite taille, jusqu'à une soixantaine de LEDs, soit 1m de ruban.
Sur chaque canal on trouve un MOSFET canal N et deux résistances :
Le transistor est piloté par une sortie du microcontrôleur à travers une résistance de 220Ω dont le but est de limiter le courant d'appel lors de la montée du signal sur la grille, ceci afin de protéger la sortie du microcontrôleur. Une résistance de pull-down de 100KΩ est câblée entre grille et source afin de ne pas laisser la grille en l'air dans le cas où la sortie du microcontrôleur est en haute impédance, au démarrage par exemple.
5. Pilotage
Piloter une carte carte à 8 canaux à l'aide de 8 sorties d'un ARDUINO, un ESP8266 ou un ESP32 est envisageable, bien que cela soit dommage de monopoliser autant de sorties pour si peu de choses.
A moins de disposer d'une carte ARDUINO MEGA une carte à 16 canaux pourra difficilement se passer d'un module expander :
Module MCP23017 |
Ce module I2C dispose de 16 sorties. On le reliera au bus I2C de l'ARDUINO et on pourra donc piloter 16 canaux avec simplement 2 sorties :
- ARDUINO : A4 et A5
- ESP8266 : GPIO4 et GPIO5
- ESP32 : GPIO21 et GPIO22
Il existe d'autres versions :
- MCP23008 : 8 sorties
- PCF8577 : 8 sorties
- PCF8575 : 16 sorties
- SX1509 : 16 sorties PWM
D'autres choix sont proposés ici :
Les extensions de GPIOs de l'ARDUINO
Bien entendu il existe des librairies pour piloter ces modules :
- MCP23008 : https://github.com/adafruit/Adafruit-MCP23008-library.git
- MCP23SXX : https://github.com/sumotoy/gpio_MCP23SXX
- MCP23017 : https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library.git
- MCP23S17 : https://github.com/n0mjs710/MCP23S17.git
- PCF857X : https://github.com/skywodd/pcf8574_arduino_library
- PCF8574 : https://github.com/RobTillaart/PCF8574
La plupart sont installables depuis le gestionnaire de bibliothèques de l'IDE ARDUINO.
Ici se trouve un article récent traitant du sujet :
Piloter des Relais ou des MOSFEts à l'aide d'un Module MCP23008 ou MCP23017
6. La charge inductive
Comme pour le pilotage d'un relais, si l'on veut piloter un moteur continu, ou une électrovanne, en fait toute charge inductive, il faut penser à mettre en place une diode de roue libre en parallèle sur la charge :
La diode protège le transistor des surtensions provoquées par le solénoïde lorsque celui-ci est coupé.
7. Photos
Tous les composants sont des modèles CMS.
La carte a des dimensions réduites : 100mm x 37mm, le quart de la surface d'un module à 16 relais. Chez JLCPCB on pourra commander 5 PCB de 100mm x 100mm pour 9€. Chaque PCB peut contenir 2 modules. Chaque module revient donc à 0.90€.
Le prix de revient de cette carte est ridicule :
- un lot de 50 AO3400 à 1.30€ : 0.42€ les 16 pièces
- 2 jeux de 100 résistances CMS à 0.50€ pièce : 0.32€ les 32 pièces
- 2 connecteurs DUPONT 40 broches (à recouper) : 0.25€
- le PCB : 0.90€
Au total chaque carte revient à 1.90€. En comparaison un module 16 relais coûte 9€.
Les connecteurs sont coudés, ce qui permet de les souder sur ce PCB maison simple face. Dans le cas d'un PCB double face à trous métallisés on pourra utiliser des connecteurs droits.
Cet autre modèle développé précédemment utilisait 8 MOSFETs IRLZ44NS et des résistances traversantes :
Mis à part le nombre et le type de MOSFETs utilisés le schéma électronique est strictement identique au précédent.
Elle est équipée d'un connecteur DUPONT 9 broches GND + 8 entrées. Elle est également équipée de borniers :
- bornier 16A d'alimentation de puissance à gauche (maxi 55V pour l'IRLZ44N)
- 8 borniers 7A pour 8 charges
Son prix de revient :
- un lot de 10 IRLZ44N à 1.80€ : 1.44€ les 8 pièces
- 2 jeux de 100 résistances 1/4W à 1.50€ pièce : 0.24€ les 16 pièces
- 1 connecteurs DUPONT 40 broches (à recouper) : 0.12€
- un lot de 30 borniers à 5€ : 1.50€ les 9 pièces
- plaquette à pastilles 8x12 : 1€
Au total chaque carte revient à 4,30€. En comparaison un module 8 relais coûte 6€.
Le câblage de puissance de cette carte est réalisé avec du fil rigide :
- liaisons entre borne d'entrée - et sources des MOSFETs (1.5mm²)
- liaisons entre borne d'entrée + et bornes de sortie + (1.5mm²)
- liaisons entre bornes de sortie - et drains des MOSFETs (0.5mm²)
Le câblage entre entrées et résistances de grille est fait en fil à wrapper.
Elle peut fournir environ 5A par sortie et 16A au total. On pourrait admettre plus d'ampérage en câblant à l'aide de fil de 2.5mm² et en utilisant d'autres borniers supportant un ampérage plus élevé.
Comme on le voit, même avec une plaquette à pastilles il est parfaitement possible de construire un module à MOSFETs digne de ce nom.
8. Téléchargement
Le projet est disponible ici :
9. Conclusion
Un module 8 ou 16 MOSFETs est simple à concevoir et son prix de revient est ridicule.
Cordialement
Henri
Excellent !
RépondreSupprimerC'est pile ce que je cherche à faire. Vos explications sont super claires. Un régal.
Je cherche à réaliser un ensemble de relais pour piloter une armoire à gaz pour une manip particulière dans mon labo. Je dois actionner des solénoïdes qui fonctionnent en 24V/4W (soit environ 160mA). C'est pas Violent, mais c'est plutôt pratique. Puis-je revenir vers vous si j'ai des questions complémentaires ?
Oui, sans problème.
SupprimerPour des solénoïdes il faudra penser à installer des diodes de roue libre, comme pour un relais.
Voir le paragraphe 6. La charge inductive, que je viens d'ajouter.
Bonjour, j'ai une dernière (enfin je pense) question à vous poser. Quelle est l'utilité des résistances de 220 Ohm et 2 kOhm. Comment sont elles dimensionnée ? Est-ce juste pour adapter la tension appliquée depuis le GPIO sur la grille, via l'utilisation d'un diviseur de tension ?
SupprimerJuste pour limiter le courant de grille lors des commutations, car la grille se comporte comme un condensateur. Cela protège le microcontrôleur.
SupprimerEDIT : je viens de trouver le paragraphe magique sur votre article. Désolé pour le dérangement.
SupprimerMerci beaucoup. Par contre, en regardant la liste des MOS dispo chez les fournisseurs, c'est la misère. Je pense qu'il faudra peut-être faire un montage plus sioux avec un premier transistor (pas un MOS) qui servira d'interrupteur piloté par l'arduino (ou le STM32, j'ai pas encore choisi) pour activer un MOS qui sera alimenté par une autre alim...
RépondreSupprimerha ben tant que j'y suis... comme je vous l'ai dit, je doit piloter un solénoïde MAC 34C-ABA-GDFC-1KT qui actionne des vanne de gaz sur une machine de dépôt. La doc de ces solénoïdes indique 24V/4W. J'en déduit que le solénoïde consomme de l'ordre de 167mA et que c'est donc ce qui va passer à travers le MOS. Dois-je considérer que n'importe lequel des MOSFETs avec VDSS> 24V et ID> 170mA que vous listez dans l'article dédié aux MOSFETs de puissance fera l'affaire ? Merci
SupprimerOui, à condition que le seuil de tension de commande VGSth soit suffisamment faible, surtout si c'est un STM32. Choisir les MOSFETs marqués en vert, dits logic level.
SupprimerComme fournisseur il y a AliExpress :
https://fr.aliexpress.com/item/898096337.html?gatewayAdapt=glo2fra&spm=a2g0o.9042311.0.0.9ffb6c37kX9D2w
HAHAHA !!! Ali Express ! Je suis sûr que le contrôleur financier de mon école va se mettre en PLS si je lui propose de commander sur Ali Express. C'est qu'il ne rigole pas avec l'argent Public. Je viens plutôt de trouver ça sur votre liste : https://www.tme.eu/fr/katalog/?search=AO4822&s_field=1000011&s_order=desc
SupprimerBon, les AO4822 sont des MOSFET DUAL. Mais c'est pas grave. En plus apparemment, il intègre des diodes de roue libre pour chaque MOSFET dans le boîtier (dixit la data sheet).
Maintenant je cherche des expanders en SOIC et surtout en stock. En attendant la livraison, je vais pouvoir découvrir les joies de l'I2C.
Non, la diode est intrinsèque. Elle n'a rien à voir avec une diode de roue libre, qui elle est placée en parallèle sur la charge.
Supprimerok.merci... Je vais la rajouter sur KiCAD
SupprimerInfo : je viens de trouver un site qui donne les stocks de composants chez divers fournisseurs (au moins 80 fournisseurs différents). En cette période de pénurie, c'est vraiment utile (surtout si on ne peut pas comme moi commander du Aliexpress).
RépondreSupprimeril s'agit de findchips.com/search
Effectivement, très utile.
SupprimerBonjour Henri, merci pour cela, c'est très intéressant et bien expliqué. Une question, cependant - après lecture du dossier complémentaire sur bitbucket ... dans le plan https://bitbucket.org/henri_bachetti/arduino-prototyping/src/master/mosfet-module/sot23/sot23-module.kicad_pcb à quoi correspond le « GDS » ?
RépondreSupprimerLe routage n'est pas ce qui se fait de mieux pour comprendre un schéma. Voir le .sch, et éventuellement le brochage du MOSFET.
Supprimer