ESP8266 - Module MOSFET

Ce tutoriel vous explique comment utiliser l'ESP8266 NodeMCU pour contrôler une charge DC 12V, comme un ruban LED ou un ventilateur, avec un module MOSFET. Une broche du NodeMCU ne fournit que 3,3V, elle ne peut donc jamais alimenter seule un appareil 12V. Ici, la broche indique simplement au module quoi faire, et le module déplace la vraie puissance. En détail, nous allons apprendre :

Nous suggérons :

À Propos du Module MOSFET

Imaginez le module MOSFET comme un robinet pour le courant continu. L'ESP8266 tourne le robinet, et l'adaptateur 12V fournit le débit. Le robinet peut être grand ouvert, complètement fermé, ou ouvert et fermé très vite avec le PWM. Ce dernier mode permet au NodeMCU de régler la luminosité d'un ruban LED ou la vitesse d'un ventilateur. Parmi les autres charges que vous pouvez piloter ainsi : un moteur DC, une pompe à eau, une électrovanne et un petit chauffage.

La même page convient à trois produits : AOD4184 (parfois imprimé D4184), LR7843 et FR120N. Leurs cartes ont la même taille, le même brochage et le même câblage, et elles utilisent le même programme. La seule chose qui change est la puce MOSFET soudée au milieu.

AOD4184 LR7843 FR120N
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 à l'état HAUT logique 3,3V / 5V, actif à l'état HAUT logique 3,3V / 5V, actif à l'état HAUT
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

Lisez la ligne « Courant max » avec attention. Ces chiffres décrivent la puce seule avec un refroidissement parfait. Une petite carte de module chauffe bien avant d'atteindre ces valeurs, alors prévoyez votre projet d'après la ligne « sans dissipateur ».

Le Brochage du Module MOSFET

Brochage du module MOSFET AOD4184, LR7843 et FR120N

Il y a cinq points de connexion au total. Deux sont du côté du NodeMCU, et trois sont du côté du circuit 12V.

Connecteur de signal (2 broches, pas de 2,54mm, compatible avec une breadboard) :

  • Broche PWM : doit être connectée à un GPIO du NodeMCU. Dans ce projet, c'est D5, qui est GPIO14 dans la puce.
  • Broche GND : doit être connectée à une broche G (GND) du NodeMCU, afin que le signal ait un chemin de retour.

Borniers à vis d'alimentation :

  • + : doit être connecté au fil plus venant de l'adaptateur 12V ET au fil plus du ruban LED. Les deux fils entrent dans ce même bornier.
  • LOAD : doit être connecté au fil moins du ruban LED. Le drain du MOSFET se trouve ici, c'est donc le fil qui est réellement commuté.
  • − : doit être connecté au fil moins venant de l'adaptateur 12V

※ Note:

La disposition des broches d'un module peut différer d'un fabricant à l'autre, et même deux lots du même vendeur peuvent avoir des étiquettes légèrement différentes. Il est essentiel de toujours se référer aux étiquettes imprimées sur le module lorsque vous l'utilisez. Regardez bien !

Pourquoi une Broche 3,3V du NodeMCU Peut le Piloter

De nombreux MOSFET de puissance ont besoin de 5V à 10V sur la grille, ce que l'ESP8266 ne peut pas fournir. Ce module résout ce problème avec un optocoupleur PC817 à son entrée. Le signal doit suivre cette chaîne : D5 → broche PWM → petite résistance → LED à l'intérieur du PC817 → lumière → phototransistor à l'intérieur du PC817 → grille du MOSFET. Une résistance sur la grille la tire à 0V dès que le PC817 est éteint.

Comme la lumière transporte le signal à travers le PC817, le côté 3,3V et le côté 12V n'ont aucun fil en commun. Le module garde séparés le GND du signal et le GND de la charge.

Le MOSFET est un composant à canal N placé côté bas, entre le bornier LOAD et le bornier −. Il coupe le fil moins de la charge, et le fil plus reste connecté en permanence. Voici ce qui se passe pour chaque signal que le NodeMCU peut mettre sur D5.

D5 à l'état BAS (0V) : la Charge est ÉTEINTE

  • Aucun courant n'entre dans le PC817, sa LED interne reste donc éteinte.
  • Le phototransistor reste bloqué, et la résistance de grille maintient la grille du MOSFET à 0V.
  • Le MOSFET est BLOQUÉ. Il se comporte comme un interrupteur ouvert entre LOAD et −.
  • Le fil moins du ruban LED n'a aucun chemin vers le − de l'adaptateur, donc aucun courant ne circule et le ruban reçoit 0V.
  • Dans le code : analogWrite(MOSFET_PIN, 0), ce qui correspond à un rapport cyclique de 0%.

D5 à l'état HAUT (3,3V) : la Charge est Complètement ALLUMÉE

  • La broche 3,3V envoie quelques milliampères dans la LED du PC817. Elle s'allume à l'intérieur de la puce, où vous ne pouvez pas la voir. Un GPIO 3,3V supporte facilement ce courant.
  • Le phototransistor devient passant et envoie environ la moitié de l'alimentation de la charge vers la grille du MOSFET. Avec un adaptateur 12V, la grille reçoit environ 6V, et non les 3,3V de la carte.
  • Le MOSFET est complètement PASSANT. Il agit comme un interrupteur fermé de très faible résistance : quelques mΩ pour l'AOD4184 et le LR7843, environ 0,2Ω pour le FR120N.
  • Le courant circule maintenant en boucle : + de l'adaptateur → bornier + → ruban LED → bornier LOAD → MOSFET → bornier − → − de l'adaptateur.
  • Le ruban reçoit presque les 12V complets et fonctionne à pleine puissance.
  • Dans le code : analogWrite(MOSFET_PIN, 255), ce qui correspond à un rapport cyclique de 100%.

D5 Sort un PWM : la Charge Reçoit une Partie de la Puissance

  • Avec analogWrite(MOSFET_PIN, value), D5 passe de BAS à HAUT environ 1000 fois par seconde. La valeur va de 0 à 255, et le rapport cyclique est value / 255.
  • Le MOSFET copie le signal. Il est PASSANT pendant chaque partie HAUTE et BLOQUÉ pendant chaque partie BASSE, donc la charge reçoit de courtes impulsions de 12V.
  • Le rapport cyclique est la part du temps où le signal reste HAUT. La tension moyenne et la puissance moyenne sont le rapport cyclique multiplié par la valeur maximale.
Valeur analogWrite Rapport cyclique Tension moyenne (alimentation 12V) Ce que vous voyez
51 20% environ 2,4V le ruban brille faiblement
102 40% environ 4,8V le ruban à un peu moins de la moitié
153 60% environ 7,2V le ruban à un peu plus de la moitié
204 80% environ 9,6V le ruban presque à fond
  • Le ruban LED paraît plus faible. En réalité il clignote, mais trop vite pour que l'œil le remarque. Un ventilateur, un moteur ou une pompe tourne plus lentement, car sa masse en rotation lisse les impulsions. Un ventilateur peut ne pas démarrer à un faible rapport cyclique.
  • Le PC817 est un composant lent. Si la fréquence PWM devient trop élevée, le MOSFET ne commute pas complètement, la charge ne reçoit pas des impulsions propres, et le MOSFET chauffe. C'est pourquoi la bonne plage est d'environ 500 Hz à 1 kHz.
  • Une serrure ou une vanne à solénoïde doit recevoir uniquement BAS ou HAUT, jamais du PWM.

Une règle de plus découle de cette conception. Comme la grille ne reçoit que la moitié de la tension de la charge, l'alimentation de la charge doit être d'au moins 6V environ. Choisissez 9V ou plus quand la charge consomme plus de quelques ampères. Une alimentation 5V est trop faible, donc les broches 5V ou 3,3V du NodeMCU ne peuvent pas alimenter la charge.

Schéma de Câblage

Le NodeMCU envoie seulement un signal depuis D5 et partage son GND avec le connecteur du module, tandis que tout le courant 12V circule entre l'adaptateur, les borniers à vis et le ruban LED.

Schéma de câblage ESP8266 NodeMCU NodeMCU avec module MOSFET AOD4184, LR7843 ou FR120N

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

Pour plus d'informations, consultez Brochage ESP8266. et Comment alimenter l'ESP8266..

ESP8266 NodeMCU / côté 12V Module MOSFET
D5 (GPIO14) PWM
G (GND) GND
+ de l'adaptateur 12V (via la prise d'alimentation DC) +
− de l'adaptateur 12V (via la prise d'alimentation DC) −
+ du ruban LED + (même bornier que le + de l'adaptateur)
− du ruban LED LOAD

WARNING

L'ESP8266 est une puce 3,3V, et 12V sur n'importe laquelle de ses broches, même la broche VIN, peut la détruire. Seuls les fils PWM et GND du connecteur du module vont au NodeMCU. Les fils 12V restent sur les borniers à vis.

Choisir une autre broche du NodeMCU

Les étiquettes imprimées sur le NodeMCU (D0, D1, D2 ...) ne sont pas les mêmes que les numéros GPIO de la puce. Par exemple, D5 est GPIO14, D6 est GPIO12 et D7 est GPIO13. Dans le code, écrivez l'étiquette D (comme D5) et le core ESP8266 trouve le bon GPIO pour vous.

Si D5 est occupée, D1, D2, D6 et D7 sont aussi de bons choix. Évitez D3 (GPIO0), D4 (GPIO2) et D8 (GPIO15), car la puce vérifie ces broches au démarrage, et votre charge peut clignoter ou la carte peut ne pas démarrer. Évitez aussi D0 (GPIO16), car elle ne peut pas sortir de PWM.

Connecter d'Autres Appareils 12V aux Borniers à Vis

Les fils D5 et G sur le NodeMCU restent exactement comme montré plus haut pour tous les appareils ci-dessous. Seul le côté des borniers à vis change. Chaque appareil suit la même règle :

Fil Bornier à vis
+ de l'adaptateur +
− de l'adaptateur −
Fil + de l'appareil + (même bornier que le + de l'adaptateur)
Fil − de l'appareil LOAD

Deux points valent pour tous :

  • L'adaptateur doit fournir la tension pour laquelle l'appareil est conçu (un appareil 12V a besoin d'un adaptateur 12V), et jamais moins de 6V, qui est le minimum accepté par le module.
  • Vérifiez quel courant l'appareil consomme. Le FR120N convient seulement aux petites charges d'environ 2A sans dissipateur. Pour tout ce qui est plus gros, choisissez l'AOD4184 ou le LR7843.

Le programme ESP8266 ne change pas d'un appareil à l'autre. La seule exception est un solénoïde : pour lui, écrivez seulement HIGH ou LOW (100% ou 0%) et supprimez la partie de variation progressive.

Ruban LED 12V (Une Seule Couleur)

Schéma de câblage du module MOSFET pour un ruban LED 12V monocolore

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

  • Le fil + du ruban (souvent marqué 12V) va sur +, et le fil − du ruban va sur LOAD.
  • Un ruban LED n'est pas une bobine, il n'a donc pas besoin de diode.
  • Le PWM règle la luminosité. Un ruban plus long consomme plus de courant, lisez donc son courant nominal avant de choisir un module.
  • Ce câblage est valable seulement pour un ruban monocolore. Les rubans RVB et adressables se câblent différemment.

Diode de Roue Libre (Flyback) pour les Appareils à Bobine

Les exemples de ventilateur, moteur, pompe et solénoïde ci-dessous sont tous construits autour d'une bobine. Le module n'a pas de diode de roue libre (flyback) sur la carte, donc un appareil à bobine doit avoir la sienne. Une 1N5819 ou une 1N4007 convient. Placez-la entre les deux fils de l'appareil, avec l'extrémité rayée (cathode) sur le + de l'appareil et l'autre extrémité (anode) sur le − de l'appareil. Plus bas, on l'appelle simplement « la diode ».

Ventilateur de Refroidissement 12V

Schéma de câblage du module MOSFET avec un ventilateur de refroidissement 12V

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

  • Le fil rouge est le +, et le fil noir est le −.
  • Un troisième fil (jaune) transporte le signal de vitesse. Laissez-le non connecté.
  • Installez aussi la diode ici. Elle coûte très peu et ne fait aucun mal.
  • Le PWM règle la vitesse. Certains ventilateurs ne démarrent pas à un très faible rapport cyclique, commencez donc au-dessus d'environ 30%.

Moteur DC 12V

Schéma de câblage du module MOSFET avec un moteur DC 12V

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

  • Connectez le + du moteur à + et le − du moteur à LOAD, avec la diode entre les deux fils du moteur.
  • Le PWM règle la vitesse.
  • Le moteur tourne dans un seul sens. Pour le faire tourner dans les deux sens, un pilote de moteur est nécessaire. Voir ESP8266 - Moteur à courant continu., qui utilise le L298N.

Pompe à Eau 12V

Schéma de câblage du module MOSFET avec une pompe à eau 12V

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

  • La pompe est un appareil à bobine, la diode est donc obligatoire.
  • Le PWM règle le débit.
  • Ne laissez jamais la pompe tourner à sec.

Électrovanne à Solénoïde 12V (Normalement Fermée)

Schéma de câblage du module MOSFET pour une électrovanne à solénoïde 12V normalement fermée

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

  • Ajoutez la diode entre les fils de la vanne.
  • Complètement ALLUMÉE, la vanne s'ouvre, et ÉTEINTE, elle se ferme.
  • Pilotez-la seulement avec ON et OFF. Le PWM n'est pas utilisé.

Serrure à Solénoïde 12V

Schéma de câblage du module MOSFET avec une serrure à solénoïde 12V

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

  • La serrure est une bobine, la diode doit donc être présente.
  • Utilisez seulement complètement ALLUMÉ (100%) ou complètement ÉTEINT (0%). Ne la variez pas avec le PWM.
  • Elle chauffe si elle reste ALLUMÉE longtemps. Donnez-lui une courte impulsion ON pour déverrouiller, puis éteignez-la.

Comment Programmer pour le Module MOSFET

Il n'y a rien à installer. Le core ESP8266 pour Arduino IDE contient déjà toutes les fonctions dont le programme a besoin.

  • La première étape est de donner un nom à la broche du NodeMCU câblée à la broche PWM du module. Utiliser l'étiquette D garde le code en accord avec ce qui est imprimé sur la carte :
const int MOSFET_PIN = D5; // D5 = GPIO14
  • Ensuite, la broche est configurée en sortie, et une valeur de 0 est écrite pour que la charge démarre à l'état ÉTEINT :
pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0);
  • Un pourcentage est plus facile à lire qu'un nombre brut, donc le code transforme 0–100% en une valeur de 0–255 avec map(), puis la passe à analogWrite() :
int duty = map(percent, 0, 100, 0, 255); analogWrite(MOSFET_PIN, duty);
  • Si vous n'avez besoin que de ON et OFF, digitalWrite(MOSFET_PIN, HIGH) et digitalWrite(MOSFET_PIN, LOW) fonctionnent aussi.

Sur l'ESP8266, analogWrite() est un PWM logiciel qui tourne à 1 kHz par défaut. Cette valeur convient bien au PC817 lent, il n'est donc pas nécessaire d'appeler analogWriteFreq(). Le core ESP8266 3.x utilise par défaut une plage de 0–255. Les très anciens cores (2.x) utilisaient 0–1023, mettez donc à jour votre core ESP8266 si la charge n'atteint jamais la pleine puissance.

Code ESP8266 NodeMCU pour le Module MOSFET

Le programme joue un seul motif en boucle. D'abord, la charge est complètement ALLUMÉE pendant 2 secondes et complètement ÉTEINTE pendant 2 secondes. Ensuite, la puissance monte de 10% à 100%, en ajoutant 10% toutes les demi-secondes. Puis elle redescend de 90% à 0% au même rythme. Enfin, la carte attend 1 seconde avant de recommencer.

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-mosfet-module */ const int MOSFET_PIN = D5; // ESP8266 pin D5 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

  • Si c'est la première fois que vous utilisez l'ESP8266, consultez Installation du logiciel ESP8266..
  • Câblez les composants comme indiqué sur le schéma, mais gardez l'adaptateur 12V débranché de la prise murale pour l'instant.
  • Connectez la carte ESP8266 NodeMCU à votre ordinateur avec un câble USB.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la carte NodeMCU 1.0 (ESP-12E Module) et le port COM de votre NodeMCU.
  • Copiez le code ci-dessus et collez-le dans un nouveau croquis dans Arduino IDE.
  • Appuyez sur le bouton Téléverser et attendez la fin du téléversement.
  • Branchez maintenant l'adaptateur 12V sur la prise murale.
  • Ouvrez le Moniteur Série et choisissez 9600 bauds.
  • Regardez le ruban LED. Il brille à pleine puissance pendant 2 secondes, s'éteint pendant 2 secondes, monte lentement en luminosité, puis redescend lentement.
  • Le Moniteur Série affiche des lignes comme celles-ci :
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E 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
Nodemcu 1.0 (ESP-12E Module) on COM15
2

Avec un ventilateur 12V sur les borniers, vous entendez la même histoire : vitesse maximale, silence, puis une lente montée en vitesse et une lente descente. N'oubliez pas la diode de roue libre pour le ventilateur.

Connaissances Supplémentaires

AOD4184 vs LR7843 vs FR120N : Choisir selon Votre Charge

Chaque module se câble au NodeMCU exactement de la même façon, partez donc de la tension et du courant de votre charge :

Votre charge Meilleur module Raison
12V ou 24V, courant élevé (long ruban LED, gros moteur) LR7843 Résistance la plus faible (environ 3,3 mΩ), reste le plus frais, mais 30V max
12V, 24V ou 36V, courant moyen à élevé AOD4184 Polyvalent, jusqu'à 40V, environ 10–15A sans dissipateur
24V ou 48V, faible courant FR120N Le seul prévu jusqu'à 100V, mais environ 210 mΩ, donc environ 2A sans dissipateur

Il est évident que le LR7843 gagne quand le courant est élevé et la tension basse, que le FR120N est la seule option au-dessus de 40V, et que l'AOD4184 couvre la plupart des cas entre les deux.

La chaleur est la vraie limite sur les trois cartes. Laissez la charge tourner quelques minutes, puis touchez le MOSFET avec précaution. Si vous ne pouvez pas garder le doigt dessus, réduisez la charge ou installez un dissipateur.

Module MOSFET ou Relais ?

Un relais ferme un contact métallique avec un aimant. Un module MOSFET commute avec une puce. Cela donne des différences claires :

Question Module MOSFET Relais
Peut-il commuter le secteur AC ? Non, DC uniquement Oui
Peut-il varier ou changer la vitesse (PWM) ? Oui Non
Fait-il du bruit ? Non, il est silencieux Oui, il claque
Quelle est sa vitesse de commutation ? Très rapide Lente
Combien de temps dure-t-il ? Longtemps, rien ne s'use Limité par l'usure des contacts

Il est évident que le module MOSFET est le bon outil pour les charges DC dans un projet ESP8266, surtout quand vous voulez de la variation ou un contrôle de vitesse. Pour une lampe ou tout appareil sur le secteur AC, choisissez plutôt le ESP8266 - Relais..

Vidéo

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 !