Cuando necesitas controlar cargas de alta corriente (motores DC, tiras LED de 12V, ventiladores, calefactores), un transistor BJT o un relay pueden no ser suficientes. El MOSFET de canal N controla hasta decenas de amperios con una señal lógica de 3.3V o 5V del Arduino, con prácticamente cero corriente de control.
MOSFET vs Relay vs Transistor BJT
| Componente | Corriente máx. | PWM | Corriente control |
|---|---|---|---|
| Relay | 10-30A | No | ~70-100 mA |
| Transistor BJT | 1-5A típico | Sí | ~1-50 mA base |
| MOSFET canal N | 20-100A según modelo | Sí | ~0 mA (capacitivo) |
MOSFETs Recomendados para Arduino
- IRLZ44N: lógica 3.3V/5V compatible, 47A, 55V — ideal para Arduino/ESP32
- IRF540N: requiere 10V en el gate para conducir completamente con cargas altas
- IRL540N: versión lógica del IRF540, funciona bien a 5V
Circuito con Carga DC
Pines del MOSFET TO-220: Gate (izquierda), Drain (centro), Source (derecha).
- Gate: resistencia de 220Ω → pin PWM del Arduino
- Gate a GND: resistencia de 10kΩ (pull-down, descarga el gate al apagar)
- Source: GND del circuito de potencia
- Drain: terminal negativo de la carga (motor, LED strip, etc.)
- Terminal positivo de la carga → VCC de la fuente de potencia
- Diodo flyback: en paralelo con la carga de motor (cátodo al positivo)
Código: Control PWM de Velocidad de Motor
const int PIN_GATE = 9; // Pin PWM
void setup() {
pinMode(PIN_GATE, OUTPUT);
}
void loop() {
// Aumentar velocidad gradualmente
for (int v = 0; v <= 255; v++) {
analogWrite(PIN_GATE, v);
delay(10);
}
delay(1000);
// Disminuir velocidad
for (int v = 255; v >= 0; v--) {
analogWrite(PIN_GATE, v);
delay(10);
}
delay(1000);
}
Importante: Fuentes Separadas
El motor o carga debe alimentarse desde su propia fuente (12V, 24V), no desde el Arduino. Conecta solo los GND para referencia común. Nunca alimentes un motor de alta corriente desde el pin 5V del Arduino.