Conduzca el MOSFET del canal P con Arduino, no se puede obtener el comportamiento deseado (pin BAJO, MOSFET ENCENDIDO)

Después de horas de construir un circuito en un perfboard, descubrí que Vgs no es fácil con P-MOSFET. Después de buscar, descubrí que necesito usar un N-MOSFET o un BJT (NPN) para llevar el voltaje de la fuente a la puerta para apagar el MOSFET.

Es muy importante para mí que cuando el pin Arduino está BAJO, el MOSFET permanece ENCENDIDO. Esto es para proporcionar corriente al propio Arduino si el sistema detrás no tiene energía (no relevante para el circuito aquí).

Debido a esta limitación, circuitos como este:

apagará el MOSFET cuando la entrada de arduino sea BAJA. (Según tengo entendido) he intentado proporcionar el voltaje a la puerta usando un N-MOSFET en el lado ALTO, vea esta captura de pantalla (disculpas por no usar un software de circuito adecuado):ingrese la descripción de la imagen aquí

A pesar de que el N-MOSFET se muestra saturado, solo 3,32 V llegan a su fuente, lo que no es suficiente para activar completamente la puerta del P-MOSFET.

Mi breve conocimiento de la electrónica ha sido superado, ya que no puedo entender esto. Sería lógico para mí que el N-MOSFET aplicara el voltaje de drenaje completo en su fuente, dado que el voltaje de la puerta es alto.

Si bien estoy interesado principalmente en una solución para este circuito aquí, cansado de perder tiempo en esto, sería bienvenida una explicación de por qué mi conocimiento es defectuoso.

Gracias por su tiempo, actualizaré la publicación si me falta algo.

Usted escribió: "...He intentado proporcionar el voltaje a la puerta usando un N-MOSFET en el lado ALTO...". Mi respuesta intenta abordar exactamente las dificultades para saturar el canal N en MOSFET de lado alto.

Respuestas (3)

Bien, suponiendo que los requisitos son:

  • Arduino GPIO Low (0V): interruptor PMOS ON (voltaje de carga = 12 V)
  • Ardunio GPIO High (5V): interruptor PMOS APAGADO (voltaje de carga = 0)

Este circuito funcionaría:

esquemático

simular este circuito : esquema creado con CircuitLab

Gracias por la respuesta, estoy tratando de entender las diferencias entre el circuito mostrado por Spehro y el tuyo, ¿hay alguna razón para las diferencias en el colector de Q1? Parece que tiene un divisor de voltaje allí, donde Spehro lo tiene en la base de Q2.
La ubicación de mi R5 (1k) frente a su R2 (20k) no hace ninguna diferencia para su propósito; simplemente está configurando la corriente base para Q2 en ambos casos. En Sphero la corriente será ≈ (12-0.7)/20k = 0.6 mA. En mi caso será ≈ (12-0.7)/1k = 11.1 mA. Honestamente; el valor que elegí fue arbitrario, pero una de las ventajas sería reducir el recuento de piezas únicas. La ventaja de Spehro es un menor consumo general de energía. ¡Depende para lo que estés optimizando!
+1 Son bastante equivalentes. La compensación principal es R4 (ambos circuitos) que determina qué tan rápido se enciende el MOSFET (demasiado lento es difícil para el MOSFET). Ambos elegimos el mismo número. Si desea que cambie más rápido, puede reducirse a (digamos) 1K (puede cambiar los valores R5 y R4 en el circuito de Jim) 1/4-W o mejor.
Gracias por la valiosa información. Dado que este circuito no cambiará con frecuencia (como máximo una vez por minuto), no me preocupa demasiado ser duro con el MOSFET.
Como no encontré la manera de enviarles un mensaje privado, quería preguntarles sobre CircuitLab que parecen usar. Tuve unos minutos para probar antes de que expirara mi prueba, y me gustó. A pesar del alto precio de una membresía, ¿la recomiendas para un aficionado? Actualmente estoy usando falstad.com/circuit/circuitjs.html (borraré este comentario una vez respondido, ya que no está relacionado con la pregunta)
Me encanta.. ¿No es una membresía anual de $25 más o menos? En mi opinión, vale la pena para simulaciones rápidas y controles de cordura.
Este circuito puede funcionar para otros propósitos, pero no permitirá que un Arduino u otra MCU controle su propia potencia, ya que la resistencia pulldown lo volverá a encender tan pronto como la MCU deje de impulsar activamente la entrada alta en oposición al pulldown. Para que algo controle su propia potencia, una resistencia de extracción debe mantener el estado "apagado" y no pasar por alto el interruptor de alimentación a través de los diodos de protección de E/S.
De acuerdo Cris. Estaba teniendo dificultades para entender qué significaba exactamente "Esto es para proporcionar corriente al propio Arduino si el sistema detrás no tiene energía". Pero creo que tienes razón.

Pruebe algo como esto (MOSFET de canal P capaz de> 12V Vgs)

esquemático

simular este circuito : esquema creado con CircuitLab

Q1 cambia el nivel a +12, Q2 invierte la señal para que el MOSFET esté ENCENDIDO con entrada BAJA.

Ja. Venceme por unos minutos. Bien hecho como siempre Spehro
¡Gracias! Intentaré esto una vez que mi voluntad de volver a intentarlo haya sido restaurada e informaré de nuevo.
El problema aquí es que el interruptor está encendido en cualquier momento en que la entrada no se eleva activamente. El autor de la pregunta parece querer que un Arduino controle su propia potencia, y este circuito no lo permitirá. Mientras que si agrega una resistencia pullup para mantener Q1 encendido cuando la MCU está apagada, la resistencia de extracción puede terminar volviendo a encender la MCU a través del diodo de protección de E/S.
@ChrisStratton es correcto. Esto hará lo que solicitó, pero no es lo que necesita si espera que la MCU pueda apagarse por sí sola.
Creo que los requisitos del OP no están totalmente claros. Chris puede tener razón. O tal vez no. Para el OP, si maneja Q1 bajo, M1 estará ENCENDIDO. Si conduce Q1 alto, entonces M1 se apagará, cortando la energía al arduino. Pero una vez que se corta la energía al arduino, la entrada a Q1 será baja nuevamente y M1 se encenderá nuevamente. ¿Es esto lo que quieres?
Como le dije a @ChrisStratton en otro comentario, los 12V no alimentan el Arduino. El 12 sirve como fuente de energía de respaldo para proporcionar corriente si la batería se está agotando. El arduino decide qué significa "ir bajo". Aquí, el propósito del MOSFET es eliminar el suministro de respaldo cuando el Arduino lo decida y los otros dispositivos puedan funcionar solo con la batería. (Cuando la energía de respaldo está ENCENDIDA, los 12 V alimentarán los dispositivos, cuando el MOSFET se APAGUE, solo el voltaje de la batería estará aquí.
De esta manera, hay tres estados posibles. Los 25 V del suministro principal de la batería/controlador solar están presentes, y son lo suficientemente altos como para calificar como "suficientemente altos", y el arduino apaga el MOSFET, colocando el pin en ALTO. Esto lleva a que los 12V no ingresen al sistema. Otro estado es la presencia de 25 V, pero en realidad a 23 V, que Arduino considera bajo, por lo que traerá la energía de respaldo para impulsar el riel de 12 V del circuito (hay un CC-CC entre el riel de 25 V y 12 V). El arduino al estar en el riel de 25V, no recibe energía del riel de 12V.
El último estado, y por el que tengo mis requisitos de pin bajo = MOSFET ENCENDIDO, es cuando el riel de 25 V está totalmente vacío (falta la batería + el controlador solar no proporciona electricidad). El riel de 12V entonces estará activo, con el MOSFET encendido. Esto permitirá que la corriente pase de los pines de SALIDA del DC-DC (para 25->12V), a los pines de ENTRADA, proporcionando 12V al riel de 25V, pasando por el diodo del cuerpo del buck DC-DC (no es óptimo). pero mejor que nada). De esta manera, el Arduino obtendrá energía y podrá evaluar la situación y mantener la puerta baja.
Los dispositivos en el riel de 12 V nunca deben apagarse. Ellos, con mi configuración, se alimentan de diferentes fuentes, según lo que esté disponible. A menos que la batería falle o falte, no haya corriente solar y la casa se haya quedado sin electricidad (el suministro de 12 V en este circuito es un bloque de alimentación que proporciona 12 V CC), no se apagará. El riel de 25 V está conectado a la batería y puede recibir solo 12 V durante cualquier cantidad de tiempo. Los únicos dispositivos que dependen de este riel son el DC-DC 25v->12v, algunas luces conmutadas por humanos y el cargador de teléfonos inteligentes
¿Qué pasa con el uso de dos transistores NPN en lugar de NPN y PNP?

Esta configuración no es adecuada para canal N de accionamiento en posición de lado alto. Use un mosfet de canal P o proporcione un V gramo más alto que V d + V gramo s T H (por ejemplo, utilizando técnicas de arranque). Algunos ejemplos (a continuación), que muestran cómo accionar los interruptores laterales altos según sus necesidades: clavija baja -> carga activada.

Accionamientos laterales altos

"Esto es para proporcionar corriente al propio Arduino si el sistema detrás no tiene energía (no es relevante para el circuito aquí)". En realidad, si ese es su objetivo, es extremadamente relevante, ya que una MCU que va a controlar su propia energía debe usar un interruptor no inversor hecho de dos semiconductores. Si intenta usar un interruptor inversor FET simple normal, terminará volviéndose a encender a través de los diodos de protección de E/S y la resistencia de mantenimiento.
@Chris Startton: Confieso que no entendí nada de lo que escribiste.
@ChrisStratton Los 12V no van directamente al Arduino. El arduino tiene un buck DC-DC separado que convierte 25V en 5V, desde otra fuente separada. Los 12 V aquí son energía de respaldo si faltan los 25 V. Pero tengo curiosidad sobre cómo puede volver a encender el Arduino desde el pin de salida, ¿podría suceder eso con los ejemplos de Spehro o Jim?
@Cubox: no importa que no vaya directamente. Su deseo de controlar un interruptor de lado alto de modo que esté encendido cuando un pin de E/S está bajo es básicamente incompatible con el autocontrol de alimentación, para cualquier MCU que tenga diodos de protección que sujeten las E/S a los rieles de alimentación.