¿Es este un uso adecuado de un transistor PNP?

Estoy intentando usar un transistor para encender y apagar un SSR, que a su vez enciende y apaga un solenoide. Originalmente usé un transistor NPN (2N222), pero esto causó problemas cuando la MCU se reinicia, porque todos los pines IO están altos . Mientras trataba de teorizar (usando mi conocimiento muy limitado en el área) sobre cómo podría usar un transistor PNP para encender/apagar los +5V que van a los transistores NPN, se me ocurrió que simplemente podría usar un PNP para conducir el SSR directamente. Esto evitaría el problema de reinicio, porque el transistor se "apagaría" mientras el IO estaba alto (¿verdad...?):

Salida MCU manejando transistor PNP, manejando SSR

¿Es este un uso apropiado de un transistor PNP? ¿Es esta una solución válida (probablemente obvia para la mayoría pero inteligente para mí)?

Según la respuesta de Russell, creo que no lo es (al menos, no como se dibuja aquí), porque la salida de MCU es solo de 3.3V, no de 5V.

Si sus pines uC GPIO se pueden programar para que sean salidas de drenaje abierto, puede conducir el optoacoplador usando la salida de drenaje abierto y una resistencia pull-up a su riel de 5v.
@B Pete: el problema es que el firmware los establece explícitamente en las entradas y habilita las resistencias pullup internas al reiniciar. No puedo cambiar nada de eso durante varios segundos, momento en el que tendría serios problemas.
Sí, pero al igual que con la solución PNP, el optoacoplador y el SSR se activarán cuando la salida de drenaje abierto tire del pin BAJO. El nivel alto momentáneo dejará los SSR apagados. Pero esto solo funciona si su UP tiene salidas de drenaje abiertas.
Oh dios, horrible esquema. ¿POR QUÉ? Ponga el puerto de +5V hacia arriba y el emisor del transmisor PNP en la parte superior. De lo contrario, es mucho más difícil de entender.
@Nombre falso: no pude descifrar en TinyCAD cómo voltear el transistor sin mover la base hacia la derecha. De cualquier manera, algo iba a verse mal.

Respuestas (4)

La solución que propone es lo suficientemente buena como solución básica, siempre que pueda garantizar que la salida de FEZ se mantenga alta en todo momento hasta que la establezca en un nivel bajo. Ese es su trabajo para determinar.

Agregue una resistencia de valor alto [tm] de +5 V a la base PNP para mantenerla apagada cuando "FEZ" esté en circuito abierto. Si no lo hace, probablemente se lleve a "sorpresas". 10k a 100k será suficiente.

Tenga en cuenta que, como se muestra, FEZ debe aumentar hasta cerca de +5 V para apagar el transistor. Tan solo 0,5 V por debajo del riel (4,5 V) puede provocar que se encienda. Esto puede o no ser un problema dependiendo de la implementación del circuito del procesador/controlador. Lo que funciona aquí puede fallar en alguna parte si no se tiene en cuenta. Cambiar los 10k a 100k anteriores a, por ejemplo, 2k2 de base a emisor dividirá el voltaje de la unidad para que necesite más voltaje gping negativo antes de que se encienda el transistor. Diseño a la medida.

El solenoide DEBE tener un diodo inverso a través de él si funciona con CC para minimizar el pico reactivo al apagar.

Como se muestra, su SSR tiene una etapa de salida TRIAC. Esto puede implicar unidad de CA o puede ser simplemente el símbolo que tenía disponible. Si de hecho es un solenoide accionado por CA, es posible que necesite o no "apagarlo" para evitar problemas de energía reactiva, como en el caso de CC.

  • Si el optoacoplador está "cruzado por cero" encendido y apagado, es posible que no necesite un "amortiguador", aunque, con una carga altamente reactiva, la corriente y el voltaje están casi 90 grados desfasados ​​y el apagado en un cruce por cero de voltaje seguirá siendo dar como resultado una "patada" inductiva.

  • Si el optoacoplador no tiene un cruce por cero, necesitará un amortiguador para disipar la energía reactiva. No puede simplemente usar un diodo invertido, ya que conducirá cada segundo medio ciclo (¡y habría " problemas "! :-)). . Un método es usar diodos zener de polaridad opuesta en serie, con voltajes zener al menos ligeramente por encima del voltaje pico de media onda de CA. por ejemplo, para la unidad de bobina de red de 110 VCA Vzener >= 110 x 1.414 >= 160- V. Digamos 18- V zeners. ( terminal 1 del solenoide - cátodo zener 1, ánodo zener1 - ánodo zener2, cátodo zener 2 - terminal 2 del solenoide.


Manejo de encendido

Si bien lo anterior resuelve el problema tal como se presentó, PUEDE no resolver el problema como sucede en casos genéricos del mundo real, y posiblemente tampoco en este caso. Aquí nos hemos dejado "cautivos" por lo que hace el procesador al inicio, en lugar de diseñar lo que queremos que suceda. Si el procesador no hace exactamente lo que queremos, nos vemos obligados a encontrar otra solución.

Una alternativa es diseñar un circuito que garantice un arranque adecuado. Es posible que esta no sea la solución más barata y sencilla, y si vale la pena depende de la aplicación. No voy a entrar en muchos detalles ya que hay muchas maneras de hacerlo.

Un solo ejemplo. Se utiliza un controlador NPN. La base del transistor está conectada a una tapa electrolítica a través de un diodo (posiblemente un diodo Schottky). El condensador también se carga a través de una resistencia de Vcc. Al encender, el capacitor está a 0 V, por lo que la base del transistor está sujeta por el capacitor y el transistor no puede encenderse. El capacitor se carga alto por la resistencia de Vcc y después de un período de probablemente < 1 tiempo Vcapacitor constante > 0.6V (ignorando el efecto del diodo) y el capacitor ya no tiene efecto en la operación. Es necesario determinar qué ocurre cuando se apaga.

Se pueden imaginar varias opciones. por ejemplo, el condensador podría ser controlado por un pin "de repuesto" y varios controladores controlados juntos de esta manera. Esto podría usarse como una "desactivación de controlador" masiva en cualquier momento a un costo incremental de un diodo Schottky por controlador.

Si este u otro esquema vale la pena es algo por determinar en cada caso.

Una alternativa es cambiar el suministro que se utiliza para controlar los periféricos (como el SSR en este caso). Esto también se puede hacer con control de clavijas o mediante un retardo RC. Muchas oportunidades para pensar y jugar.


Unidad de 3,3 V y otros problemas del mundo real

El LED del optoacoplador MOC3010 requiere un voltaje directo máximo de 1,5 V, por lo que la unidad de 3,3 V está bien.

Conecte el emisor PNP a 3V3 (si está disponible) y conduzca según los comentarios anteriores.

Si hay varios destellos en la línea de entrada antes de que las cosas se estabilicen, entonces se requiere una de mis ideas de encendido o algo similar si se quieren evitar operaciones falsas.

Si el tiempo de respuesta no es un problema, o si un retraso de, por ejemplo, 0,5 s es aceptable, agregar un condensador de "tamaño adecuado" a la base del transistor (ya sea PNP o NPN) ralentizará el funcionamiento. Esto también ralentiza el tiempo de liberación, por lo que debe tener en cuenta los efectos generales.

Incluso si la operación sin amortiguador parece funcionar bien, recomendaría MUY ENCARECIDAMENTE que se use un amortiguador, ya que "pasan cosas" y, tarde o temprano, es probable que alcance el voltaje máximo de la red "solo así" y experimente un pico inductivo de considerable magnitud. . En ausencia de un amortiguador, el propio TRIAC puede decidir intensificar y disipar la energía. Ya sea que lo haga de manera destructiva o simplemente se encienda de manera efectiva durante otro medio ciclo, está por determinarse. Este no es el tipo de cosas que desea que sus componentes determinen. en su nombre. Un diseño confiable es aquel que está (al menos) diseñado. Si pueden suceder cosas para las que no ha diseñado, entonces puede esperar que suceda lo inesperado.

De hecho, mis solenoides funcionan con CA, con 24V. ¡Gracias por la gran información! La hoja de datos recomienda probar el SSR y "si ocurre un cambio no deseado" para comenzar con un amortiguador usando los valores Cs = 0.022 μF y Rs = 47 Ω. En mis pruebas (sin amortiguadores), nunca presentó este problema.
No tuve en cuenta el hecho de que mi MCU solo genera 3.3V. Además, al reiniciar, los pines no están necesariamente "impulsados" a un nivel alto, están configurados para ingresar y se elevan a 3.3V con resistencias pull-up internas de ~ 50k. La idea del PNP parece cada vez menos buena.
Su descripción de una configuración de diodo/condensador/resistencia es interesante para mí, pero no puedo visualizarla (esto está fuera de mi alcance, donde estamos orgullosos de haber parpadeado un par de LED impulsados ​​por NPN BJT simples). ¿Sería posible describirlo con un poco más de detalle?
Consulte la respuesta editada anterior con respecto a la unidad de 3.3V y el desaire.
Construya de la siguiente manera: Para el controlador con referencia a tierra NPN: Cap-ve a gnd. Diodo Schottky de base a Cap+ (Ánodo de diodo a base). Resistencia Rsu de V+ a Cap+. La tapa a tierra en su (arranque) sujeta la base a la posición baja. Las señales de excitación no hacen funcionar el transistor como base sujeta a la tapa a ~+ 0V. Cap cargos a través de Rsu. Cuando Vcap > (Vbase_on-Vschottky) se detiene la sujeción. Necesita una tapa grande. Agregar otro diodo a través de la tapa (generalmente con polarización inversa) permite que la tapa se descargue cuando se quita la energía. Ayuda a restablecer el cct de reinicio más rápido. Si este es un problema común, es mejor desconectar los periféricos o usar una línea de reinicio compartida para los controladores.
O, probablemente más simple, ¿cómo podría hacer para ejecutar los cálculos en las resistencias (una entre + 5 V y la base PNP, y otra entre la MCU y la base) para que funcione para esta implementación en particular?
... santa mierda ... sí, buena llamada a las resistencias pullup si están flotando durante el encendido :)
Divisor para permitir la transmisión de 3,3 V al transistor con un emisor de 5 V: 5v-3,3 = 1,7 V - digamos 1,6 para simplificar :-). / Prueba dividir esto por 4/5/6 para ver resultados = 0.4/0.32/~0.25 -> ninguno opera transistor pero 0.4 es muy marginal. // Cuando la puerta está baja = 0V, divida 5V por 4/5/6 = 1.25/1.0/ 0.85. es decir, todos encenderán PNP cuando la puerta esté baja. Elija decir ~ 5: 1 divisor que da Vbase = -0.32 V wrt 5V cuando la puerta está alta y 1V cuando la puerta está baja. Digamos 1K:3k9, etc. O, por ejemplo, 4k7:18k... [Tenga en cuenta que una vez que tenga una relación, puede deslizar ambas resistencias hacia arriba en las posiciones de valor N std R y mantener la relación. Un truco inmensamente valioso.

Sí, tu circuito está bien.

Sin embargo, un punto: para mayor claridad, generalmente es una buena idea dibujar esquemas con voltajes de alimentación positivos a negativos de arriba a abajo. En otras palabras, su circuito es correcto, pero me gustaría ver el transistor transpuesto verticalmente. Emisor en la parte superior conectado al suministro de + 5V, colector hacia abajo conduciendo el SSR y base a la izquierda como lo tiene. Mi primera reacción fue que su circuito estaba roto hasta que noté los 5V en la parte inferior.

Estoy de acuerdo, así es como lo quería, pero no pude encontrar la manera de organizar el transistor de esa manera en TinyCAD :(
Necesita Rbe para seguridad de entrada o/c.

Si te entiendo bien el emisor del transistor esta conectado a +5V, pero el microcontrolador es de 3.3V.

En general, no puedes hacer eso. Hacer que la salida sea alta seguirá consumiendo corriente a través de la base: (5V - 0.7V - 3.3V)/2200 Ω = 450 m A, que sería suficiente para encender el SSR. Una solución sería cambiar el pin de E/S a entrada en lugar de convertirlo en una salida alta, pero la mayoría de los controladores de 3,3 V no son tolerantes a 5 V.

Podría bajar unos cuantos voltios de la base colocando un par de diodos en serie, pero esos necesitan corriente para crear la caída de voltaje, lo que significaría que necesita una resistencia a tierra, y luego vuelve a tener su problema original: en el arranque conducirá la ruta transistor-diodos-pulldown, encendiendo el SSR.

Mi sugerencia sería volver a la solución NPN y asegurarse de que cualquier pull-up interno esté deshabilitado.

Si mi memoria no me falla, el único problema es que lo que has hecho invierte el 'sentido' de la entrada FEZ. Es decir, para encender el transistor, debe conducir la base del transistor PNP a GND. Aparte de eso, me parece una solución perfectamente válida.

Bien. La lógica de la unidad en el software deberá invertirse, es decir, conducir la salida BAJA para encenderla y ALTA para apagarla... ¿es eso lo que quiere decir?
sí, eso es lo que quiero decir.