Arduino - Módulo MOSFET
En este tutorial, vamos a aprender:
- Cómo conectar un módulo MOSFET (AOD4184, LR7843 o FR120N) a Arduino
- Cómo conectar una carga de 12V, como una tira LED o un ventilador, al módulo MOSFET
- Cómo programar Arduino para encender/apagar la carga y controlar su potencia con PWM
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del módulo MOSFET
Un pin de Arduino da solo 5V y una corriente muy pequeña. No puede alimentar una tira LED de 12V, un motor de corriente continua, un ventilador, una bomba, una electroválvula ni un calentador. El módulo MOSFET se coloca entre Arduino y la carga. Arduino envía una señal pequeña, y el módulo conmuta la gran potencia de la carga.
Los módulos AOD4184 (también vendido como D4184), LR7843 y FR120N usan el mismo diseño de placa. Tienen el mismo tamaño, los mismos pines, el mismo cableado y el mismo código. Solo cambia el chip MOSFET.
| AOD4184 | LR7843 | FR120N | |
|---|---|---|---|
| MOSFET | AOD4184A (canal N) | IRLR7843 (canal N) | IRFR120N (canal N) |
| Voltaje máximo de la carga (valor del MOSFET) | 40V DC | 30V DC | 100V DC |
| 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 nivel ALTO | lógica de 3.3V / 5V, activa en nivel ALTO | lógica de 3.3V / 5V, activa en nivel ALTO |
| Aislamiento | optoacoplador PC817 | optoacoplador PC817 | optoacoplador PC817 |
| PWM | sí, mantener ≤ ~1 kHz | sí, mantener ≤ ~1 kHz | sí, mantener ≤ ~1 kHz |
| Tipo de carga | solo DC | solo DC | solo DC |
¿Cuál debes elegir?
- LR7843: tiene la resistencia más baja, así que se mantiene más frío con corriente alta. Es bueno para cargas de 12V/24V con mucha corriente, como tiras LED de alta potencia o motores grandes. Su límite es 30V.
- AOD4184: un buen modelo para todo uso. Funciona hasta 40V con corriente fuerte. Es bueno para cargas de 12V/24V/36V.
- FR120N: soporta el voltaje más alto (hasta 100V), pero su resistencia es alta. Por eso solo sirve para corrientes pequeñas (unos 2A sin disipador). Es bueno para cargas pequeñas de 24V/48V.
Los números de 50A y 161A son los límites del chip, no de la placa pequeña. El límite real es el calor. Toca el MOSFET después de unos minutos. Si está demasiado caliente, añade un disipador o baja la corriente.
Pinout

El módulo tiene dos grupos de pines. El lado de control es un conector de 2 pines (2.54mm), así que encaja en una protoboard. El lado de potencia usa tres bornes de tornillo.
- Lado de control:
- Pin PWM: debe conectarse a un pin de salida de Arduino. Este pin recibe la señal de control.
- Pin GND: debe conectarse a GND de Arduino (tierra de la señal).
- Lado de potencia:
- Pin +: debe conectarse al positivo (+) de la fuente de alimentación de la carga, por ejemplo 12V, y al cable positivo de la carga. Ambos cables comparten este único borne.
- Pin LOAD: debe conectarse al cable negativo de la carga. Este es el lado que conmuta el MOSFET.
- Pin −: debe conectarse al negativo (−) de la fuente de alimentación de la carga.
- La señal sigue este camino: pin de Arduino → pin PWM → resistencia pequeña → LED dentro del optoacoplador PC817 → luz → fototransistor dentro del PC817 → puerta del MOSFET.
- Como la señal viaja como luz, el lado de Arduino y el lado de la carga están aislados. El GND de la señal y el GND de la carga NO están conectados en el módulo.
- El MOSFET es de canal N y funciona como interruptor del lado bajo. Está entre el borne LOAD y el borne −, así que conmuta el cable negativo de la carga.
- Una resistencia en la puerta la lleva a 0V cuando el optoacoplador está apagado.
- No entra corriente al optoacoplador, así que su LED sigue apagado.
- El fototransistor sigue apagado. La resistencia de la puerta mantiene la puerta del MOSFET en 0V.
- El MOSFET está APAGADO. Entre LOAD y −, es como un interruptor abierto.
- El cable − de la carga no está conectado a tierra, así que no circula corriente. La carga recibe 0V.
- Código: digitalWrite(MOSFET_PIN, LOW); o analogWrite(MOSFET_PIN, 0);
- Unos pocos mA entran al optoacoplador. Su LED se enciende dentro del chip (no se ve). El pin de Arduino puede dar fácilmente esta corriente pequeña.
- El fototransistor se enciende. Ahora la puerta del MOSFET recibe aproximadamente la mitad de la alimentación de la carga, unos 6V con un adaptador de 12V.
- El MOSFET se enciende por completo. Es como un interruptor cerrado con una resistencia muy baja: unos pocos mΩ para el AOD4184 y el LR7843, unos 0.2Ω para el FR120N.
- El camino de la corriente es: adaptador + → borne + → carga → borne LOAD → MOSFET → borne − → adaptador −.
- La carga recibe casi los 12V completos y funciona a plena potencia.
- Código: digitalWrite(MOSFET_PIN, HIGH); o analogWrite(MOSFET_PIN, 255);
- Con analogWrite(), el pin cambia entre LOW y HIGH unas 500 a 1000 veces por segundo.
- El MOSFET sigue al pin: encendido en cada parte HIGH, apagado en cada parte LOW. Así la carga recibe pulsos rápidos de 12V.
- El ciclo de trabajo es la parte del tiempo en que el pin está en HIGH. El voltaje medio y la potencia son el ciclo de trabajo multiplicado por el valor completo. El valor 0–255 define el ciclo de trabajo (ciclo = valor / 255).
- Una tira LED se ve más tenue. Sigue parpadeando, pero demasiado rápido para que lo vean tus ojos.
- Un ventilador o un motor gira más lento. Su masa en rotación suaviza los pulsos.
- Mantén la frecuencia PWM baja, de unos 500 Hz a 1 kHz, porque el PC817 es lento. Si la frecuencia es demasiado alta, el MOSFET no puede conmutar por completo. Entonces los pulsos no son limpios y el MOSFET se calienta. La frecuencia por defecto de analogWrite() en Arduino Uno (unos 490 Hz, o unos 1 kHz en los pines 5 y 6) está bien.
- El código de este tutorial usa PWM del 10% al 100% para variar gradualmente la carga.
- La alimentación de la carga debe ser de al menos unos 6V, porque la puerta recibe solo la mitad (ver el caso HIGH de arriba). Por eso el módulo NO funciona bien con una alimentación de carga de 5V. Usa 9V o más si la carga consume más de unos pocos amperios.
- Usa solo cargas de DC. Nunca conectes la red eléctrica de AC a este módulo. Para cargas de AC, consulta el tutorial Arduino - Relé.
- NO hay diodo de rueda libre (flyback) en la placa. Para motores, bombas, electroválvulas y relés, añade un diodo de rueda libre (flyback) externo (por ejemplo 1N5819 o 1N4007) en paralelo con la carga: cátodo (lado de la raya) al + de la carga, ánodo al − de la carga.
Las etiquetas pueden ser un poco diferentes entre lotes. Lee siempre el texto impreso en tu placa.
Cómo funciona
El módulo es activo en nivel ALTO. Veamos qué pasa con cada tipo de señal en el pin PWM.
Pin de Arduino en LOW (0V): la carga está apagada
Pin de Arduino en HIGH (5V): la carga está encendida
Señal PWM: la carga recibe una parte de la potencia
| Ciclo de trabajo | Valor de analogWrite() | La carga está encendida | Voltaje medio (alimentación de 12V) |
|---|---|---|---|
| 0% | 0 | nunca | 0V |
| 25% | 64 | 1/4 del tiempo | unos 3V |
| 50% | 128 | la mitad del tiempo | unos 6V |
| 75% | 191 | 3/4 del tiempo | unos 9V |
| 100% | 255 | todo el tiempo | 12V |
Algunas reglas importantes:
En comparación con un relé, el módulo MOSFET no hace ruido de clic, no tiene piezas móviles, conmuta muy rápido, tiene una vida útil larga y admite PWM. Un relé no puede hacer PWM.
Diagrama de Cableado
Conecta el pin 9 de Arduino al pin PWM, el GND de Arduino al pin GND, el adaptador de 12V (a través del conector DC) a + y −, y la tira LED a + y LOAD, como se muestra en la imagen de abajo.

This image is created using Fritzing. Click to enlarge image
Nunca conectes los 12V a ningún pin de Arduino.
Más dispositivos que puedes conectar
La tira LED es solo una opción. Puedes cambiarla por un ventilador, una bomba, un motor o una electroválvula. Los dos cables del lado de Arduino no cambian. En el lado de potencia, la regla es siempre la misma:
- Adaptador + → +
- Adaptador − → −
- Dispositivo + → + (el mismo borne que el + del adaptador)
- Dispositivo − → LOAD
Comprobaciones rápidas antes de empezar:
- Usa un adaptador con el mismo voltaje que el dispositivo (dispositivo de 12V → adaptador de 12V). Nunca bajes de 6V.
- Mira la corriente del dispositivo. El FR120N sirve solo para dispositivos pequeños (unos 2A, sin disipador). Para más corriente, usa el AOD4184 o el LR7843.
- Un dispositivo con bobina (motor, ventilador, bomba, electroválvula) necesita un diodo de rueda libre (flyback), 1N5819 o 1N4007. Colócalo en paralelo con el dispositivo: lado de la raya al + del dispositivo, el otro lado al − del dispositivo. Abajo, esto se marca como "Diodo: sí".
No necesitas código nuevo para estos dispositivos. El mismo código funciona para todos. Para una electroválvula, usa solo HIGH y LOW (100% y 0%) y omite el cambio gradual.
Arduino con módulo MOSFET - Tira LED de 12V

This image is created using Fritzing. Click to enlarge image
- + de la tira (a menudo impreso "12V") → +, − de la tira → LOAD
- Diodo: no. Una tira LED no tiene bobina.
- El PWM define el brillo.
- Solo tiras de un solo color. Una tira larga necesita más corriente, así que revisa antes su corriente.
Arduino con módulo MOSFET - Ventilador de 12V

This image is created using Fritzing. Click to enlarge image
- Cable rojo → +, cable negro → LOAD
- Un tercer cable (amarillo) es la señal de velocidad. Déjalo libre.
- Diodo: sí. Cuesta muy poco y no hace daño.
- El PWM define la velocidad. Usa más de un 30%, o el ventilador podría no arrancar.
Arduino con módulo MOSFET - Bomba de agua de 12V

This image is created using Fritzing. Click to enlarge image
- + de la bomba → +, − de la bomba → LOAD
- Diodo: sí
- El PWM define el caudal de agua.
- No hagas funcionar la bomba sin agua.
Arduino con módulo MOSFET - Motor DC de 12V

This image is created using Fritzing. Click to enlarge image
- + del motor → +, − del motor → LOAD
- Diodo: sí
- El PWM define la velocidad.
- El motor gira en un solo sentido. Para cambiar la dirección, necesitas un controlador de motor como el L298N. Consulta Arduino - Motor de corriente continua.
Arduino con módulo MOSFET - Electroválvula de 12V

This image is created using Fritzing. Click to enlarge image
- + de la válvula → +, − de la válvula → LOAD
- Diodo: sí
- Válvula normalmente cerrada: encendida la abre, apagada la cierra.
- Solo encendido/apagado. Sin PWM.
Arduino con módulo MOSFET - Cerradura solenoide de 12V

This image is created using Fritzing. Click to enlarge image
- + de la cerradura → +, − de la cerradura → LOAD
- Diodo: sí
- Solo totalmente encendida o totalmente apagada. Sin PWM.
- Dale un pulso corto de encendido para abrir. Si se queda encendida mucho tiempo, se calienta. Consulta también Arduino - Cerradura solenoide.
Cómo programar el módulo MOSFET
- No se necesita biblioteca: el código usa solo funciones integradas.
- Define el pin: const int MOSFET_PIN = 9; (el pin 9 admite PWM, tiene la marca ~)
- Configura el pin como salida: pinMode(MOSFET_PIN, OUTPUT);
- Enciende la carga por completo: digitalWrite(MOSFET_PIN, HIGH); o analogWrite(MOSFET_PIN, 255);
- Apaga la carga por completo: digitalWrite(MOSFET_PIN, LOW); o analogWrite(MOSFET_PIN, 0);
- Define la potencia de la carga con analogWrite(). El valor va de 0 (apagada) a 255 (plena potencia). Por ejemplo, aproximadamente 50%: analogWrite(MOSFET_PIN, 128);
- Convierte un porcentaje (0–100%) en un valor PWM (0–255): int duty = map(percent, 0, 100, 0, 255);
Si solo necesitas encender/apagar, digitalWrite() es suficiente. Si quieres regular la potencia o cambiar la velocidad, usa analogWrite(). Funciona igual que en el tutorial Arduino - LED - Fade, pero ahora controla una carga de 12V.
Código de Arduino - Módulo MOSFET
El código de abajo hace estas cosas una y otra vez:
- Enciende la carga por completo durante 2 segundos y luego la apaga durante 2 segundos
- Aumenta la potencia del 10% al 100%, en pasos del 10%, cada 0.5 segundos
- Reduce la potencia del 90% al 0%, y luego espera 1 segundo
Pasos R\u00e1pidos
- Haz el cableado como se muestra en el diagrama de arriba.
- Conecta Arduino al PC mediante el cable USB.
- Conecta el adaptador de 12V al conector DC.
- Abre Arduino IDE. Ve al menú Tools, y selecciona la placa y el puerto correctos.
- Copia el código de arriba y pégalo en Arduino IDE.
- Haz clic en el botón Subir de Arduino IDE para cargar el código en Arduino.
- Mira la tira LED: está con el brillo máximo durante 2 segundos, luego APAGADA durante 2 segundos, luego brilla poco a poco más, y después poco a poco menos.
- Abre el Monitor Serie (velocidad 9600 baudios) y mira el resultado.
Si usas un ventilador de 12V en lugar de la tira LED, el ventilador gira a plena velocidad, se detiene, luego acelera y reduce la velocidad. No olvides el diodo de rueda libre (flyback) para un ventilador o un motor.
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.