ESP32 S3 - Module MOSFET

Avec un petit module MOSFET, votre ESP32 S3 peut contrôler une charge DC 12V et choisir la puissance qu'elle reçoit. Chacune des trois cartes DIYables (AOD4184, LR7843 ou FR120N) convient à ces étapes : prenez celle que vous avez et construisez votre premier projet de puissance.

Ce que vous allez construire dans ce tutoriel :

  1. Ce qu'est un module MOSFET et ce qui se passe à l'intérieur
  2. Comment connecter le module, un adaptateur 12V et une bande LED à l'ESP32 S3
  3. Comment téléverser un sketch qui allume la bande, l'éteint, puis la fait monter et descendre en intensité
  4. Comment vérifier le niveau de puissance dans le moniteur série
ESP32 S3 et module MOSFET AOD4184, LR7843 ou FR120N

À propos du module MOSFET

Chaque broche de sortie de l'ESP32 S3 ne donne que 3,3V et quelques milliampères. Une LED s'en contente. Une bande 12V, un ventilateur, une pompe ou un chauffage, non. Le module MOSFET est l'aide placée au milieu : la broche GPIO lui dit seulement quoi faire, et le module fait passer le courant 12V important vers la charge.

Vous vous demandez peut-être pourquoi nous n'utilisons pas un ESP32 S3 - Relais. Un relais claque, s'use, et ne peut être que totalement allumé ou totalement éteint. Le MOSFET est silencieux, n'a aucune pièce mobile, réagit en un éclair et fonctionne pendant des années. Il suit aussi le PWM, ce qui permet de varier la lumière et la vitesse d'un ventilateur. Gardez une règle en tête : charges DC uniquement. Le secteur AC ne doit jamais être branché sur ce module.

Comment fonctionne le module

Juste derrière la broche PWM se trouvent une petite résistance et un optocoupleur PC817. À l'intérieur du PC817, une minuscule LED fait face à un phototransistor, et le phototransistor alimente la grille du MOSFET. Une seconde résistance maintient la grille à 0V tant que le phototransistor est bloqué. Comme seule la lumière traverse l'espace, il n'y a aucun fil entre le circuit de l'ESP32 S3 et le circuit 12V, et même les deux masses restent séparées sur le module. Le MOSFET est de type N et placé côté bas, entre les bornes LOAD et −, tandis que la bande est branchée entre + et LOAD. La suite dépend de ce que GPIO47 envoie.

GPIO47 à 0V (LOW). Aucun courant n'entre dans le PC817 : sa LED reste éteinte et le phototransistor reste bloqué. La résistance de rappel maintient la grille du MOSFET à 0V, et le MOSFET se comporte comme un interrupteur ouvert entre LOAD et −. Le fil moins de la bande n'a donc aucun retour vers l'adaptateur, aucun courant ne circule et la bande reste à 0V, complètement éteinte. Dans le sketch, analogWrite(MOSFET_PIN, 0) ou digitalWrite(MOSFET_PIN, LOW) crée cet état.

GPIO47 à 3,3V (HIGH). Le niveau 3,3V suffit largement, car la LED du PC817 n'a besoin que de quelques milliampères. Cette LED cachée s'allume, le phototransistor conduit et la grille du MOSFET monte à environ la moitié de la tension de l'adaptateur, soit environ 6V pour une alimentation 12V. Le MOSFET s'active alors complètement et se comporte comme un interrupteur fermé, avec seulement quelques milliohms de résistance pour l'AOD4184 et le LR7843, ou environ 0,2Ω pour le FR120N. Le courant va maintenant du + de l'adaptateur vers la borne +, traverse la bande, entre dans LOAD, passe par le MOSFET, sort par la borne − et revient au − de l'adaptateur. La bande reçoit presque tous les 12V et fonctionne à pleine puissance. analogWrite(MOSFET_PIN, 255) ou digitalWrite(MOSFET_PIN, HIGH) donne ce résultat.

GPIO47 envoyant du PWM. Ici la broche passe de LOW à HIGH environ 1000 fois par seconde, et le MOSFET copie chaque changement : allumé pendant chaque partie haute, éteint pendant chaque partie basse. La bande reçoit de rapides impulsions 12V, et le rapport cyclique, la part de chaque période passée à l'état HIGH, fixe la moyenne. À 10% de rapport cyclique, la charge est allumée un dixième du temps et reçoit en moyenne environ 1,2V ; à 50%, elle est allumée la moitié du temps, environ 6V et la moitié de la puissance ; à 90%, la moyenne est d'environ 10,8V, proche du maximum. Une bande LED paraît simplement moins lumineuse, car le scintillement est beaucoup trop rapide pour vos yeux, tandis qu'un ventilateur, un moteur ou une pompe tourne plus lentement, car sa masse en rotation lisse les impulsions. Dans le code, c'est analogWrite(MOSFET_PIN, value) avec une valeur de 0 à 255, donc le rapport cyclique est value / 255 ; le sketch de cette page passe de 10% à 100%. Ne poussez pas la fréquence beaucoup plus haut que les 1 kHz par défaut : le PC817, lent, ne peut pas suivre, le MOSFET ne commute plus proprement, la charge reçoit des impulsions irrégulières et la puce chauffe.

Caractéristiques principales

La taille, les broches, le câblage et le sketch sont identiques pour les trois. La puce placée dessus est la seule chose qui change, et elle décide du nombre de volts et d'ampères que vous pouvez commuter.

AOD4184 LR7843 FR120N
Puce MOSFET AOD4184A (canal N) IRLR7843 (canal N) IRFR120N (canal N)
Tension de charge max (valeur du MOSFET) 40V DC 30V DC 100V DC
Courant max (valeur du MOSFET) 50A 161A 9.4A
Résistance à l'état passant RDS(on) environ 7 mΩ environ 3,3 mΩ environ 210 mΩ
Courant pratique, sans dissipateur environ 10–15A environ 15A environ 2A
Signal de commande logique 3,3V / 5V, actif HIGH logique 3,3V / 5V, actif HIGH logique 3,3V / 5V, actif HIGH
Isolation optocoupleur PC817 optocoupleur PC817 optocoupleur PC817
PWM oui, rester ≤ ~1 kHz oui, rester ≤ ~1 kHz oui, rester ≤ ~1 kHz
Type de charge DC uniquement DC uniquement DC uniquement

Ne prenez pas 50A ou 161A pour la valeur de la carte. Ces valeurs appartiennent à la puce seule, et le petit circuit imprimé chauffe bien plus tôt. Laissez votre charge fonctionner un moment, puis testez la puce d'un rapide toucher du doigt. Si c'est douloureusement chaud, utilisez une charge plus petite ou ajoutez un dissipateur.

Vous ne savez pas lequel choisir ? Pour un courant élevé en 12V ou 24V, comme de longues bandes lumineuses ou de gros moteurs, choisissez le LR7843 ; il a la plus faible résistance et chauffe le moins, mais ne dépassez pas 30V. L'AOD4184 (parfois marqué D4184) se place au milieu et gère les usages en 12V, 24V et 36V jusqu'à 40V. Le FR120N est le bon choix pour une tension plus élevée, jusqu'à 100V, mais sa résistance plus élevée le limite aux charges légères en 24V ou 48V proches de 2A.

Brochage du module MOSFET

Brochage du module MOSFET AOD4184, LR7843 et FR120N

Deux broches d'en-tête font face à l'ESP32 S3, et trois borniers à vis font face au côté 12V.

  1. PWM — signal venant de GPIO47 de l'ESP32 S3 (pas de 2,54mm, donc il se branche sur une breadboard)
  2. GND — masse du signal ; reliez-la au GND de l'ESP32 S3
  3. + — fil plus de l'adaptateur 12V (ou autre) ET fil plus de la bande ou du moteur ; les deux fils partagent cette seule borne
  4. LOAD — fil moins de la bande ou du moteur ; le drain du MOSFET commute cette borne
  5. − — fil moins de l'adaptateur

Les noms sérigraphiés peuvent varier légèrement d'une série de production à l'autre. Fiez-vous toujours à ce qui est imprimé sur le module que vous avez en main.

Schéma de câblage

Seulement deux fils de liaison relient l'ESP32 S3 au module : GPIO47 vers PWM et une masse commune. Tout le reste se trouve du côté 12V, où une prise d'alimentation DC amène l'adaptateur et où la bande se branche sur les bornes + et LOAD. GPIO47 se trouve sur le même connecteur que TX et RX, et sur la carte N16R8 elle sort du 3,3V comme les autres broches. Sur les modules avec un « V » dans le nom (comme R8V ou R16V), GPIO47 fonctionne en 1,8V, ce qui peut être trop faible pour allumer l'optocoupleur ; choisissez alors un autre GPIO libre, comme GPIO1 sur ces cartes.

Schéma de câblage ESP32 S3 avec module MOSFET AOD4184, LR7843 ou FR120N

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

De Vers
ESP32 S3 GPIO47 PWM du module
ESP32 S3 GND GND du module
+ de l'adaptateur 12V (via la prise d'alimentation DC) + du module
− de l'adaptateur 12V (via la prise d'alimentation DC) − du module
+ de la bande LED + du module (même borne que le + de l'adaptateur)
− de la bande LED LOAD du module

Vous voulez que le câblage reste bien en place ? Essayez une carte à bornier à vis pour ESP32 S3 : la carte ESP32 S3 se place dessus et chaque broche a son propre bornier à vis. Voici le montage avec la carte à bornier à vis :

Schéma de câblage ESP32 S3 avec module MOSFET AOD4184, LR7843 ou FR120N (Screw Terminal)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Une carte d'extension GPIO pour ESP32 S3 convient aussi. En plus des broches S, 3,3V et GND de chaque GPIO, elle a des broches 3,3V et 5V supplémentaires :

Schéma de câblage ESP32 S3 avec module MOSFET AOD4184, LR7843 ou FR120N (GPIO Breakout Board)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

La bande n'est que le point de départ. Ci-dessous, vous trouverez six vraies charges branchées sur le même module. GPIO47 et GND ne bougent jamais, donc chaque image ne montre que la moitié 12V : l'adaptateur sur + et −, l'appareil sur + et LOAD, et une diode quand une bobine est présente. Choisissez un adaptateur dont la tension est égale à celle de l'appareil, jamais en dessous de 6V, et dimensionnez le module selon le courant de l'appareil : le FR120N supporte environ 2A seul, tandis que l'AOD4184 et le LR7843 prennent les travaux plus lourds. Vous pouvez garder le sketch de cette page pour les six ; remplacez simplement la variation progressive par du 100% et 0% simples (HIGH et LOW) quand vous pilotez une électrovanne ou un verrou à solénoïde.

Branchement d'un ventilateur 12V

Schéma de câblage ESP32 S3 module MOSFET ventilateur 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Le fil rouge va sur + et le fil noir sur LOAD. Un troisième fil jaune, si votre ventilateur en a un, transporte le signal de vitesse et reste simplement non connecté. Comme un ventilateur cache un petit moteur, ajoutez-lui la diode de roue libre (flyback) décrite dans les notes de sécurité ci-dessous ; elle coûte quelques centimes et ne fait aucun mal. Le rapport cyclique règle la vitesse, mais beaucoup de ventilateurs calent à des valeurs très basses, donc commencez au-dessus d'environ 30%.

Branchement d'une pompe à eau 12V

Câblage d'une pompe à eau 12V et d'un module MOSFET

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Fil plus sur +, fil moins sur LOAD, et la même diode aux bornes de la pompe que pour le ventilateur. Le rapport cyclique règle maintenant la quantité d'eau qui circule. Assurez-vous que la pompe a toujours de l'eau autour d'elle, car la faire tourner à sec la détruit.

Branchement d'un moteur DC 12V

Câblage d'un module MOSFET pour un moteur DC 12V

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Le + du moteur va sur +, le − du moteur va sur LOAD, et la diode se place aux bornes des deux fils du moteur avec sa bande côté plus. Le rapport cyclique règle la vitesse. Avec ce module, le moteur ne tournera jamais que dans un seul sens ; si vous avez besoin de l'inverser, passez à un pilote de moteur comme le L298N, expliqué dans le tutoriel ESP32 S3 - Moteur DC.

Branchement d'une bande LED 12V monochrome

Bande LED 12V sur un module MOSFET, schéma de câblage

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

C'est le câblage du schéma principal ci-dessus, dessiné seul. Le plot plus de la bande (généralement marqué 12V) va sur +, et son plot moins va sur LOAD. Une bande se comporte comme une simple résistance, donc elle n'a pas besoin de diode, et le rapport cyclique règle la luminosité. Les bandes plus longues consomment plus de courant, donc lisez les caractéristiques de la bande avant de choisir un module. Notez que les bandes RGB et adressables demandent un montage différent ; cette image ne couvre que les bandes monochromes.

Branchement d'une électrovanne 12V

Électrovanne 12V normalement fermée avec module MOSFET

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Le + de la vanne va sur + et le − de la vanne sur LOAD, avec une diode aux bornes de la bobine. Une vanne normalement fermée s'ouvre quand elle reçoit toute la puissance et se ferme quand le courant est coupé. Traitez-la comme un appareil purement tout ou rien et évitez le PWM.

Branchement d'un verrou à solénoïde 12V

Câblage d'un verrou à solénoïde 12V via le module MOSFET

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Si le projet doit fonctionner longtemps ou être placé dans un boîtier, il vaut mieux fixer les fils avec des vis. Une carte à bornier à vis pour ESP32 S3 règle ce problème. Branchez-y la carte ESP32 S3 et vissez les fils. Chaque fil va au bornier à vis de la même broche, comme sur l'image ci-dessous.

Câblage d'un verrou à solénoïde 12V via le module MOSFET (Screw Terminal)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Une autre solution est une carte d'extension GPIO pour ESP32 S3. Chaque GPIO a une broche de signal avec une broche 3,3V et une broche GND à côté, comme ci-dessous :

Câblage d'un verrou à solénoïde 12V via le module MOSFET (GPIO Breakout Board)

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Le + du verrou va sur +, le − du verrou sur LOAD, et encore une fois une diode aux bornes de la bobine. Envoyez-lui seulement 100% ou 0%, jamais un niveau réduit. La bobine chauffe quand elle reste alimentée, donc activez-la juste assez longtemps pour libérer le loquet, puis coupez-la.

Notes de sécurité

Gardez les fils 12V loin de toutes les broches de l'ESP32 S3, car un faux mouvement peut détruire la carte. La tension de grille est prélevée sur l'adaptateur, comme expliqué dans Comment fonctionne le module, donc alimentez la charge avec 6V ou plus ; un adaptateur 5V laisse le MOSFET à moitié ouvert, et les charges lourdes de plusieurs ampères demandent 9V ou plus. Le module est livré sans diode de roue libre (flyback), donc pour tout ce qui contient une bobine (moteur, ventilateur, pompe, électrovanne, relais), ajoutez une 1N5819 ou une 1N4007 aux bornes de ses deux fils, avec la bande (cathode) côté + de la charge et l'anode côté − de la charge. Gardez la fréquence PWM entre 500 Hz et 1 kHz ; analogWrite() sur l'ESP32 S3 fonctionne déjà à 1 kHz par défaut, ce qui convient bien.

Comment programmer le module MOSFET

Vous n'avez rien à installer de plus ici. GPIO47 est configuré en sortie, et analogWrite() envoie une valeur de rapport cyclique entre 0 (arrêt) et 255 (pleine puissance). Le sketch reste simple à lire grâce à une fonction d'aide nommée setLoad() : vous lui donnez un pourcentage, map() le convertit en 0–255, et la même ligne de texte arrive dans le moniteur série.

Code ESP32 S3 - Module MOSFET

La bande reçoit d'abord 100% pendant 2 secondes, puis 0% pendant 2 secondes. Ensuite le niveau monte de 10% toutes les 500 ms jusqu'à 100%, redescend de 10% à la même vitesse jusqu'à 0%, attend 1 seconde, puis recommence.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-mosfet-module */ const int MOSFET_PIN = 47; // ESP32 S3 GPIO47 connected to the PWM pin of the MOSFET module void setup() { Serial.begin(9600); pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0); // start with the load OFF } void setLoad(int percent) { int duty = map(percent, 0, 100, 0, 255); // convert 0-100% to 0-255 analogWrite(MOSFET_PIN, duty); Serial.print("Load power: "); Serial.print(percent); Serial.println("%"); } void loop() { // turn the load fully ON, then fully OFF Serial.println("Load: ON"); setLoad(100); delay(2000); Serial.println("Load: OFF"); setLoad(0); delay(2000); // increase the power step by step (PWM) for (int percent = 10; percent <= 100; percent += 10) { setLoad(percent); delay(500); } // decrease the power step by step (PWM) for (int percent = 90; percent >= 0; percent -= 10) { setLoad(percent); delay(500); } delay(1000); }

Étapes rapides

  1. Nouveau sur ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Construisez le circuit selon le schéma de câblage. N'alimentez pas encore l'adaptateur 12V ; cela vient à l'étape 6.
  3. Reliez l'ESP32 S3 à votre PC avec un câble USB Type-C.
  4. Dans l'Arduino IDE, choisissez la carte ESP32 S3 dans Outils > Type de carte et le port COM correspondant dans Outils > Port.
  5. Copiez le sketch dans une fenêtre vide de l'IDE et cliquez sur Téléverser.
  6. Une fois le téléversement terminé, alimentez l'adaptateur 12V.
  7. Ouvrez le moniteur série avec une vitesse de 9600 bauds.
  8. Regardez la bande. Elle brille à fond, s'éteint, puis s'éclaire par petits paliers et s'assombrit de nouveau.
  9. Conseil de pro : Une bande qui ne s'allume jamais signifie souvent un fil de masse manquant entre l'ESP32 S3 et la broche GND du module, ou un adaptateur trop faible. Mesurez l'adaptateur ; en dessous d'environ 6V, le MOSFET ne peut pas s'activer complètement.

Sortie du moniteur série

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
Load: ON Load power: 100% Load: OFF Load power: 0% Load power: 10% Load power: 20% Load power: 30% Load power: 40% Load power: 50% Load power: 60% Load power: 70% Load power: 80% Load power: 90% Load power: 100% Load power: 90% Load power: 80% Load power: 70% Load power: 60% Load power: 50% Load power: 40% Load power: 30% Load power: 20% Load power: 10% Load power: 0%
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Ces lignes reviennent encore et encore tant que l'ESP32 S3 fonctionne.

Applications et idées de projets

Une fois que l'ESP32 S3 peut régler la puissance d'une charge 12V, beaucoup de projets domestiques et de loisirs deviennent faciles.

  1. Lumière de pièce variable : Utilisez une bande LED 12V comme lampe et réglez sa luminosité depuis une page web sur l'ESP32 S3.
  2. Ventilateur intelligent : Accélérez un ESP32 S3 - Contrôle d'un ventilateur quand la pièce se réchauffe, et ralentissez-le quand elle se refroidit.
  3. Pompe d'arrosage des plantes : Faites tourner une petite ESP32 S3 - Contrôle d'une pompe 12V quelques secondes quand le sol est sec, avec une diode de roue libre sur la pompe.
  4. Moteur à démarrage progressif : Faites monter un ESP32 S3 - Moteur DC lentement pour qu'il ne démarre pas brusquement.
  5. Lumière de réveil : Faites passer une bande LED de l'obscurité à la pleine luminosité en 20 minutes chaque matin.
  6. Loquet de porte à solénoïde : Ouvrez un instant un verrou à solénoïde 12V quand un code correct est saisi.

Défiez-vous

  1. Débutant : Changez le pas de 10% à 5% et le délai de 500 ms à 100 ms pour obtenir une variation plus douce.
  2. Intermédiaire : Ajoutez un potentiomètre et associez sa lecture à la puissance de la charge, pour pouvoir tourner un bouton et faire varier la bande.
  3. Avancé : Faites servir par l'ESP32 S3 une page web avec un curseur via WiFi, et réglez la puissance du MOSFET depuis votre téléphone.

Tutoriel vidéo

Regardez ci-dessous la vidéo pas à pas de ce projet ESP32 S3.

Références du langage

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !