ESP32 - Module MOSFET
Ce tutoriel vous explique comment utiliser l'ESP32 pour allumer et éteindre une charge DC 12V, régler sa puissance avec un module MOSFET, et afficher le niveau de puissance dans le Moniteur Série. Le tutoriel fonctionne de la même façon pour les modules AOD4184, LR7843 et FR120N, et montre comment câbler un ruban LED ainsi qu'un moteur DC ou un ventilateur.
Matériel Requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 (ESP32 inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
À Propos du Module MOSFET
Une broche GPIO de l'ESP32 fournit seulement 3,3V et quelques milliampères. C'est suffisant pour une petite LED, mais beaucoup trop peu pour un ruban LED 12V, un moteur DC, un ventilateur, une pompe, une électrovanne ou un élément chauffant. Le module MOSFET joue le rôle d'interrupteur électronique entre les deux. L'ESP32 envoie un signal faible, et le module laisse passer le courant fort de la charge.
Trois versions de ce module sont sur le marché : AOD4184 (la même puce est aussi vendue sous le nom D4184), LR7843 et FR120N. La carte est identique pour les trois. La taille, les broches, le câblage et le code ne changent pas. La seule différence est la puce MOSFET au centre, qui décide de la tension et du courant que la carte peut supporter.
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| La puce MOSFET | AOD4184A (canal N) | IRLR7843 (canal N) | IRFR120N (canal N) |
| La tension de charge max (valeur de la puce) | 40V DC | 30V DC | 100V DC |
| Le courant max (valeur de la puce) | 50A | 161A | 9,4A |
| La résistance à l'état passant RDS(on) | environ 7 mΩ | environ 3,3 mΩ | environ 210 mΩ |
| Le courant pratique sans dissipateur | environ 10–15A | environ 15A | environ 2A |
| Le signal de commande | logique 3,3V / 5V, actif HIGH | logique 3,3V / 5V, actif HIGH | logique 3,3V / 5V, actif HIGH |
| L'isolation | optocoupleur PC817 | optocoupleur PC817 | optocoupleur PC817 |
| La prise en charge du PWM | oui, rester ≤ ~1 kHz | oui, rester ≤ ~1 kHz | oui, rester ≤ ~1 kHz |
| Le type de charge | DC uniquement | DC uniquement | DC uniquement |
Pour choisir, pensez à votre charge. Le LR7843 a la résistance la plus faible, donc il reste le plus frais quand un fort courant circule. Utilisez-le pour les rubans LED 12V ou 24V de forte puissance et les gros moteurs, mais jamais au-dessus de 30V. L'AOD4184 est le choix intermédiaire sûr : un courant élevé et jusqu'à 40V, ce qui couvre les charges 12V, 24V et 36V. Le FR120N accepte la tension la plus haute, jusqu'à 100V, mais sa résistance est beaucoup plus élevée. Il chauffe donc vite, alors gardez-le pour les petites charges 24V ou 48V d'environ 2A.
Ne vous fiez pas trop aux chiffres de 50A ou 161A. Ils décrivent la puce seule, pas cette petite carte. Sur la carte, la chaleur est la vraie limite. Après quelques minutes de fonctionnement de la charge, touchez le MOSFET avec précaution. S'il est trop chaud, ajoutez un dissipateur ou utilisez une charge plus petite.
Brochage du Module MOSFET

Les broches sont à deux endroits. Un petit connecteur à 2 broches (pas de 2,54mm) sert à l'ESP32, il se branche donc facilement sur une breadboard. Une rangée de trois borniers à vis sert à la charge et à son alimentation.
Connecteur de commande :
- Broche PWM : connectez cette broche à une broche GPIO de l'ESP32 (GPIO18 dans ce tutoriel)
- Broche GND : connectez cette broche à GND de l'ESP32
Borniers à vis :
- Broche + : connectez cette broche au fil positif de l'alimentation de la charge (par ex. 12V) et au fil positif de la charge. Les deux fils partagent ce seul bornier
- Broche LOAD : connectez cette broche au fil négatif de la charge. C'est le côté que le MOSFET commute
- Broche − : connectez cette broche au fil négatif (masse) de l'alimentation de la charge
Les étiquettes imprimées peuvent changer un peu d'un lot à l'autre, alors lisez le texte sur votre propre carte avant de câbler.
Nous vous recommandons vivement le module AOD4184 si vous ne savez pas lequel acheter.
Comment Fonctionne le Module MOSFET
Le signal de GPIO18 n'arrive pas directement au MOSFET. Il entre par la broche PWM, passe par une petite résistance, et allume une minuscule LED à l'intérieur de l'optocoupleur PC817. Cette lumière active un phototransistor dans la même puce, et le phototransistor alimente la grille du MOSFET. Une résistance sur la grille la ramène à 0V dès que l'optocoupleur est éteint. Le MOSFET lui-même se trouve entre le bornier LOAD et le bornier −, tandis que la charge est branchée entre + et LOAD. Ce que fait la charge dépend donc uniquement de l'état de la broche PWM, et il y a trois états possibles.
Quand GPIO18 sort 0V (LOW)
Avec 0V sur la broche PWM, aucun courant ne peut traverser la LED de l'optocoupleur, qui reste donc éteinte. Le phototransistor reste donc bloqué, et la résistance de grille maintient la grille du MOSFET à 0V. Le MOSFET est OFF, ce qui veut dire que le chemin de LOAD vers − est ouvert, comme un interrupteur ouvert. Le fil négatif de la charge n'a aucun retour vers l'adaptateur, donc aucun courant ne circule et la charge reste à 0V. Vous obtenez cet état avec analogWrite(MOSFET_PIN, 0) ou digitalWrite(MOSFET_PIN, LOW).
Quand GPIO18 sort 3,3V (HIGH)
L'ESP32 ne fournit que 3,3V, mais c'est suffisant : la LED de l'optocoupleur n'a besoin que de quelques milliampères, donc la broche GPIO peut la piloter directement (une carte 5V fonctionnerait de la même façon). La LED s'allume à l'intérieur de la puce, où vous ne pouvez pas la voir, et le phototransistor s'active. La grille du MOSFET reçoit alors environ la moitié de l'alimentation de la charge, soit environ 6V avec un adaptateur 12V. Le MOSFET passe complètement ON et se comporte comme un interrupteur fermé avec une très faible résistance, seulement quelques mΩ sur les cartes AOD4184 et LR7843 et environ 0,2Ω sur la carte FR120N. Le courant va du plus de l'adaptateur vers le bornier +, traverse la charge, entre dans le bornier LOAD, traverse le MOSFET, sort par le bornier − et revient au moins de l'adaptateur. La charge reçoit presque les 12V complets et fonctionne à pleine puissance. Dans le code, c'est analogWrite(MOSFET_PIN, 255) ou digitalWrite(MOSFET_PIN, HIGH).
Quand GPIO18 sort un signal PWM
Un signal PWM est simplement les deux états ci-dessus, répétés très vite. Avec analogWrite(), GPIO18 passe de LOW à HIGH environ 1000 fois par seconde, et le MOSFET copie chaque changement : il est ON pendant chaque partie HIGH et OFF pendant chaque partie LOW. La charge reçoit donc de courtes impulsions de 12V. La part de temps pendant laquelle la broche reste HIGH s'appelle le rapport cyclique, et la valeur que vous passez à analogWrite() le règle (rapport cyclique = valeur / 255). La tension moyenne et la puissance que reçoit la charge sont simplement le rapport cyclique multiplié par la valeur maximale. Avec une alimentation 12V, par exemple :
- 10% (valeur 26) : ON un dixième du temps, moyenne d'environ 1,2V, une très faible lueur ou une rotation lente
- 50% (valeur 128) : ON la moitié du temps, moyenne d'environ 6V, environ la moitié de la puissance
- 90% (valeur 230) : ON neuf dixièmes du temps, moyenne d'environ 10,8V, proche de la pleine puissance
Un ruban LED ne clignote pas de façon visible à cette vitesse, il paraît simplement moins lumineux. Un moteur, un ventilateur ou une pompe tourne plus lentement, car la masse de son rotor lisse les impulsions. Gardez une fréquence basse, autour de 500 Hz à 1 kHz, car le PC817 est un composant lent. À une fréquence bien plus haute, le MOSFET n'a pas le temps de commuter complètement, la charge reçoit des impulsions brouillonnes au lieu d'impulsions nettes, et le MOSFET chauffe. La fonction analogWrite() de l'ESP32 utilise déjà 1 kHz par défaut, donc aucun changement n'est nécessaire. Le code de ce tutoriel utilise ce cas PWM pour faire passer la puissance de 10% à 100% par paliers.
Quelques autres faits sur la carte vous aident à éviter les problèmes :
- L'optocoupleur sépare électriquement le côté ESP32 et le côté charge. Le GND du signal et le GND de la charge ne sont pas reliés sur la carte, et vous ne devez pas les relier.
- Comme le MOSFET est de type canal N côté bas, il coupe le fil négatif de la charge, pas le positif.
- La tension de grille vient de l'alimentation de la charge à travers un diviseur de tension, c'est pourquoi elle ne vaut qu'environ la moitié de cette alimentation. L'alimentation de la charge doit donc être d'environ 6V ou plus. Choisissez 9V ou plus quand la charge consomme plus de quelques ampères. Une alimentation de charge de 5V ne fonctionnera pas bien.
- La carte n'a pas de diode de roue libre (flyback). Les moteurs, pompes, électrovannes et relais en ont besoin d'une, ajoutée en dehors de la carte.
- Elle est réservée aux charges DC. Ne l'utilisez jamais avec le courant secteur AC. Pour les appareils AC, consultez le ESP32 - Relais..
Schéma de Câblage
L'alimentation 12V va uniquement aux borniers à vis du module. Ne la laissez jamais toucher une broche de l'ESP32.
Comment connecter l'ESP32 et le module MOSFET avec un ruban LED 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions dans le tutoriel suivant : Comment alimenter l'ESP32..
| De | Vers |
|---|---|
| ESP32 GPIO18 | Broche PWM du module |
| ESP32 GND | Broche GND du module |
| Adaptateur 12V + (via la prise jack DC) | Bornier + du module |
| Adaptateur 12V − (via la prise jack DC) | Bornier − du module |
| Ruban LED + | Bornier + du module (partagé avec le + de l'adaptateur) |
| Ruban LED − | Bornier LOAD du module |
Comment connecter d'autres appareils 12V au module MOSFET
De nombreux appareils peuvent remplacer le ruban LED. GPIO18 et GND de l'ESP32 restent câblés exactement comme dans le tableau ci-dessus, donc les images ci-dessous montrent seulement le côté alimentation. Le schéma ne change jamais : le positif de l'adaptateur va à +, le négatif de l'adaptateur va à −, le fil positif de l'appareil va aussi à +, et son fil négatif va à LOAD.
Choisissez un adaptateur de la même tension que votre appareil, donc un appareil 12V avec un adaptateur 12V. Quel que soit l'appareil, l'alimentation ne doit pas être inférieure à 6V. Pensez aussi au courant que consomme votre appareil. La carte FR120N ne peut gérer que des appareils légers d'environ 2A sans dissipateur, alors que les cartes AOD4184 et LR7843 conviennent à des appareils plus puissants.
Vous pouvez garder le code ESP32 exactement tel quel pour tous ces appareils. Avec une serrure à solénoïde ou une électrovanne, envoyez cependant seulement la pleine puissance ou zéro (HIGH ou LOW) et laissez de côté la variation progressive.
Utilisation d'un moteur DC 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Connectez le fil positif du moteur au bornier + et le fil négatif du moteur à LOAD. Un moteur contient une bobine, et quand le MOSFET s'éteint, cette bobine renvoie un pic de tension. Avec le temps, ce pic peut endommager le MOSFET. Pour l'absorber, placez une diode de roue libre (flyback) comme une 1N5819 ou une 1N4007 aux bornes du moteur, avec son extrémité rayée (la cathode) sur le fil positif du moteur et son autre extrémité (l'anode) sur le fil négatif du moteur. Les appareils à bobine plus bas ont besoin de cette même diode, placée de la même façon.
Le rapport cyclique PWM contrôle la vitesse, mais dans un seul sens. Si vous avez besoin que le moteur tourne dans les deux sens, utilisez un pilote comme le L298N, comme montré dans le ESP32 - Moteur à courant continu..
Utilisation d'un ventilateur de refroidissement 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Le fil rouge du ventilateur est le positif et va au bornier +, et le fil noir va à LOAD. Si votre ventilateur a un troisième fil jaune, il sert seulement à indiquer la vitesse, laissez-le donc non connecté. Ajoutez aussi la diode de roue libre ici ; elle coûte peu et ne fait aucun mal. Beaucoup de ventilateurs refusent de démarrer à un rapport cyclique très bas, alors commencez autour de 30% ou plus.
Utilisation d'une pompe à eau 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Câblez le positif de la pompe au bornier + et le négatif de la pompe à LOAD, et placez la diode de roue libre aux bornes de la pompe. Un rapport cyclique plus élevé pousse plus d'eau. Assurez-vous que la pompe est toujours sous l'eau, car la faire tourner à sec peut la détruire.
Utilisation d'une électrovanne 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Le positif de la vanne va au bornier + et le négatif de la vanne va à LOAD, avec la diode de roue libre à ses bornes. Une vanne normalement fermée s'ouvre quand l'ESP32 met le module complètement ON, et se referme quand il le met OFF. N'essayez pas de la faire varier avec le PWM ; elle est soit ouverte, soit fermée.
Utilisation d'une serrure à solénoïde 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Connectez le positif de la serrure au bornier + et le négatif de la serrure à LOAD, et ajoutez la diode de roue libre. Pilotez la serrure seulement complètement ON ou complètement OFF. Sa bobine chauffe vite, alors mettez-la ON pendant un court instant pour ouvrir le loquet, puis remettez-la OFF. Un exemple complet de serrure de porte se trouve dans le ESP32 - Serrure à solénoïde..
Utilisation d'un ruban LED 12V monochrome

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
C'est le même circuit que le schéma principal, vu du côté alimentation. Le positif du ruban, souvent imprimé 12V, va au bornier +, et le négatif du ruban va à LOAD. Un ruban LED n'a pas de bobine, il n'a donc pas besoin de diode. Le rapport cyclique règle la luminosité. Gardez à l'esprit qu'un ruban plus long consomme plus de courant, alors vérifiez sa valeur nominale avant de choisir un module. Les rubans RGB et adressables demandent une configuration différente.
Comment Programmer le Module MOSFET
Aucune bibliothèque n'est nécessaire. Le code utilise des fonctions déjà intégrées au noyau ESP32.
- Donner un nom à la broche GPIO qui pilote le module : const int MOSFET_PIN = 18;
- Configurer la broche en sortie : pinMode(MOSFET_PIN, OUTPUT);
- Allumer complètement la charge : analogWrite(MOSFET_PIN, 255); (ou digitalWrite(MOSFET_PIN, HIGH);)
- Éteindre complètement la charge : analogWrite(MOSFET_PIN, 0); (ou digitalWrite(MOSFET_PIN, LOW);)
- Régler une partie de la puissance, par exemple 50% : analogWrite(MOSFET_PIN, 128);
- Convertir un pourcentage en valeur PWM de 0 à 255 : int duty = map(percent, 0, 100, 0, 255);
Code ESP32 - Module MOSFET
Le code ci-dessous allume complètement la charge pendant 2 secondes et l'éteint complètement pendant 2 secondes. Ensuite, il augmente la puissance de 10% à 100% par paliers de 10%, un palier toutes les demi-secondes, puis la redescend à 0% de la même façon. Après une pause d'1 seconde, le cycle recommence.
Étapes Rapides
Si c'est la première fois que vous utilisez l'ESP32, consultez Installation du logiciel ESP32..
- Câblez l'ESP32, le module MOSFET, le ruban LED (ou le ventilateur) et l'alimentation 12V comme indiqué dans le schéma ci-dessus.
- Branchez le câble USB sur l'ESP32 et sur votre PC. Gardez l'adaptateur 12V débranché pour le moment.
- Ouvrez Arduino IDE, puis sélectionnez la carte ESP32 Dev Module et le bon port COM.
- Copiez le code ci-dessus et collez-le dans Arduino IDE.
- Cliquez sur le bouton Téléverser dans Arduino IDE pour compiler et téléverser le code vers l'ESP32.
- Branchez l'adaptateur secteur 12V.
- Cliquez sur l'icône Moniteur Série, puis saisissez ou sélectionnez 9600 comme débit en bauds.
- Observez le ruban LED : pleine luminosité pendant 2 secondes, sombre pendant 2 secondes, puis il devient lentement plus lumineux et lentement plus faible. Un ventilateur fera la même chose avec sa vitesse.
- Regardez les messages dans le Moniteur Série.
Si la charge ne s'allume pas du tout, vérifiez d'abord la tension d'alimentation de la charge. Rappelez-vous qu'elle doit être d'environ 6V ou plus.