Un pin de Arduino o de ESP32 solo puede entregar unos pocos miliamperios: suficiente para un LED, pero no para un motor, un relé o una tira LED. La solución es usar un transistor como interruptor. En esta guía aprenderás a elegir entre un NPN y un MOSFET, a calcular la resistencia de base y a proteger el circuito con un diodo flyback.
En resumen
- El pin del microcontrolador solo activa el transistor; la corriente de la carga sale de otra fuente.
- NPN (BC547, 2N2222): barato y sencillo para cargas de hasta unos cientos de mA. Necesita resistencia de base.
- MOSFET de nivel lógico (IRLZ44N a 5 V, AO3400A a 3,3 V): para corrientes de amperios, casi sin pérdidas.
- Toda carga con bobina (motor, relé, solenoide) necesita un diodo flyback en paralelo.
Por qué no conectar la carga directamente al pin
Los pines del Arduino Uno tienen un máximo absoluto de 40 mA y lo recomendable es no pasar de 20 mA. Un motor pequeño de 5 V puede consumir varios cientos de mA, y mucho más al arrancar.
Además, muchas cargas funcionan a una tensión distinta: una tira LED de 12 V, un motor de 6 V, etc. El transistor permite que una señal de 5 V o 3,3 V controle un circuito de otra tensión y corriente.
Esquema general: interruptor en el lado bajo
La configuración más habitual coloca el transistor entre la carga y GND (low-side switch):
+V carga (5 V, 12 V…)
│
[CARGA]
│
├─── colector (NPN) o drenador (MOSFET)
│
pin ─[R]── base / puerta
│
└─── emisor (NPN) o surtidor (MOSFET)
│
GND ← común con el GND del Arduino

La regla de oro: el GND de la fuente de la carga y el GND del microcontrolador deben estar unidos. Sin masa común, el transistor no tiene referencia y no conmuta.
Opción 1: transistor NPN
Un NPN conduce entre colector y emisor cuando entra corriente por la base. Para usarlo como interruptor hay que llevarlo a saturación: darle más corriente de base de la estrictamente necesaria para que quede «totalmente abierto».
Transistores NPN habituales
| Modelo | Corriente máx. de colector | Uso típico |
|---|---|---|
| BC547 | 100 mA | Relés pequeños, zumbadores, LED |
| 2N2222 / P2N2222A | 600 mA | Relés, motores muy pequeños |
| TIP120 (Darlington) | 5 A | Motores; pero pierde más tensión (1–2 V) y se calienta |
Cálculo de la resistencia de base
Se hace en tres pasos. Ejemplo: un relé de 5 V cuya bobina consume 70 mA, controlado con un 2N2222 desde un Arduino Uno.
- Corriente de colector:
Ic = 70 mA. - Corriente de base para saturar: en conmutación se usa una ganancia forzada de 10 (aunque el datasheet indique 100 o más), así que
Ib = Ic / 10 = 7 mA. - Resistencia: la unión base-emisor cae unos 0,7 V.
R = (Vpin - Vbe) / Ib
R = (5 V - 0,7 V) / 0,007 A ≈ 614 Ω → valor comercial: 560 Ω
Con 560 Ω la corriente de base queda en unos 7,7 mA, dentro de lo que el pin puede dar.
Con un ESP32 (3,3 V) la cuenta cambia:
R = (3,3 V - 0,7 V) / 0,007 A ≈ 371 Ω → valor comercial: 330 Ω
Para cargas pequeñas (menos de 50 mA), una resistencia de 1 kΩ suele ser suficiente en ambos casos. Si necesitas repasar la fórmula, tienes la ley de Ohm con calculadora.
Opción 2: MOSFET de nivel lógico
Un MOSFET de canal N conduce entre drenador y surtidor cuando la tensión entre puerta y surtidor (Vgs) supera cierto valor. La puerta prácticamente no consume corriente en reposo, y en conducción su resistencia (Rds(on)) es de milésimas de ohmio.
La trampa del «nivel lógico»
Muchos MOSFET populares, como el IRF540N o el IRFZ44N, están pensados para Vgs = 10 V. Con los 5 V de un Arduino conducen a medias y se calientan; con 3,3 V, casi nada.
Hay que buscar en el datasheet que la Rds(on) esté especificada a la tensión de tu pin:
| MOSFET | Encapsulado | Rds(on) especificada | Adecuado para |
|---|---|---|---|
| IRLZ44N | TO-220 | 28 mΩ a Vgs = 5 V (también especificado a 4 V) | Arduino a 5 V |
| AO3400A | SOT-23 (SMD) | Menos de 48 mΩ a Vgs = 2,5 V | ESP32 y placas a 3,3 V |
| IRFZ44N | TO-220 | Especificada a 10 V | No recomendado sin driver |
Fíjate en la L de IRLZ44N frente a IRFZ44N: es la versión de nivel lógico. No te fíes solo del Vgs(th) (umbral): esa es la tensión a la que el MOSFET empieza a conducir, no a la que conduce bien.
Resistencias del MOSFET
- Resistencia de puerta (100–220 Ω) entre el pin y la puerta: limita el pico de corriente al cargar la capacidad de la puerta.
- Resistencia de pull-down (10–100 kΩ) entre la puerta y GND: mantiene el MOSFET apagado mientras el microcontrolador arranca y sus pines aún flotan. Lo explicamos en resistencias pull-up y pull-down.
NPN o MOSFET: cuál elegir
| Criterio | NPN | MOSFET de nivel lógico |
|---|---|---|
| Se controla por | Corriente de base | Tensión de puerta |
| Pérdida en conducción | ~0,2 V fijos (Vce(sat)) | I² × Rds(on), muy baja |
| Corriente cómoda | Hasta unos cientos de mA | Amperios |
| Precio y disponibilidad | Muy barato, en todos los kits | Barato, pero hay que elegir bien el modelo |
| Con PWM rápido | Correcto | Muy bueno |
Regla práctica: NPN para relés, zumbadores y LED sueltos; MOSFET para motores, tiras LED y cualquier carga de más de 0,5 A.
El diodo de protección (flyback)
Las bobinas almacenan energía en su campo magnético. Al cortar la corriente de golpe, la bobina intenta mantenerla y genera un pico de tensión que puede superar con creces la tensión de alimentación. Ese pico destruye transistores.

La solución es un diodo en paralelo con la carga y en inversa:
- Cátodo (la raya) hacia +V.
- Ánodo hacia el colector o drenador.
En funcionamiento normal el diodo no conduce. Al apagar, ofrece un camino a la corriente de la bobina y absorbe el pico.
| Carga | Diodo habitual |
|---|---|
| Relé | 1N4007 o 1N4148 |
| Motor DC con PWM | Schottky (1N5819, SS34): más rápido |
| Solenoide o electroimán | 1N4007 o Schottky según corriente |
| Tira LED | No hace falta (no es inductiva) |
Muchos módulos de relé para Arduino ya incluyen el transistor y el diodo; si usas un relé suelto, tienes que ponerlos tú.
Ejemplo: controlar una tira LED de 12 V con un MOSFET
Montaje con un IRLZ44N y un Arduino Uno:
- +12 V de la fuente al positivo de la tira LED.
- Negativo de la tira al drenador del MOSFET.
- Surtidor a GND de la fuente y a GND del Arduino.
- Pin 9 → resistencia de 220 Ω → puerta.
- Resistencia de 100 kΩ entre puerta y GND.
const int TIRA = 9;
void setup() {
pinMode(TIRA, OUTPUT);
}
void loop() {
digitalWrite(TIRA, HIGH); // encendida
delay(1000);
digitalWrite(TIRA, LOW); // apagada
delay(1000);
}
Como el pin 9 admite PWM, puedes regular el brillo con analogWrite(TIRA, 128). Lo explicamos en PWM con Arduino y ESP32.
Errores habituales
| Error | Síntoma | Solución |
|---|---|---|
| Sin GND común | La carga no se enciende nunca | Une el GND de la fuente con el del Arduino |
| NPN sin resistencia de base | El pin o el transistor se dañan | Calcula la resistencia (560 Ω–1 kΩ típicos) |
| MOSFET no lógico a 5 V o 3,3 V | Se calienta y la carga funciona débil | Usa uno con Rds(on) especificada a tu tensión |
| Motor o relé sin diodo | El transistor muere tras unas conmutaciones, reinicios | Diodo en inversa en paralelo con la carga |
| Diodo al revés | Cortocircuito al encender | Raya (cátodo) hacia +V |
| Patillas confundidas | No conmuta o se calienta | Comprueba el patillaje en el datasheet de tu modelo |



