Uso adecuado del colector abierto para conmutar una salida

Estoy trabajando con una pieza preexistente de hardware de consumo que tiene una salida GPIO de colector abierto, como se muestra a continuación:

ingrese la descripción de la imagen aquí

El colector abierto puede generar hasta 100 mA.

Me gustaría cambiar un relé (un relé Sanyo tipo SRD con +, Señal y -; como este https://www.velleman.eu/products/view/?id=435570 ), con un circuito simple como este :

ingrese la descripción de la imagen aquí

(Disculpas por el error de imagen, estoy usando los 5 V CC para los que está clasificado el relé como potencia)

¡Y estoy bastante sorprendido de ver que no funciona! Pensé que agregar una resistencia pull-up me permitiría cambiar el RelayInputnodo a +5 V o 0 V al encender y apagar el GPIO. Estoy encontrando que el voltaje en ese nodo se mantiene constante (~1.8 V) independientemente de lo que haga con el GPIO. Estoy mucho más acostumbrado a trabajar con Open Drain / MOSFET y lógica digital, por lo que creo que me falta una idea crucial aquí basada en transistores y cómo la lógica será impulsada por corriente.

Intenté cambiar la resistencia pull-up a valores más bajos (1k y 4.7k) y el comportamiento es exactamente el mismo.

¿Puede alguien ayudarme a entender cuál es el problema aquí?

¡gracias!

¿Por qué tienes tres líneas al relé? Normalmente tienen dos cables que se utilizan para alimentar la bobina. No tres. Estoy confundido. ¿Hay una hoja de datos para ello?
¿El "relé" es realmente un relé montado en una pequeña placa de PC con un optoaislador u otro circuito de accionamiento (como los módulos de relé que se usan a menudo con Arduinos), en lugar de un relé desnudo?
Es un relé SRD-05VDC-SL-C 5V, definitivamente uno usado con módulos Arduino. Tiene su propio circuito de accionamiento. ¿Hay alguna forma mejor de conectarlo con el GPIO de colector abierto?
@nathanlachenmyer Bueno, eso explica muchas cosas. Ese punto de contacto medio NO es cómo activa el relé. Es uno de los puntos de contacto para el interruptor. (O tú estás confundido o yo lo estoy.)
@nathanlachenmyer Simplemente conecte su salida de "colector abierto" al pin de tierra del relé. Deje el +12 conectado a la alimentación del relé. Desconecte todo de ese pin del medio (por ahora). Como otros le dirán, es posible que desee agregar un diodo normalmente polarizado en inversa a través de los dos pines de contacto de la bobina.
@jonk Estoy usando una placa Velleman SRD-05VDC que tiene conmutación integrada y se supone que acepta lógica digital: velleman.eu/products/view/?id=435570 Tiene los 3 contactos para el interruptor, pero también 3 entradas: - alimentación, tierra y luego el pin de 'señal' para controlar el relé
La hoja de datos no es particularmente útil. Casi no hay información sobre "señal". Lo más probable es que necesite un cumplimiento de corriente de 8-10 mA para operar algún opto interno o algo así. Eso significa Sink & Source, supongo. Su resistencia de 10k no generará ese tipo de corriente. Intenta dejarlo caer a 1k.
Según las fotos, parece que la placa solo tiene un LED, una resistencia, un MOSFET ('Q1') y un diodo flyback. Dejar caer la resistencia pull-up a 1k no mejoró el comportamiento.
¿Puede cambiar el relé aplicando 5V directamente al pin S (señal)? ¿Y estás seguro de que tienes el GPIO configurado correctamente para la salida?
Sí, la aplicación directa de energía al pin de señal cambia el relé: solo usa el colector abierto para controlarlo lo que causa problemas. GPIO definitivamente está configurado para la salida.
una corriente de colector abierto sinks... no tiene sourcecorriente
@jsotola sí! Estoy de acuerdo en que este es el problema. ¿Alguna idea sobre cómo hacer que esto funcione?

Respuestas (1)

Parece que te confundiste con la hoja de datos del relé. Tiene una bobina, que impulsa el contacto "central" del interruptor, y la corriente de la bobina es de aproximadamente 90 mA en condición "activada" (dentro de las especificaciones de su transistor). La bobina se alimenta con 5V para SRD-05VDC-SL-C, por lo que uno de los contactos de la bobina debe conectarse a la salida del colector abierto y el otro a +5V (no a +12V ) .

¿Estás seguro de que el pin GPIO es tolerante a 12V? Subirlo a +12V puede freír el transistor. De todos modos, está mal conectarse a +12V aquí de todos modos.

La bobina en sí servirá como "resistencia pull-up". Tres cosas a considerar: diodo flyback, probablemente una pequeña resistencia en serie con el relé si se necesita limitar la corriente, y disipador de calor para transistor (si es externo).

Mira este tutorial .

Luego, puede conectar cualquier cosa clasificada por la hoja de datos a los otros 3 contactos del relé (el interruptor).

Actualización: gracias por la información sobre la placa que se está utilizando (VMA406). Es una pena que no publiquen diagrama de circuito para el módulo; Puedo ver que ya contiene un diodo de retorno y un transistor de conducción con, muy probablemente, una resistencia en serie en la entrada.

Investigando para el diagrama del circuito encontré lo siguiente aquí :

ingrese la descripción de la imagen aquí

Este es un diagrama de circuito incorrecto , ya que el diodo flyback está mal conectado. Aquí está el circuito correcto desde aquí :

ingrese la descripción de la imagen aquí

Su problema con el colector abierto puede relacionarse con la resistencia en serie en el módulo: si elige un valor demasiado grande para la resistencia pull-up, formará un divisor de voltaje con la resistencia en serie y es posible que el transistor no funcione correctamente.

En realidad, NO necesita una salida de colector abierto para controlar el circuito de este módulo VMA406, ya contiene un circuito de colector abierto para usted. Puede conectar GPIO directamente a la entrada del módulo.

Necesita los siguientes cables al módulo desde la placa MCU de su controlador: tierra, +5 V y entrada lógica para operar el relé. Puede ver esta información en la hoja de datos del módulo en la sección "Descripción general".

Para reformularlo, usando mi salida de colector abierto, quiero poder aplicar +5V al pin de señal en la unidad de relé.

El VMA406 y sus componentes internos reciben alimentación de +5 V, no de +12 V. Levantándolo y encendiéndolo desde +12 V, puede dañar la placa de relés, o incluso el transistor de salida del módulo (no mucho debido al alto voltaje [el transistor tiene una capacidad nominal de 40 V], sino debido a la corriente [nominal a 200 mA]).

La hoja de datos indica que la entrada de control es 5 to 12 VDC, y es extraño porque incluso CMOS tendría dificultades para tener exactamente una salida de 5 V con un suministro de 5 V, sin siquiera mencionar la lógica de Arduino.

Si no tiene un suministro de +5 V de su placa MCU, es mala suerte y no podrá usar el módulo de relé correctamente.

¿Será que el transistor interno está frito? Parece que tener una resistencia pull-up de 1k más o menos en el pin GPIO debería funcionar por lo que dices.

Puede verificar la salida del transistor usando un multímetro en modo voltop (signo de diodo) o simplemente midiendo el voltaje de salida con el pull-up adjunto.

Lo que haría en esta situación: tomar una puerta NOT (por ejemplo, CMOS 74HC04), encenderla desde +5V, conectar su entrada al 2N3904 con 4.7k pull-up a 5V y conectar su salida al pin de "señal" del módulo - y ver si mejorará la situación. Por supuesto, el comportamiento del relé se reflejará, pero mostrará si el módulo puede aceptar el 1 lógico del pin de señal (salida de HC04). Sospecho que estará cambiando correctamente. Si es así, puede reemplazar la puerta con LVC1G04 en el diseño final.

Alternativamente, puede quitar Q1 de la placa de relés y usar ese 2N3904 interno en su lugar (usando el segundo circuito del módulo como referencia, pero asegurándose de que la corriente del relé esté dentro de las especificaciones para el transistor y que haya suficiente disipación de energía para enfriarlo). En estado).

Estoy usando una placa Velleman para el relé SRD-05VDC que tiene circuitos integrados para conmutación: velleman.eu/products/view/?id=435570 Requiere alimentación, conexión a tierra y luego la señal del relé; el problema es que yo No puedo usar mi GPIO de colector abierto para activar la entrada de señal de la placa de relés.
Gracias por la información, respuesta editada.
Agradezco mucho su respuesta aquí. Aunque mi problema es que mi GPIO es una salida de colector abierto (es un 2N3904 dentro de la unidad); cuando conecto el pin GPIO al pin SIGNAL en el VMA406 directamente, no puede cambiar la unidad. Supongo que esto se debe a que no hay energía disponible para impulsar la corriente a través de R1 a Q1. Para reformularlo, usando mi salida de colector abierto, quiero poder aplicar +5V al pin de señal en la unidad de relé.
Como dije, debe conectar GND, +5V y señal a la entrada del módulo (al circuito de la bobina). Sin +5V (alimentación para el transistor en la placa) no funcionará. Se conecta a +12V y no es correcto para esta placa, ya que está clasificada para +5V. Incluso corre el riesgo de freír el transistor de la unidad interna (2N3904) llevándolo a +12V.
Tengo acceso a +5V para alimentarlo; sin embargo, incluso con una potencia de +5 V, el GPIO no puede cambiar el pin de señal. ¿Será que el transistor interno está frito? Parece que tener una resistencia pull-up de 1k más o menos en el pin GPIO debería funcionar por lo que dices.
Respuesta actualizada. En general, hay dos enfoques: construir un circuito para controlar el módulo de relés o "desmontar" el módulo de relés y el componente del relé de control directamente.
¡Muchas gracias! Eso es lo que temía, pero me alegro de sentirme un poco menos excitado porque no está funcionando como esperaba... ¡gracias por su ayuda!