¿Puede manejar un P-MOSFET como un interruptor lateral alto directamente desde un microcontrolador?

Tengo formación en ingeniería, pero experiencia práctica cercana a cero con el diseño de circuitos electrónicos discretos.

esquemático

simular este circuito : esquema creado con CircuitLab

Con respecto al esquema anterior, digamos que tengo un P-MOSFET (tipo SiA441DJ), un duplicador de potencia de 10 V y un microcontrolador STM32 con un nivel lógico de 3,3 V.

Muy simple, supongo.

Si uso un GPIO configurado como salida de drenaje abierto, no push-pull, y uso una resistencia pull-up entre la puerta y la fuente del P-MOSFET, debería ser posible controlar directamente el P-MOSFET desde el microcontrolador, sin controlador adicional circuitos (Excepto una resistencia de 100 OHM entre el GPIO y la puerta por "seguridad" y un pullup).

El pullup es poner el voltaje de puerta para el estado apagado.

¿Está bien hacerlo? ¿Estoy en lo correcto o me estoy perdiendo algo?

Con respecto al microcontrolador STM32F103, el circuito del controlador de salida GPIO se parece a esto:

Controlador de salida GPIO de STM32 Ref.  Manual RM0008

(Controlador de salida GPIO de STM32 Ref. manual RM0008)

Entonces, lo que entiendo (o no entiendo :-)):

Si utilizo la configuración de drenaje abierto, el P-MOS del controlador GPIO no conduce, por lo tanto, está abierto y, por lo tanto, no existe. Entonces, si el nivel de salida de GPIO es Alto, el N-MOS también está abierto, es decir, "no existe". Entonces, lo que queda es el diodo de protección, que une el pin a 3V3. OK entonces, entiendo que esto no funciona. Significa que la configuración de "drenaje abierto" está limitada a la lógica de salida GPIO.

Entonces, mi conclusión: no puedo conducir directamente el P-MOSFET de esta manera porque el diodo de protección del GPIO evita que el voltaje de la puerta aumente a V-SUP = 10 V. Es por eso que necesito un N-MOS adicional (o NPN) para obtener un "drenaje abierto verdadero", no limitado al nivel de alto voltaje de GPIO... Eso tiene sentido para mí...

¿Tengo razón?

Lo pregunto porque muchos ejemplos que encontré para hacer esto parecen mucho más complicados, al menos usando, por ejemplo, un N-MOSFET para controlar la puerta del P-MOSFET.

Nota: Aquí hay una pregunta muy similar: ¿ Se puede controlar un MOSFET directamente desde un microcontrolador? pero no se ha respondido. Las respuestas habían sido alteradas.

Puedo refinar mi respuesta, por qué no, si tiene un número de modelo de microcontrolador STM32 específico y puede definir qué pin IO específico está usando. Algunos pines no son tolerantes a 5V, otros sí. De todos modos, ninguno de los pines son verdaderos pines de drenaje abierto.
Para el caso especial donde VSUP y el VCC del micro son los mismos... si. De lo contrario... no sin algún tipo de traductor de nivel. Una salida de drenaje abierto o colector abierto como el 7407 (y un pullup) funcionaría para la conmutación de baja velocidad.
Gracias, edité mi pregunta y agregué detalles sobre el controlador GPIO.

Respuestas (5)

Si uso un GPIO configurado como salida de drenaje abierto, no push-pull, y uso una resistencia pullup entre la puerta y la fuente del P-MOSFET

y

¿Está bien hacerlo? ¿Estoy en lo correcto, o me estoy perdiendo algo?

Teóricamente sí, pero el diablo está en los detalles; cuando la salida de drenaje abierto de la MCU no se reduce, intentará aumentar a su nivel de voltaje de alimentación, es decir, intentará aumentar a 10 voltios. Esto puede exceder el nivel de voltaje máximo absoluto en ese pin MCU IO o puede haber un poco más de corriente de fuga en ese pin que hace que el interruptor sea menos efectivo. Todo se reduce a los detalles en la hoja de datos de la MCU.

Lo pregunto porque muchos ejemplos que encontré para hacer esto parecen mucho más complicados, al menos usando, por ejemplo, un N-MOSFET para controlar la puerta del P-MOSFET.

Esta es la forma normal debido a las razones mencionadas anteriormente. Vea también las notas que agregué al nuevo diagrama proporcionado por el OP:

ingrese la descripción de la imagen aquí

Este es un buen lugar para la configuración de base común a menudo descuidada:

esquemático

simular este circuito : esquema creado con CircuitLab

Asumiendo 3.3V CMOS GPIO, si el pin GPIO es bajo, enciende Q1, bajando la puerta de M1 a ~3V. Si el pin GPIO es alto, apaga Q1 y R2 sube la puerta de M1 a V-SUP.

¿Por qué se necesita R1?
@bigjosh R1 controla la corriente a través de Q1. Cuando Q1 está encendido, su emisor estará en ~ 2,6 V, una caída de diodo por debajo del riel de 3,3 V. El pin GPIO intentará reducir esto a cero, por lo que se descontrola y posiblemente dañe la corriente en el pin GPIO si no tiene algo de resistencia aquí.
Tiene mucho sentido. ¡Gracias!

No, el FET siempre estaría encendido, sin importar si la MCU emite 3,3 V o 0 V a la puerta. Los Vgs serían 6,7 V o 10 V.

Además, el aumento a 10 V siempre forzaría una sobretensión en el pin MCU, pero también limitaría la corriente de inyección en el pin MCU. Algunos pines MCU tolerantes a 5 V no están protegidos con diodos para el voltaje de suministro digital, por lo que podría dañar el pin MCU.

La MCU no tiene verdaderas salidas de drenaje abierto, simplemente no conducirá alto si lo configura como drenaje abierto.

Los pines MCU IO simplemente no pueden tener un pull-up de 10 V.

Clasificaciones máximas absolutas STM32F103: VDD + 4,0 V en pin tolerante de 5 V. 4.0 V en otro pin IO. Los pines tolerantes a 5 V no tienen diodo, por lo que no sujetan la corriente a VDD. Otras E/S tienen un límite de sujeción de 5 mA. Estos ya están fuera de las clasificaciones de especificaciones, nunca deben aparecer en el funcionamiento normal.

Condiciones operativas nominales: E/S estándar VDD máx. + 0,3 V. E/S tolerante a 5 V máx. 5,5 V Y para superar VDD + 0,3 V en un pin tolerante a 5 V, se deben desactivar las resistencias de extracción internas.

Entonces no, no es posible conducir un PFET con 10 V en la fuente.

Dijo un GPIO de drenaje abierto. Por otra parte, según la respuesta de Andy, alias, si hay diodos protectores internos en el GPIO de drenaje abierto, entonces tienes razón.
@DanielChisholm Sé que lo hizo. No hace la diferencia. La MCU no puede tener un pull-up de 10 V en ningún pin. No en pines tolerantes a 5V, no en pines tolerantes a 3.3V.
"el FET siempre estaría encendido": ¿Esto se debe al diodo de protección del GPIO?
@OliverRichter Sí, eso se aplica a un pin que no tolera 5 V, el diodo de protección de E/S evitaría que el voltaje del pin de E/S supere los 4,0 V, lo que daría como resultado una corriente de sujeción que debería evitarse. Un pin tolerante a 5V no se sujetaría, se dañaría, por lo que tampoco haría eso.
Incluso en los pines tolerantes a 5V, generalmente habrá algún tipo de protección ESD para limitar el voltaje a un valor seguro un poco por encima de 5V, tal vez un Zener o algo basado en FET con la misma funcionalidad de limitación de voltaje. Por lo tanto, tirará hacia abajo del pullup de 10 V, y si se le pide que conduzca demasiada corriente, explotará.
@bobflux no hay indicios de eso. Según mi respuesta, un pin tolerante a 5 V en esta MCU normalmente puede permitir 5,5 V, no habrá corriente de sujeción, y por encima de eso está la zona de peligro con un máximo absoluto de 7,3 V con un suministro de 3,3 V.

Controlar los Pmos de 3v3 conduce a una solución muy fea que puede traer muchos problemas. Mucho más claro es controlar con un transistor NPN/Nmos adicional como se muestra a continuación.

esquemático

simular este circuito : esquema creado con CircuitLab

Generalmente no, si el voltaje de carga está por encima del nivel lógico del controlador GPIO, y el GPIO tiene diodos de protección, que suele ser el caso.

Pero como excepción, sí, si el voltaje de carga está en el rango del nivel lógico GPIO del controlador. Sin embargo, este es solo un caso especial (no es común manejar una carga fuerte con un voltaje pequeño de 3,3 V, por ejemplo).

También encontré una buena fuente que muestra la diferencia . Muestra el uso de un NPN para controlar el MOSFET (consulte "MOSFET de canal P con el mismo voltaje de carga" y "Ejemplos de controladores de transistores").