Alimenta un relé de 5V desde pines GPIO

22

Tengo un banco de relés (5) que estoy buscando ejecutar desde mi Pi. Estoy usando relés de conectividad TE de 5V, alimentados por los kits de relés de alta potencia de Sparkfun, que usan un transistor NPN para activar el relé.

Hasta ahora, el problema que tengo es que no puedo hacer que el relé cambie. ¿Los pines de salida GPIO no suministran 5V? Pensé que el Pi lo hizo en el GPIO.

hightekjonathan
fuente
44
No, los pines Gpio son de 3,3 voltios.
Steve Robillard
Entonces, ¿sabes de alguna manera que podría modificar mi circuito?
hightekjonathan
1
Necesitará un suministro de 5 voltios y recordar conectar todos los terrenos juntos. Estoy haciendo esto para cambiar una luz de señal de torre como esta ebay.com/itm/…
Steve Robillard
2
Sugeriría que funcione primero con una fuente de alimentación separada y luego aborde la complejidad de las necesidades de energía del Pi y la portabilidad. Como dicen, la mejor manera de comer un elefante es un bocado a la vez.
Steve Robillard
1
Todos los terrenos están unidos. Y el 5v positivo está conectado a común en el Darlington. Seguí el diagrama.
hightekjonathan

Respuestas:

36

¿Por qué no simplemente así?

Raspberry Pi cambia entre 0 y 3V3, más que suficiente para saturar Q1, que se hace cargo del trabajo "pesado": activar / desactivar el relé de + 5V. Dependiendo de los relés que esté utilizando, podrían aplicarse pequeñas modificaciones para D1 y Q1.

Raspberry Pi controlando un relé

GeertVc
fuente
Excelente respuesta! Y una forma muy segura de hacer esto.
Piotr Kula
3
Buena respuesta, eso debería resolver las "preguntas de relevo" de una vez por todas. Tal vez sería bueno agregar que el hecho de que los voltajes de suministro del Pi y el relé deberían ser los mismos o al menos compartir un GND común. Si bien esto puede parecer obvio para el ingeniero eléctrico, podría ser un obstáculo para los principiantes.
Ghanima
@Ghanima: Sí, tienes un punto, seguro. Pero como mencionó, para mí es "obvio" si veo un símbolo de tierra, que esto es para ambos lados (aquí: frambuesa y relé). Y activé deliberadamente el relé con + 5V (incluso puede ser + 24V o cualquier voltaje de CC bajo seguro) para mostrar explícitamente a la audiencia que el propósito del circuito anterior es tener voltajes diferentes en ambos sitios. Ese es el objetivo del circuito.
GeertVc
1
¿Cuál es el propósito de R2?
erikH
2
@erikH: esta resistencia se asegurará de que la base de Q1 tenga un nivel fijo (en este caso, conectado a tierra) en caso de que la entrada en R1 flote. Si está seguro de que la entrada nunca flotará, entonces R2 no es necesario, pero es una especie de "salvaguarda". Si la entrada puede flotar y usted no tiene R2 conectado, entonces el transistor puede comenzar a cambiar de manera incontrolada.
GeertVc
7

# Introducción #

El OP quisiera usar Rpi para controlar de forma segura un banco de 5 módulos de relé Beefcake de Sparkfun . Tuvo un problema porque el nivel lógico Rpi GPIO es 3.3V, pero su relé usa control lógico de 5V. Quiere saber cómo modificar Rpi para sortear el problema de disparidad de nivel lógico. Sus opciones incluyen lo siguiente: usar el transistor BC5468 para conducir la bobina del relé; obtener un relé de aislamiento óptico y conducirlo con ULN2803; utilizando un controlador fuente como UDN2981, ...

Después de la investigación, ahora sugiero un par de soluciones, con sus respectivos pros y contras. El OP puede elegir una solución después de compensar el riesgo, la fiabilidad, el costo, etc.

# Contenido #

Solución 1: modificación de la resistencia de polarización del transistor NPN

Solución 2: uso de UDN2981 para cambiar la señal GPIO 3.3V de Rpi a 5V

Solución 3: uso de 74HC03 y 74HC04 para cambiar la señal GPIO de 3.3V de Rpi a 5V

Solución 4: uso de 74HCT125 para hacer convergencia de nivel lógico

Solución 5: uso de TXS0102 para realizar la conversión de nivel lógico

Soution 6: uso de 2N2222 para realizar la conversión de nivel lógico

Solución 7: uso de 2N7000 para realizar la conversión de nivel lógico

FAQ1 - Cómo alimentar Rpi y módulo de relé y conectar tierra juntos

FAQ2 - Cómo evitar un problema de entrada flotante

FAQ3: mi relé siempre está encendido, ya sea entrada alta o baja, ¿es porque la señal Rpi baja no es lo suficientemente baja?

FAQ3 - Mi señal Rpi GPIO Low no puede apagar el relé, pero configurar GPIO como entrada sí lo haría. ¿Haré daño a mi Rpi si lo hago?

Sugerencia de solución de problemas de hardware

Sugerencia de solución de problemas de software

Referencias

# Solución 1. Modificación de la polarización del transistor NPN para que sea compatible con 3.3V #

Hay dos tipos generales de soluciones:

(1) modifique el circuito de entrada de nivel lógico de 5V del módulo para adaptarlo a señales de 3.3V,

(2) use un convertidor de nivel lógico de 3.3V a 5V para cambiar las señales de 3.3V de Rpi a 5V.

Ahora empiezo con (1).

Investigación

El módulo de relé Beefcake de Sparkfun tiene un transistor NPN 2N3904 (Q2) que impulsa la bobina (U1). Está diseñado para las señales lógicas de 5V de Arduino.

Esquema del kit de control de relé SparkFun

Tengo un módulo de transistor NPN similar KY019 que puede ser controlado por las señales de 3.3V de Rpi. Así que revisé sus requisitos de señal de entrada para descubrir por qué KY019 puede recibir señales de 3.3V pero Beecake no.

KY019 spec

Encontré que KY-019 tiene un nivel de activación de 2.5V y 0.1mA . El transistor NPN amplifica esta señal a 50 mA, lo suficientemente alto como para engerizar la bobina para activar el relé.

Especificación de bobina de Tongling

Rpi GPIO (con un alto nivel por encima de 2.8V y un límite de corriente máximo de 16mA ), puede generar 4mA cómodamente, no debería haber ningún problema al conducir directamente el módulo.

La bobina tiene un tiempo de respuesta de 10 mS. Programé el pin 17 Rpi GPIO para alternar el módulo de relé a un período de 40 mS (25cps) y encontré que el relé hacía clic felizmente como se esperaba. (Estaba usando cables de conexión de 2 metros de largo para las señales GPIO, por lo que la señal en el extremo de entrada del relé es un poco ruidosa).

Prueba de alternancia KY019

Cómo modificar el módulo Beefcake para que sea compatible con la lógica de 3.3V

El transistor Beefcake NPN tiene una resistencia limitadora de corriente R2 de valor 1K. Esta resistencia limita la corriente base en el nivel alto lógico Arduino 5V. La corriente base dentro del límite, después de la amplificación (generalmente hFE> 100), es lo suficientemente grande como para engerizar la bobina.

Cálculo de la corriente Arduino 5V GPIO en el módulo de relé Beefcake:

Corriente Arduino i ~ (4V [Arduino High] - 1V [Vce (sat)]) / 1K [R]) = 3V / 1K = 3mA

Sin embargo, la señal alta lógica de Rpi es más baja que Arduino, por lo que la corriente limitada correspondiente es más pequeña y después de la amplificación no es lo suficientemente grande como para conducir la bobina.

Corriente Rpi i ~ ((3V [Rpi High] - 1V) / 1K = 2mA

La modificación es simple: simplemente reemplace 1K R2 con una resistencia más pequeña, digamos 510R.

Corriente Rpi i (después de la modificación) = (3V - 1V) / 501R = 4mA

Estoy haciendo conjeturas educativas basadas en análisis de circuitos y experimentación. Creo que mi suposición es correcta en un 90%.

Análisis de riesgo

Aunque el transistor NPN de señal pequeña 2N3094 se puede usar para conmutación de carga pequeña, no es tan confiable. Para la conmutación de relés, es más seguro usar transistores de potencia como SS8050, UDN2981, especialmente diseñados para cargas inductivas.

El OP quiere un método seguro que no freíría su Pi, por lo que, para mayor confiabilidad, un controlador fuente como UDN2981 es el camino a seguir.

/ ...

# Solución 2 - Usando UDN2981 para conducir el módulo de relé Beefcake #

Los comentarios señalan que el módulo de relé Sparkfun Beefcake del OP es un disparador de alto nivel, por lo tanto, el controlador de sumidero comúnmente utilizado ULN2803 no se puede usar. Se debe utilizar un controlador similar a ULN2803, pero en su lugar se debe utilizar el abastecimiento actual, en lugar del hundimiento actual.

Creo que UDN2981 es un controlador adecuado para el módulo de retransmisión del OP.

Verifiqué con éxito que UDN2981 manejaba un módulo de relé de tirón de alto nivel similar al Beefcak, y ULN2803 uno de bajo gatillo. A continuación hay un resumen.

UDN2981 que controla los módulos de relé de entrada de transistor NPN de alto disparador

Primero probé manualmente UDN2981, sin conectarme a Rpi, para parpadear 4 LED, para asegurarme de que el circuito funciona bien.

Foto de uln2803 udn2981

Luego configuré 4 módulos de relé de entrada de transistor NPN (KY019) y conecté las 4 entradas del módulo de relé a 4 salidas de canal UDN2981.

KY019 x 4

Luego conecté 4 pines GPIO 3.3V GPIO directamente a las 4 entradas del canal UDN2981. Utilicé la siguiente función de Python para alternar 4 módulos de relé a 25 cps.

función de python para alternar 4 relés

El resultado fue bueno. Los 4 módulos de relé hacen clic y los LED parpadean a 25 cps como se esperaba. Las señales de salida Rpi GPIO se mantuvieron cerca de 3.3V, y las señales de salida UDN alrededor de 4.0V, lo que implica que no se sobrecargó ninguna entrada.

Cambiar la forma de onda del módulo

UDN2981 que controla módulos de relé optoaislados de alta activación

El OP también consideró el uso de módulos de relé optoaislados porque son más seguros. He utilizado con éxito el mismo UDN2981 para controlar 4 disparadores de alto nivel, módulos de relé optoaislados (MK055).

Módulos de relé MK055

En realidad, UDN2981 se puede utilizar para controlar cualquier tipo de módulos de activación alta, sin importar el transistor NPN o los tipos optoaislados.

Sin embargo, para módulos de disparo bajo, ya sea transistor PNP u optoaislado, el controlador fuente UDN2981 no funciona, se debe usar ULN2803 u otro controlador de sumidero.

ULN2803 que controla la entrada de transistor PNP de disparo bajo o módulos de relé optoaislados

Verifiqué con éxito que el controlador de sumidero ULN2083 puede controlar 4 módulos de relé optoaislados de disparo bajo. Primero probé 4 LED parpadeantes manualmente, luego usé la misma función de Python anterior para probar los 4 módulos. Los resultados también fueron buenos.

Módulo de relé MK101

Discusión

ULN2803 y UDN2981 Pros y contras

Pros

  1. ULN2803 y UDN2981 pueden ser controlados directamente por señal lógica TTL o CMOS con voltajes de suministro de 3.3V o 5V.

  2. Sus salidas nominales de 500 mA con diodos de sujeción son adecuadas para conmutar relés y motores paso a paso.

Contras

  1. ULN2803 y especialmente UDN2981 no son tan comunes.

  2. Tienen 8 canales y, por lo tanto, tienen un tamaño de paquete DIP de 18 pines más grande. Para menos canales, los más comunes 74HC03 / 04 o 74HCT125 con paquete DIP de 14 pines son más comunes y más fáciles de manejar.

# Solución 3 - Usando 74HC03 y 74HC04 para subir la señal GPIO 3.3V de RPi #

El uso de UDN2981 para conducir un módulo de relé es una gran sobredestrucción, porque están diseñados con diodos de retroceso integrados para energizar directamente el relé.

El UDN2981 no es común y no es para que los principiantes experimenten. Para los principiantes, los circuitos integrados de puerta lógica muy comunes y baratos, las puertas 74HC03 Quad NAND y los inversores hexagonales HC04 pueden hacer el mismo trabajo que UDN2981, desplazando señales lógicas de 3.3V.

Verifiqué con éxito HC03 y HC04 cambiando la lógica de 3.3V a 5V y encontré que funcionaba tanto para la entrada del transistor como para los módulos de disparo de alto nivel optoaislados.

hc03 04 convertidor esquemático

hc03 hc04 ky019 mk047

hc03 hc04 ky019 ky047

# Referencias #

R1. ¿Cómo funciona un relé eléctrico? - TechyDIY

R2. Circuito de interruptor de relé - Tutoriales de electrónica

R3. Guía de conexión de control de relé de pastel de carne - SparkFun

R4. Búferes digitales y búferes de tres estados - Tutoriales de electrónica

R5. Resistencias pull-up - Tutoriales de electrónica

R6. Tutorial de niveles lógicos - SparkFun

Arduino Voh 4.2V, Vol 0.9V

R7. Rpi GPIO pin voltaje y especificación de corriente

Rpi Voh 2.4V, Vol 0.7V

R8. Transistor Bipolar - Tutoriales de Electrónica

================

# A.3 Convertidor de nivel lógico usando HCT125 #

Así que probé otro convertidor, HCT125. Me alegró descubrir que funciona bien. La señal 5V0 convertida HCT125 no cayó cuando se conectó al módulo de relé impulsado por transistor NPN.

Convertidor de nivel HCT125

/ ...

Fin de los apéndices

** * Respuesta larga a eliminar * **

Esta larga respuesta es demasiado larga y desordenada. Ahora estoy tratando de eliminar los párrafos irrelevantes y quizás reemplazarlos haciendo preguntas relevantes y respondiéndome a mí mismo.


Cómo comprobar el acoplador fotográfico / módulo de relé optoaislado

  1. Consigue un cable de puente.
  2. Conecte un extremo al pin de señal / entrada del módulo de relé.
  3. Sostenga el otro extremo y toque el pin Vcc (+) y Gnd (-) y verifique los resultados a continuación.

Tabla de resultados de prueba del módulo de relé

2.1 Tipo de entrada de transistor

Para el popular tipo de entrada de transistor bipolar NPN, la señal del controlador de fuente (señal Rpi GPIO o señal RPi GPIO después de la conversión de nivel lógico de 3.3V a 5V) va a la base del transistor a través de un LED en serie y una resistencia de polarización.

Ejemplo de módulo de relé de tipo de entrada de transistor (BJT NPN)

Hay otro circuito de conmutación de relé no tan popular como se describe en este tutorial de conmutación de relé

2.2 Tipo de entrada de fotoacoplador

El relé de tipo de entrada de fotoacoplador tiene un fotoacoplador como entrada. El fotoacoplador acciona otro transistor que a su vez acciona la bobina del relé.


Apéndice C - Convertidor de nivel lógico usando TXS0102

Ahora sé que Rpi GPIO puede controlar directamente el módulo de relé, pero hay dos problemas. Primero, la señal GPIO con un cable de conexión largo es ruidosa, por lo tanto no es tan confiable. En segundo lugar, el diodo del volante 1N4148 podría no suprimir por completo el EMF de la bobina, y si desafortunadamente el 1N4148 se rompe o no está conectado correctamente (mal contacto, junta de soldadura seca, etc.), el EMF posterior podría dañar el Rpi.

Así que decidí usar un convertidor de nivel lógico para cambiar la señal Rpi GPIO de 3V3 a 5V. Primero probé el convertidor TXS102 y encontré que funcionaba bien. Además de subir la señal GPIO, el ruido en el nivel alto también se reduce considerablemente.

TXs0102 foto y forma de onda

Sin embargo, encontré un gran problema al alimentar el módulo GPIO de 5V convertido al módulo de relé. El relé todavía se encendía y apagaba como antes, con la señal de 3V3, pero cuando utilicé el osciloscopio para verificar la forma de onda, encontré muy sorprendentemente que la señal de 5V se redujo a la mitad, a 2.2V .

Sospeché que la razón era que TXS0102 puede absorber la corriente mucho mejor que el suministro de corriente al módulo de relé. Para verificar mi suposición, alimente la señal de 5V a otro módulo de relé, un tipo de fotoacoplador desplegable, modelo MK01.

Esta vez encontré que la señal de 5V no cayó ninguna cantidad notable.

Así que rápidamente concluí que el módulo de relé de tipo transistor NPN es una mala elección. A partir de ahora, dejaría de probar este tipo de relés y pasaría al tipo de relés de fotoacoplador.

También probé otro módulo controlador de fotoacoplador MK101. Este módulo tiene un puente para seleccionar un disparador más alto o un disparador bajo. Encontré que para el disparo bajo, el nivel de señal de 5V convertido TSX0102 no se ve afectado. Pero cuando se selecciona Disparador bajo, el nivel de señal de 5V convertido se redujo a alrededor de 2.5V, aunque el relé todavía funciona.

txs0102 prueba de módulos de disparo bajo alto


Apéndice E - Convertidor de nivel lógico usando HC04

HCT125 no es tan común. Así que probé un circuito convertidor más, usando la compuerta NAND de drenaje abierto cuádruple HC03 y el inversor hexagonal HC04. Cuando probé la salida HC04, la encontré muy ruidosa. Supuse que una de las razones era que estaba usando fuentes de alimentación directas, una para rpi y otra para el convertidor. Incluso conecté los puntos de tierra de las fuentes de alimentación para hacer un punto común, el ruido no desapareció. Luego usé una fuente de alimentación para rpi y convertidor, y el ruido desapareció.

Salida de convertidor ruidosa

ingrese la descripción de la imagen aquí

Probé la señal de salida HC04 para el módulo de relé en modo de disparo bajo (que requiere corriente de hundimiento, pero no en modo de disparo alto (que requiere corriente de abastecimiento). Así que voy a agregar la puerta NO hexagonal HC04 que puede suministrar corriente a El módulo de relé.

Apéndice F - Problema de entrada flotante del convertidor de nivel HC04

La última vez que probé por primera vez el convertidor de nivel basado en HC03, en un módulo de relé de fotoacoplador, descubrí que si dejaba la entrada flotando, el módulo captaba el ruido y el relé se encendía y apagaba locamente. Pensé que la frecuencia era quizás 1kHz. No estaba seguro de si era algún tipo de oscilación de retroalimentación positiva. Pero cuando utilicé el alcance para verificar, ¡sorprendentemente descubrí que era 50Hz! Supongo que es una especie de resonancia. Pero no sé cuál es la diferencia entre resonancia y oscilación. Tal vez debería gafas de nuevo. De todos modos, creo que necesito agregar una resistencia pull-up / down en alguna parte.

Problema de entrada flotante del convertidor de nivel HC04


A continuación para acortar o eliminar

# Apéndices #

# A1. Opto aislado / placa del módulo de relé del acoplador de foto y esquema #

El módulo de relé Opto aislado tiene un acoplador de fotos que es de 4 pines IC. La siguiente imagen muestra un photoCoupler PC1 (con sus 4 pines etiquetados 1, 2, 3, 4 en verde) y un transistor Q1. Los circuitos integrados no siempre están marcados. En esta imagen, PC1 es EL354 y Q1 8050.

Foto de módulo de relé de entrada de fotoacoplador

Esquema del módulo de relé de entrada del fotoacoplador

Enlaces de diagrama

 35 : https://i.stack.imgur.com/cWkRi.jpg

tlfong01
fuente
1
tlfong01: "Entonces la señal GPIO 3V3 de Rpi puede conducir directamente el relé". : No debería decir eso porque leer esta línea puede dar la impresión a personas no técnicas de que pueden conectar directamente un pin GPIO del RPi a la bobina de un relé. Con consecuencias devastadoras ... Hay una razón para la adición del 2N3904 ... Debería decir "Entonces, la señal GPIO 3V3 de RPi puede conducir directamente el módulo de relé " en su lugar ...
GeertVc
Gracias por señalar mi error descuidado de no ser considerado con las personas no técnicas. Y cuando hice la corrección, descubrí que cometí otro error al insertar dos imágenes idénticas del KY019. En realidad, el primero debería ser el esquema del módulo SparkFun.
tlfong01
No hay problema, estamos aquí para ayudarnos unos a otros ... :-)
GeertVc
La razón por la cual existe una discrepancia al usar un GPIO directamente frente a un GPIO con una palanca de cambios es que la palanca de cambios está diseñada para entregar un voltaje específico (5V). Un pin lógico de 3.3V, por otro lado, se especifica con umbrales que indican la diferencia entre bajo y alto. Para el pi, esto significa que cualquier cosa por encima de 1.3V es alta . Si se está hundiendo a través de la resistencia a tierra (es decir, tirando de corriente), debería obtener 3.3V, pero eso probablemente no sea lo que hace la entrada en el relé: flota.
Ricitos de oro
@goldilocks: Sí, es confuso. OA dice que su kit de relé utiliza un transistor NPN para activar el relé [bobina]. Una respuesta parece sugerir modificar el transistor [a BC5468]. Otra sugerencia es usar darlington ULN2803, .. Necesito leer los comentarios una vez más para aclarar mi mente.
tlfong01