ESP8266 - Módulo MOSFET

Este tutorial te enseña cómo usar el ESP8266 NodeMCU para controlar una carga de 12V CC, como una tira LED o un ventilador, con un módulo MOSFET. Un pin del NodeMCU da solo 3,3V, así que nunca puede alimentar un dispositivo de 12V por sí solo. Aquí, el pin solo le dice al módulo qué hacer, y el módulo mueve la potencia real. En detalle, aprenderemos:

Te sugerimos:

Acerca del módulo MOSFET

Piensa en el módulo MOSFET como un grifo para la electricidad de CC. El ESP8266 gira el grifo, y el adaptador de 12V pone el flujo. El grifo puede estar totalmente abierto, totalmente cerrado, o abrirse y cerrarse muy rápido con PWM. Este último modo permite que el NodeMCU decida cuánto brilla una tira LED o a qué velocidad gira un ventilador. Otras cargas que puedes controlar así son un motor de CC, una bomba de agua, una electroválvula y un calentador pequeño.

La misma página sirve para tres productos: AOD4184 (a veces impreso como D4184), LR7843 y FR120N. Sus placas son iguales en tamaño, distribución de pines y cableado, y usan el mismo sketch. Lo único que cambia es el chip MOSFET soldado en el centro.

AOD4184 LR7843 FR120N
MOSFET AOD4184A (canal N) IRLR7843 (canal N) IRFR120N (canal N)
Tensión máxima de la carga (valor del MOSFET) 40V CC 30V CC 100V CC
Corriente máxima (valor del MOSFET) 50A 161A 9,4A
Resistencia en conducción RDS(on) unos 7 mΩ unos 3,3 mΩ unos 210 mΩ
Corriente práctica sin disipador unos 10–15A unos 15A unos 2A
Señal de control lógica de 3,3V / 5V, activa en HIGH lógica de 3,3V / 5V, activa en HIGH lógica de 3,3V / 5V, activa en HIGH
Aislamiento optoacoplador PC817 optoacoplador PC817 optoacoplador PC817
PWM sí, mantener ≤ ~1 kHz sí, mantener ≤ ~1 kHz sí, mantener ≤ ~1 kHz
Tipo de carga solo CC solo CC solo CC

Lee con cuidado la fila "Corriente máxima". Esas cifras describen el chip solo con un enfriamiento perfecto. Una placa de módulo pequeña se calienta mucho antes, así que planifica tu proyecto con la fila "sin disipador".

Pines del módulo MOSFET

Pines del módulo MOSFET AOD4184, LR7843 y FR120N

Hay cinco puntos de conexión en total. Dos miran hacia el NodeMCU y tres miran hacia el circuito de 12V.

Cabezal de señal (2 pines, paso de 2,54mm, cabe en una protoboard):

  • Pin PWM: debe conectarse a un GPIO del NodeMCU. En este proyecto es D5, que es el GPIO14 dentro del chip.
  • Pin GND: debe conectarse a un pin G (GND) del NodeMCU, para que la señal tenga un camino de retorno.

Bornes de tornillo de potencia:

  • +: debe conectarse al cable positivo del adaptador de 12V Y al cable positivo de la tira LED. Los dos cables entran en este único borne.
  • LOAD: debe conectarse al cable negativo de la tira LED. El drenador del MOSFET está aquí, así que este es el cable que de verdad se conmuta.
  • −: debe conectarse al cable negativo del adaptador de 12V

※ Nota:

La disposición de los pines de un módulo puede variar de un fabricante a otro, e incluso dos lotes del mismo vendedor pueden imprimir etiquetas algo distintas. Es esencial consultar siempre las etiquetas impresas en el módulo al usarlo. ¡Míralas con atención!

Por qué un pin de 3,3V del NodeMCU puede controlarlo

Muchos MOSFET de potencia necesitan de 5V a 10V en la puerta, algo que el ESP8266 no puede dar. Este módulo resuelve el problema con un optoacoplador PC817 en su entrada. La señal debe pasar por esta cadena: D5 → pin PWM → resistencia pequeña → LED dentro del PC817 → luz → fototransistor dentro del PC817 → puerta del MOSFET. Una resistencia en la puerta la lleva a 0V siempre que el PC817 está apagado.

Como la luz lleva la señal a través del PC817, el lado de 3,3V y el lado de 12V no tienen ningún cable en común. El módulo mantiene separados el GND de la señal y el GND de la carga.

El MOSFET es una pieza de canal N colocada en el lado bajo, entre el borne LOAD y el borne −. Corta el cable negativo de la carga, y el cable positivo queda conectado todo el tiempo. A continuación se explica qué pasa con cada señal que el NodeMCU puede poner en D5.

D5 en LOW (0V): la carga está APAGADA

  • No entra corriente al PC817, así que su LED interno se queda apagado.
  • El fototransistor se queda apagado, y la resistencia de la puerta mantiene la puerta del MOSFET a 0V.
  • El MOSFET está APAGADO. Se comporta como un interruptor abierto entre LOAD y −.
  • El cable negativo de la tira LED no tiene camino hacia el − del adaptador, así que no fluye corriente y la tira recibe 0V.
  • En el código: analogWrite(MOSFET_PIN, 0), que es un ciclo de trabajo del 0%.

D5 en HIGH (3,3V): la carga está totalmente ENCENDIDA

  • El pin de 3,3V empuja unos pocos miliamperios por el LED del PC817. Se enciende dentro del chip, donde no puedes verlo. Un GPIO de 3,3V maneja esta corriente sin problema.
  • El fototransistor se activa y pasa cerca de la mitad de la tensión de alimentación de la carga a la puerta del MOSFET. Con un adaptador de 12V, la puerta recibe unos 6V, no los 3,3V de la placa.
  • El MOSFET se ENCIENDE por completo. Actúa como un interruptor cerrado con muy poca resistencia: unos pocos mΩ para el AOD4184 y el LR7843, unos 0,2Ω para el FR120N.
  • Ahora la corriente fluye en un bucle: + del adaptador → borne + → tira LED → borne LOAD → MOSFET → borne − → − del adaptador.
  • La tira recibe casi los 12V completos y funciona a plena potencia.
  • En el código: analogWrite(MOSFET_PIN, 255), que es un ciclo de trabajo del 100%.

D5 da PWM: la carga recibe parte de la potencia

  • Con analogWrite(MOSFET_PIN, value), D5 salta entre LOW y HIGH unas 1000 veces por segundo. El valor va de 0 a 255, y el ciclo de trabajo es value / 255.
  • El MOSFET copia la señal. Está ENCENDIDO en cada parte HIGH y APAGADO en cada parte LOW, así que la carga recibe pulsos cortos de 12V.
  • El ciclo de trabajo es la parte del tiempo en que la señal está en HIGH. La tensión media y la potencia media son el ciclo de trabajo por el valor completo.
Valor de analogWrite Ciclo de trabajo Tensión media (alimentación de 12V) Lo que ves
51 20% unos 2,4V la tira brilla débilmente
102 40% unos 4,8V la tira a un poco menos de la mitad
153 60% unos 7,2V la tira a un poco más de la mitad
204 80% unos 9,6V la tira casi a tope
  • La tira LED se ve más tenue. En realidad parpadea, pero demasiado rápido para que el ojo lo note. Un ventilador, motor o bomba gira más lento, porque su masa en giro suaviza los pulsos. Es posible que un ventilador no arranque con un ciclo de trabajo bajo.
  • El PC817 es una pieza lenta. Si la frecuencia PWM sube demasiado, el MOSFET no conmuta del todo, la carga no recibe pulsos limpios y el MOSFET se calienta. Por eso el rango correcto es de unos 500 Hz a 1 kHz.
  • Una cerradura o válvula con solenoide debe recibir solo LOW o HIGH, nunca PWM.

De este diseño sale una regla más. Como la puerta recibe solo la mitad de la tensión de la carga, la alimentación de la carga necesita al menos unos 6V. Usa 9V o más cuando la carga consuma más de unos pocos amperios. Una fuente de 5V es demasiado débil, así que los pines de 5V o 3,3V del propio NodeMCU no pueden alimentar la carga.

Diagrama de Cableado

El NodeMCU solo envía una señal desde D5 y comparte su GND con el cabezal del módulo, mientras que toda la corriente de 12V fluye entre el adaptador, los bornes de tornillo y la tira LED.

Diagrama de cableado del ESP8266 NodeMCU NodeMCU con módulo MOSFET AOD4184, LR7843 o FR120N

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

ESP8266 NodeMCU / lado de 12V Módulo MOSFET
D5 (GPIO14) PWM
G (GND) GND
+ del adaptador de 12V (a través del conector de alimentación DC) +
− del adaptador de 12V (a través del conector de alimentación DC) −
+ de la tira LED + (el mismo borne que el + del adaptador)
− de la tira LED LOAD

WARNING

El ESP8266 es un chip de 3,3V, y 12V en cualquiera de sus pines, incluso el pin VIN, puede destruirlo. Al NodeMCU solo van los cables PWM y GND del cabezal del módulo. Los cables de 12V se quedan en los bornes de tornillo.

Elegir otro pin del NodeMCU

Las etiquetas impresas en el NodeMCU (D0, D1, D2 ...) no son iguales a los números GPIO del chip. Por ejemplo, D5 es GPIO14, D6 es GPIO12 y D7 es GPIO13. En el código, escribe la etiqueta D (como D5) y el núcleo del ESP8266 encuentra el GPIO correcto por ti.

Si D5 está ocupado, D1, D2, D6 y D7 también son buenas opciones. Intenta evitar D3 (GPIO0), D4 (GPIO2) y D8 (GPIO15), porque el chip revisa estos pines al arrancar, y tu carga puede parpadear o la placa puede no iniciar. Evita también D0 (GPIO16), porque no puede dar salida PWM.

Conectar otros dispositivos de 12V a los bornes de tornillo

Los cables D5 y G del NodeMCU se quedan exactamente como se muestra arriba para todos los dispositivos de abajo. Solo cambia el lado de los bornes de tornillo. Cada dispositivo sigue la misma regla:

Cable Borne de tornillo
+ del adaptador +
− del adaptador −
Cable + del dispositivo + (el mismo borne que el + del adaptador)
Cable − del dispositivo LOAD

Dos puntos valen para todos ellos:

  • El adaptador debe dar la tensión para la que está hecho el dispositivo (un dispositivo de 12V necesita un adaptador de 12V), y nunca menos de 6V, que es lo mínimo que acepta el módulo.
  • Revisa cuánta corriente consume el dispositivo. El FR120N solo sirve para cargas pequeñas de unos 2A sin disipador. Para algo más grande, elige el AOD4184 o el LR7843.

El sketch del ESP8266 no cambia de un dispositivo a otro. La única excepción es un solenoide: para él, escribe solo HIGH o LOW (100% o 0%) y quita la parte de fundido.

Tira LED de 12V (un solo color)

Diagrama de cableado del módulo MOSFET para una tira LED de 12V de un solo color

This image is created using Fritzing. Click to enlarge image

  • El cable + de la tira (a menudo impreso como 12V) va a +, y el cable − de la tira va a LOAD.
  • Una tira LED no es una bobina, así que no necesita diodo.
  • El PWM ajusta el brillo. Una tira más larga consume más corriente, así que lee su corriente nominal antes de elegir un módulo.
  • Este cableado es solo para tiras de un solo color. Las tiras RGB y las direccionables se conectan de otra manera.

Diodo de rueda libre (flyback) para dispositivos con bobina

Los ejemplos de ventilador, motor, bomba y solenoide de abajo se basan todos en una bobina. El módulo no tiene diodo de rueda libre en la placa, así que un dispositivo con bobina debe llevar el suyo. Un 1N5819 o un 1N4007 sirve. Colócalo entre los dos cables del dispositivo, con el extremo con la raya (cátodo) en el + del dispositivo y el otro extremo (ánodo) en el − del dispositivo. Más abajo, esto se llama simplemente "el diodo".

Ventilador de refrigeración de 12V

Diagrama de cableado del módulo MOSFET con ventilador de refrigeración de 12V

This image is created using Fritzing. Click to enlarge image

  • El cable rojo es +, y el cable negro es −.
  • Un tercer cable (amarillo) lleva la señal de velocidad. Déjalo sin conectar.
  • Pon también el diodo aquí. Cuesta muy poco y no hace daño.
  • El PWM ajusta la velocidad. Algunos ventiladores no arrancan con un ciclo de trabajo muy bajo, así que empieza por encima de un 30%.

Motor de CC de 12V

Diagrama de cableado del módulo MOSFET con un motor de CC de 12V

This image is created using Fritzing. Click to enlarge image

  • Conecta el + del motor a + y el − del motor a LOAD, con el diodo entre los dos cables del motor.
  • El PWM ajusta la velocidad.
  • El motor gira en un solo sentido. Para que gire en ambos sentidos, se necesita un controlador de motor. Consulta ESP8266 - Motor de CC, que usa el L298N.

Bomba de agua de 12V

Diagrama de cableado del módulo MOSFET con bomba de agua de 12V

This image is created using Fritzing. Click to enlarge image

  • La bomba es un dispositivo con bobina, así que el diodo es obligatorio.
  • El PWM ajusta el caudal.
  • Nunca dejes que la bomba funcione en seco.

Electroválvula de 12V (normalmente cerrada)

Diagrama de cableado del módulo MOSFET para una electroválvula de 12V normalmente cerrada

This image is created using Fritzing. Click to enlarge image

  • Añade el diodo entre los cables de la válvula.
  • ENCENDIDO total abre la válvula, y APAGADO la cierra.
  • Contrólala solo con ENCENDIDO y APAGADO. No se usa PWM.

Cerradura con solenoide de 12V

Diagrama de cableado del módulo MOSFET con cerradura con solenoide de 12V

This image is created using Fritzing. Click to enlarge image

  • La cerradura es una bobina, así que el diodo debe estar ahí.
  • Usa solo ENCENDIDO total (100%) o APAGADO total (0%). No la regules con PWM.
  • Se calienta si se queda ENCENDIDA mucho tiempo. Dale un pulso corto de ENCENDIDO para abrir, y luego APÁGALA.

Cómo programar el módulo MOSFET

No hay nada que instalar. El núcleo del ESP8266 para Arduino IDE ya tiene todas las funciones que necesita el sketch.

  • El primer paso es dar un nombre al pin del NodeMCU que está conectado al pin PWM del módulo. Usar la etiqueta D mantiene el código acorde con lo que está impreso en la placa:
const int MOSFET_PIN = D5; // D5 = GPIO14
  • Después, el pin se configura como salida, y se escribe un valor de 0 para que la carga empiece en estado APAGADO:
pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0);
  • Un porcentaje es más fácil de leer que un número crudo, así que el código convierte 0–100% en un valor de 0–255 con map(), y luego lo pasa a analogWrite():
int duty = map(percent, 0, 100, 0, 255); analogWrite(MOSFET_PIN, duty);
  • Si solo necesitas ENCENDIDO y APAGADO, digitalWrite(MOSFET_PIN, HIGH) y digitalWrite(MOSFET_PIN, LOW) también sirven.

En el ESP8266, analogWrite() es un PWM por software que funciona a 1 kHz por defecto. Ese valor encaja bien con el lento PC817, así que no hace falta llamar a analogWriteFreq(). El núcleo 3.x del ESP8266 usa por defecto un rango de 0–255. Los núcleos muy antiguos (2.x) usaban 0–1023, así que actualiza tu núcleo del ESP8266 si la carga nunca llega a plena potencia.

Código ESP8266 NodeMCU para el módulo MOSFET

El sketch repite un mismo patrón. Primero, la carga está totalmente ENCENDIDA durante 2 segundos y totalmente APAGADA durante 2 segundos. Después, la potencia sube del 10% al 100%, sumando un 10% cada medio segundo. Luego baja del 90% al 0% al mismo ritmo. Por último, la placa espera 1 segundo antes de empezar de nuevo.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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); }

Pasos R\u00e1pidos

  • Consulta cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Cablea los componentes como se muestra en el diagrama, pero por ahora mantén el adaptador de 12V fuera del enchufe de pared.
  • Conecta la placa ESP8266 NodeMCU a tu computadora con un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Elige la placa NodeMCU 1.0 (ESP-12E Module) y el puerto COM de tu NodeMCU.
  • Copia el código anterior y pégalo en un nuevo sketch de Arduino IDE.
  • Pulsa el botón Subir y espera a que termine la carga.
  • Ahora conecta el adaptador de 12V al enchufe de pared.
  • Abre el monitor serie y elige 9600 baudios.
  • Mira la tira LED. Brilla a plena potencia durante 2 segundos, se apaga durante 2 segundos, sube poco a poco y luego baja poco a poco.
  • El monitor serie imprime líneas como estas:
∞
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

Con un ventilador de 12V en los bornes, oyes la misma historia: velocidad máxima, silencio, y luego una subida lenta y una bajada lenta de velocidad. No olvides el diodo de rueda libre para el ventilador.

Conocimientos adicionales

AOD4184 vs LR7843 vs FR120N: elegir según tu carga

Todos los módulos se conectan al NodeMCU exactamente de la misma manera, así que empieza por la tensión y la corriente de tu carga:

Tu carga Mejor módulo Motivo
12V o 24V, corriente alta (tira LED larga, motor grande) LR7843 La resistencia más baja (unos 3,3 mΩ), se mantiene más frío, pero máximo 30V
12V, 24V o 36V, corriente media a alta AOD4184 Versátil, hasta 40V, unos 10–15A sin disipador
24V o 48V, corriente pequeña FR120N El único con valor hasta 100V, pero unos 210 mΩ, así que unos 2A sin disipador

Es evidente que el LR7843 gana cuando la corriente es alta y la tensión es baja, el FR120N es la única opción por encima de 40V, y el AOD4184 cubre la mayoría de los trabajos intermedios.

El calor es el verdadero límite en las tres placas. Deja funcionar la carga unos minutos y luego toca el MOSFET con cuidado. Si no puedes mantener el dedo sobre él, reduce la carga o pon un disipador.

¿Módulo MOSFET o relé?

Un relé cierra un contacto metálico con un imán. Un módulo MOSFET conmuta con un chip. Esto lleva a diferencias claras:

Pregunta Módulo MOSFET Relé
¿Puede conmutar la red de CA? No, solo CC Sí
¿Puede regular o cambiar la velocidad (PWM)? Sí No
¿Hace ruido? No, es silencioso Sí, hace clic
¿Qué tan rápido conmuta? Muy rápido Lento
¿Cuánto dura? Mucho, nada se desgasta Limitado por el desgaste del contacto

Es evidente que el módulo MOSFET es la herramienta adecuada para cargas de CC en un proyecto con ESP8266, sobre todo cuando quieres fundidos o control de velocidad. Para una lámpara o cualquier dispositivo en la red de CA, usa mejor el relé.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!