A diferencia del BJT (controlado por corriente), el MOSFET está controlado 100% por voltaje. Sus terminales se llaman Gate (Compuerta), Drain (Drenador) y Source (Surtidor).
Cuando aplicas 3.3V en el Gate, se crea un campo electromagnético que abre un "canal" entre el Drain y el Source. La magia del MOSFET es su $R_{DS(on)}$ (Resistencia de Encendido). Cuando se satura, su resistencia interna cae a niveles absurdos (ej. 0.005 Ohmios). Esto significa que puede dejar pasar 10 Amperios de corriente sin generar casi nada de calor. Es el interruptor de estado sólido perfecto.
A pesar de que el MOSFET se controla por voltaje, el Gate (Compuerta) actúa internamente como un pequeño capacitor. Necesitamos dos resistencias vitales para que la placa electrónica no explote:
main() empiece. El $R_{pd}$ mantiene el Gate fuertemente en 0V por hardware hasta que el software tome el control.Dato crítico: Debes usar un MOSFET Logic-Level (como el IRLZ44N). Los MOSFET normales requieren 10V en el Gate para encender; los Logic-Level están diseñados para saturarse completamente con los humildes 3.3V o 5V de tu microcontrolador.
Ejercicio 1: Programa la rutina de inicialización de la válvula garantizando una "Política de Cero Aperturas Accidentales" (Safe State). Aunque el hardware tiene el Pull-down, el firmware debe complementar la seguridad durante el Boot (Día 56).
#include <stdint.h>
#include <stdbool.h>
// --- 1. REGISTROS FÍSICOS (STM32) ---
volatile uint32_t *GPIOB_MODER = (volatile uint32_t *)0x40020400;
volatile uint32_t *GPIOB_ODR = (volatile uint32_t *)0x40020414;
// Definimos el pin conectado a la Resistencia Rg del MOSFET (Pin 6)
const uint8_t PIN_MOSFET_VALVULA = 6;
// --- 2. CONFIGURACIÓN CRÍTICA DE POTENCIA ---
void etapa_potencia_init(void) {
// FASE A: BLINDAJE DE SOFTWARE (Software Safe State)
// El hardware ya está siendo protegido por la Rpd de 10k, pero aseguramos
// que el registro de salida (ODR) sea un '0' rotundo ANTES de activarlo.
*GPIOB_ODR &= ~(1 << PIN_MOSFET_VALVULA);
// FASE B: HABILITAR EL PIN
// Pasamos el pin de "Entrada Flotante" a "Salida de Propósito General"
*GPIOB_MODER &= ~(3 << (PIN_MOSFET_VALVULA * 2)); // Limpiar
*GPIOB_MODER |= (1 << (PIN_MOSFET_VALVULA * 2)); // Setear
// Ahora el STM32 domina el pin con Push-Pull (Día 64).
// La Rpd de 10k es superada con facilidad por la fuerza del procesador.
}
// --- 3. LÓGICA DE CONTROL (MÁQUINA DE ESTADOS) ---
void valvula_principal_set(bool abrir) {
if (abrir) {
// Enviar 3.3V. Carga el capacitor del Gate a través de Rg.
// El MOSFET abre el canal y caen los 24V de la bobina a Tierra.
*GPIOB_ODR |= (1 << PIN_MOSFET_VALVULA);
} else {
// Enviar 0V. Descarga el Gate a Tierra.
// El MOSFET corta el circuito. El Diodo Flyback absorbe el pico.
*GPIOB_ODR &= ~(1 << PIN_MOSFET_VALVULA);
}
}
int main(void) {
// 1. Iniciar periféricos
etapa_potencia_init();
// 2. Ejecutar Pruebas POST (Día 56)
// Si pasamos el POST, entramos al Súper Bucle
while(1) {
// La FSM (Día 60) invoca la válvula bajo estrictas barreras (Día 53)
// valvula_principal_set(true);
}
return 0;
}
Objetivo del día: Control de Actuadores Pesados sin Calentamiento.
La electroválvula neumática que libera el gas LP requiere una patada de energía muy fuerte (24V a 3 Amperios) para vencer la presión mecánica del fluido, y luego debe mantenerse encendida todo el tiempo que dura el despacho (a veces varios minutos). Si usas relés mecánicos, sus platinos se carbonizarán por las chispas (Día 65).
Al implementar esta Etapa de Potencia con MOSFET Logic-Level en tu placa KiCad, logras una conmutación de estado sólido impecable. La Rpd garantiza que al reiniciar la máquina no haya un latido accidental de gas; la Rg protege los frágiles pines del STM32; el diodo absorbe la destrucción magnética; y el MOSFET enruta los 3 Amperios con una $R_{DS(on)}$ tan baja que la placa de circuito impreso ni siquiera se pondrá tibia. Has alcanzado la robustez de un PLC industrial.
1. ¿Por qué ponemos la resistencia de Pull-down ($R_{pd}$) antes de la resistencia $R_g$ (como se ve en el diagrama SVG) y no después de $R_g$, pegada al Gate del MOSFET?
Respuesta: Es una técnica fina de electrónica. Si pones el $R_{pd}$ después del $R_g$, formas un Divisor de Tensión (Día 61). Cuando el STM32 emita sus 3.3V, el voltaje se dividiría ligeramente antes de llegar al Gate. Al poner el Pull-down antes, evitas afectar el voltaje completo que "empujará" al Gate a través de $R_g$. Además, el MOSFET es tan sensible que si su Gate se quema por estática, un $R_{pd}$ pegado al gate podría no ser suficiente si el daño interno lo cortocircuita hacia el pin.
2. ¿Qué pasa si te equivocas al comprar los componentes e instalas un MOSFET estándar (ej. IRF540N) en lugar de un Logic-Level (ej. IRLZ44N)?
Respuesta: Desastre térmico. Un MOSFET normal necesita que le inyectes al menos 10V en el Gate para saturarse completamente (abrir el canal al 100%). Si tu STM32 le inyecta solo 3.3V, el MOSFET se abrirá "a medias". Pasará a operar en la Región Óhmica o Activa, actuando como una resistencia gigante. Al intentar dejar pasar los 3 Amperios de la válvula, el MOSFET disipará toda esa energía como calor masivo, arderá en llamas en un par de segundos y la válvula nunca se abrirá con fuerza.