ESP32 - Módulo MOSFET

Este tutorial te enseña cómo usar el ESP32 para encender y apagar una carga de CC de 12V y ajustar su nivel de potencia con un módulo MOSFET, y cómo imprimir el nivel de potencia en el Monitor Serie. El tutorial funciona igual para los módulos AOD4184, LR7843 y FR120N, y muestra cómo conectar una tira LED y también un motor de CC o un ventilador.

Acerca del módulo MOSFET

Un pin GPIO del ESP32 da solo 3,3V y unos pocos miliamperios. Eso basta para un LED pequeño, pero es muy poco para una tira LED de 12V, un motor de CC, un ventilador, una bomba, una electroválvula o un calentador. El módulo MOSFET funciona como un interruptor electrónico entre los dos. El ESP32 da una señal débil, y el módulo deja pasar la corriente fuerte de la carga.

Hay tres versiones de este módulo en el mercado: AOD4184 (el mismo chip también se vende como D4184), LR7843 y FR120N. La placa es idéntica en las tres. El tamaño, los pines, el cableado y el código no cambian. La única diferencia es el chip MOSFET del centro, que decide cuánto voltaje y cuánta corriente soporta la placa.

AOD4184 LR7843 FR120N
El chip MOSFET AOD4184A (canal N) IRLR7843 (canal N) IRFR120N (canal N)
El voltaje máximo de la carga (valor del chip) 40V CC 30V CC 100V CC
La corriente máxima (valor del chip) 50A 161A 9,4A
La resistencia en conducción RDS(on) unos 7 mΩ unos 3,3 mΩ unos 210 mΩ
La corriente práctica sin disipador unos 10–15A unos 15A unos 2A
La 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
El aislamiento optoacoplador PC817 optoacoplador PC817 optoacoplador PC817
El soporte de PWM sí, mantener ≤ ~1 kHz sí, mantener ≤ ~1 kHz sí, mantener ≤ ~1 kHz
El tipo de carga solo CC solo CC solo CC

Para elegir uno, piensa en tu carga. El LR7843 tiene la resistencia más baja, así que se mantiene más frío cuando pasa mucha corriente. Úsalo para tiras LED de 12V o 24V de alta potencia y para motores grandes, pero nunca por encima de 30V. El AOD4184 es la opción intermedia y segura: corriente fuerte y hasta 40V, lo que cubre cargas de 12V, 24V y 36V. El FR120N acepta el voltaje más alto, hasta 100V, pero su resistencia es mucho mayor. Eso significa que se calienta rápido, así que resérvalo para cargas pequeñas de 24V o 48V de unos 2A.

No confíes demasiado en los números de 50A o 161A. Describen el chip solo, no esta pequeña placa. En la placa, el calor es el verdadero límite. Después de que la carga funcione unos minutos, toca el MOSFET con cuidado. Si está demasiado caliente, añade un disipador o usa una carga más pequeña.

Pinout del módulo MOSFET

Pinout del módulo MOSFET AOD4184, LR7843 y FR120N

Los pines están en dos lugares. Un pequeño conector de 2 pines (paso de 2,54mm) es para el ESP32, así que se conecta fácilmente a una protoboard. Una fila de tres bornes de tornillo es para la carga y su fuente de alimentación.

Conector de control:

  • Pin PWM: conecta este pin a un pin GPIO del ESP32 (GPIO18 en este tutorial)
  • Pin GND: conecta este pin a GND del ESP32

Bornes de tornillo:

  • Pin +: conecta este pin al cable positivo de la fuente de alimentación de la carga (p. ej. 12V) y al cable positivo de la carga. Ambos cables comparten este único borne
  • Pin LOAD: conecta este pin al cable negativo de la carga. Este es el lado que conmuta el MOSFET
  • Pin −: conecta este pin al cable negativo (tierra) de la fuente de alimentación de la carga

Las etiquetas impresas pueden cambiar un poco de un lote a otro, así que lee el texto de tu propia placa antes de cablear.

Te recomendamos mucho usar el módulo AOD4184 si no estás seguro de cuál comprar.

Cómo funciona el módulo MOSFET

La señal de GPIO18 no llega directamente al MOSFET. Entra por el pin PWM, pasa por una resistencia pequeña y enciende un LED diminuto dentro del optoacoplador PC817. Esa luz activa un fototransistor del mismo chip, y el fototransistor alimenta la puerta del MOSFET. Una resistencia en la puerta la lleva de nuevo a 0V siempre que el optoacoplador está apagado. El MOSFET está entre el borne LOAD y el borne −, mientras que la carga está entre + y LOAD. Así, lo que hace la carga depende solo del estado del pin PWM, y hay tres estados posibles.

Cuando GPIO18 da 0V (LOW)

Con 0V en el pin PWM, no puede pasar corriente por el LED del optoacoplador, así que se queda apagado. Por eso el fototransistor sigue apagado, y la resistencia de la puerta mantiene la puerta del MOSFET a 0V. El MOSFET está apagado (OFF), es decir, el camino de LOAD a − está abierto, igual que un interruptor abierto. El cable negativo de la carga no tiene camino de vuelta al adaptador, así que no pasa corriente y la carga está a 0V. Obtienes este estado con analogWrite(MOSFET_PIN, 0) o digitalWrite(MOSFET_PIN, LOW).

Cuando GPIO18 da 3,3V (HIGH)

El ESP32 solo da 3,3V, pero es suficiente: el LED del optoacoplador necesita solo unos pocos miliamperios, así que el pin GPIO puede alimentarlo directamente (una placa de 5V funcionaría igual). El LED se enciende dentro del chip, donde no puedes verlo, y el fototransistor se activa. Ahora la puerta del MOSFET recibe cerca de la mitad de la alimentación de la carga, unos 6V cuando usas un adaptador de 12V. El MOSFET se enciende por completo (ON) y se comporta como un interruptor cerrado con una resistencia muy pequeña, solo unos pocos mΩ en las placas AOD4184 y LR7843 y unos 0,2Ω en la placa FR120N. La corriente va del positivo del adaptador al borne +, pasa por la carga, entra al borne LOAD, pasa por el MOSFET, sale por el borne − y vuelve al negativo del adaptador. La carga recibe casi los 12V completos y trabaja a plena potencia. En el código, esto es analogWrite(MOSFET_PIN, 255) o digitalWrite(MOSFET_PIN, HIGH).

Cuando GPIO18 da una señal PWM

Una señal PWM son solo los dos estados anteriores, repetidos muy rápido. Con analogWrite(), GPIO18 cambia entre LOW y HIGH unas 1000 veces por segundo, y el MOSFET copia cada cambio: está encendido (ON) durante cada parte HIGH y apagado (OFF) durante cada parte LOW. Por eso la carga recibe pulsos cortos de 12V. La parte del tiempo que el pin está en HIGH se llama ciclo de trabajo, y el valor que pasas a analogWrite() lo define (ciclo de trabajo = valor / 255). El voltaje y la potencia medios que recibe la carga son simplemente el ciclo de trabajo multiplicado por el valor completo. Con una fuente de 12V, por ejemplo:

  • 10% (valor 26): encendido una décima parte del tiempo, promedio de unos 1,2V, un brillo muy débil o un giro muy lento
  • 50% (valor 128): encendido la mitad del tiempo, promedio de unos 6V, cerca de la mitad de la potencia
  • 90% (valor 230): encendido nueve décimas partes del tiempo, promedio de unos 10,8V, cerca de la potencia máxima

Una tira LED no parpadea de forma visible a esta velocidad, así que simplemente se ve más tenue. Un motor, un ventilador o una bomba gira más lento, porque la masa de su rotor suaviza los pulsos. Mantén la frecuencia baja, entre 500 Hz y 1 kHz, porque el PC817 es un componente lento. A una frecuencia mucho más alta, el MOSFET no tiene tiempo de conmutar por completo, la carga recibe pulsos sucios en lugar de limpios y el MOSFET se calienta. La función analogWrite() del ESP32 ya usa 1 kHz por defecto, así que no hace falta ningún cambio. El código de este tutorial usa este caso de PWM para subir la potencia del 10% al 100%.

Algunos datos más sobre la placa te ayudan a evitar problemas:

  • El optoacoplador mantiene separados eléctricamente el lado del ESP32 y el lado de la carga. El GND de la señal y el GND de la carga no están conectados en la placa, y no debes unirlos.
  • Como el MOSFET es de canal N en el lado bajo, corta el cable negativo de la carga, no el positivo.
  • El voltaje de la puerta viene de la alimentación de la carga a través de un divisor de voltaje, por eso es solo cerca de la mitad de esa alimentación. Por tanto, la alimentación de la carga debe ser de unos 6V o más. Elige 9V o más cuando la carga consuma más de unos pocos amperios. Una alimentación de carga de 5V no funcionará bien.
  • La placa no tiene diodo de rueda libre (flyback). Los motores, bombas, solenoides y relés necesitan uno añadido fuera de la placa.
  • Es solo para cargas de CC. Nunca la uses con la corriente alterna de la red. Para dispositivos de CA, consulta el tutorial de relé con ESP32.

Diagrama de cableado

La alimentación de 12V va solo a los bornes de tornillo del módulo. Nunca dejes que toque ningún pin del ESP32.

Cómo conectar el ESP32 y el módulo MOSFET con una tira LED de 12V

Diagrama de cableado del ESP32 con el módulo MOSFET AOD4184, LR7843 o FR120N

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

De A
GPIO18 del ESP32 Pin PWM del módulo
GND del ESP32 Pin GND del módulo
Adaptador de 12V + (mediante el conector DC) Borne + del módulo
Adaptador de 12V − (mediante el conector DC) Borne − del módulo
Tira LED + Borne + del módulo (compartido con el + del adaptador)
Tira LED − Borne LOAD del módulo

Cómo conectar otros dispositivos de 12V al módulo MOSFET

Muchos dispositivos pueden ocupar el lugar de la tira LED. GPIO18 y GND del ESP32 se quedan conectados exactamente como en la tabla anterior, así que las imágenes de abajo muestran solo el lado de la alimentación. El patrón nunca cambia: el positivo del adaptador va a +, el negativo del adaptador va a −, el cable positivo del dispositivo también va a +, y su cable negativo va a LOAD.

Elige un adaptador con el mismo voltaje que tu dispositivo, así que un dispositivo de 12V lleva un adaptador de 12V. Sea cual sea el dispositivo, la alimentación no debe ser menor de 6V. Piensa también en la corriente que consume tu dispositivo. La placa FR120N solo soporta dispositivos ligeros de unos 2A sin disipador, mientras que las placas AOD4184 y LR7843 sirven para otros más pesados.

Puedes dejar el código del ESP32 exactamente igual para todos estos dispositivos. Sin embargo, con una cerradura de solenoide o una electroválvula, envía solo plena potencia o cero (HIGH o LOW) y omite la transición gradual.

Usar un motor de CC de 12V
Cableado del módulo MOSFET con un motor de CC de 12V

This image is created using Fritzing. Click to enlarge image

Conecta el cable positivo del motor al borne + y el cable negativo del motor a LOAD. Dentro de un motor hay una bobina, y cuando el MOSFET se apaga, esa bobina devuelve un pico de voltaje. Con el tiempo, este pico puede dañar el MOSFET. Para absorberlo, coloca un diodo de rueda libre (flyback) como un 1N5819 o un 1N4007 entre los cables del motor, con su extremo marcado con una raya (el cátodo) en el cable positivo del motor y su otro extremo (el ánodo) en el cable negativo del motor. Los dispositivos con bobina que vienen más abajo necesitan este mismo diodo, colocado de la misma manera.

El ciclo de trabajo PWM controla la velocidad, pero solo en una dirección. Si necesitas que el motor gire en ambos sentidos, usa un controlador como el L298N, como se muestra en el tutorial de motor de CC con ESP32.

Usar un ventilador de 12V
Ventilador conectado al módulo MOSFET

This image is created using Fritzing. Click to enlarge image

El cable rojo del ventilador es el positivo y va al borne +, y el cable negro va a LOAD. Si tu ventilador tiene un tercer cable amarillo, solo informa de la velocidad, así que déjalo sin conectar. Añade también aquí el diodo de rueda libre (flyback); es barato y no causa ningún daño. Muchos ventiladores no arrancan con un ciclo de trabajo muy bajo, así que empieza alrededor del 30% o más.

Usar una bomba de agua de 12V
Diagrama de cableado del módulo MOSFET para una bomba de 12V

This image is created using Fritzing. Click to enlarge image

Conecta el positivo de la bomba al borne + y el negativo de la bomba a LOAD, y coloca el diodo de rueda libre (flyback) en la bomba. Un ciclo de trabajo más alto empuja más agua. Asegúrate de que la bomba esté siempre bajo el agua, porque hacerla funcionar en seco puede arruinarla.

Usar una electroválvula de 12V
Diagrama de cableado de una electroválvula de 12V con el módulo MOSFET

This image is created using Fritzing. Click to enlarge image

El positivo de la válvula va al borne + y el negativo de la válvula va a LOAD, con el diodo de rueda libre (flyback) entre ellos. Una válvula normalmente cerrada se abre cuando el ESP32 enciende el módulo por completo, y se cierra de nuevo cuando lo apaga. No intentes regularla con PWM; está abierta o cerrada.

Usar una cerradura de solenoide de 12V
Cableado de la cerradura de solenoide y el módulo MOSFET

This image is created using Fritzing. Click to enlarge image

Conecta el positivo de la cerradura al borne + y el negativo de la cerradura a LOAD, y añade el diodo de rueda libre (flyback). Activa la cerradura solo en plena potencia (ON) o apagada (OFF). Su bobina se calienta rápido, así que enciéndela solo un momento corto para abrir el pestillo y luego apágala de nuevo. Un ejemplo completo de cerradura de puerta está en el tutorial de cerradura de solenoide con ESP32.

Usar una tira LED de 12V de un solo color
Cableado del módulo MOSFET con una tira LED de 12V de un solo color

This image is created using Fritzing. Click to enlarge image

Es el mismo circuito que el diagrama principal, visto desde el lado de la alimentación. El positivo de la tira, que a menudo está impreso como 12V, va al borne +, y el negativo de la tira va a LOAD. Una tira LED no tiene bobina, así que no necesita diodo. El ciclo de trabajo define el brillo. Ten en cuenta que una tira más larga consume más corriente, así que revisa su valor nominal antes de elegir un módulo. Las tiras RGB y las direccionables necesitan otra configuración.

Cómo programar el módulo MOSFET

No se necesita ninguna biblioteca. El código usa funciones que ya vienen incluidas en el núcleo del ESP32.

  • Dale un nombre al pin GPIO que controla el módulo: const int MOSFET_PIN = 18;
  • Configura el pin como salida: pinMode(MOSFET_PIN, OUTPUT);
  • Enciende la carga por completo: analogWrite(MOSFET_PIN, 255); (o digitalWrite(MOSFET_PIN, HIGH);)
  • Apaga la carga por completo: analogWrite(MOSFET_PIN, 0); (o digitalWrite(MOSFET_PIN, LOW);)
  • Ajusta una parte de la potencia, por ejemplo 50%: analogWrite(MOSFET_PIN, 128);
  • Convierte un porcentaje en un valor PWM de 0 a 255: int duty = map(percent, 0, 100, 0, 255);

Código ESP32 - Módulo MOSFET

El código de abajo enciende la carga por completo durante 2 segundos y la apaga por completo durante 2 segundos. Luego sube la potencia del 10% al 100% en pasos del 10%, un paso cada medio segundo, y la baja de nuevo hasta el 0% de la misma manera. Tras una pausa de 1 segundo, el ciclo empieza otra vez.

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-mosfet-module */ const int MOSFET_PIN = 18; // ESP32 GPIO18 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ápidos

Si es la primera vez que usas el ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.

  • Conecta el ESP32, el módulo MOSFET, la tira LED (o el ventilador) y la alimentación de 12V como se muestra en el diagrama anterior.
  • Conecta el cable USB al ESP32 y a tu PC. Deja el adaptador de 12V desconectado por ahora.
  • Abre Arduino IDE, luego selecciona la placa ESP32 Dev Module y el puerto COM correcto.
  • Copia el código anterior y pégalo en Arduino IDE.
  • Haz clic en el botón Upload de Arduino IDE para compilar y subir el código al ESP32.
  • Conecta el adaptador de alimentación de 12V.
  • Haz clic en el icono Serial Monitor, luego escribe o selecciona 9600 como velocidad en baudios.
  • Mira la tira LED: brillo completo durante 2 segundos, apagada durante 2 segundos, luego se vuelve poco a poco más brillante y poco a poco más tenue. Un ventilador hará lo mismo con su velocidad.
  • Mira los mensajes en el Monitor Serie.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 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
ESP32 Dev Module on COM15
2

Si la carga no se enciende en absoluto, revisa primero el voltaje de la alimentación de la carga. Recuerda que debe ser de unos 6V o más.

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!