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.
Respuestas:
¿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.
fuente
# 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.
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.
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é.
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).
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.
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.
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.
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.
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).
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.
Discusión
ULN2803 y UDN2981 Pros y contras
Pros
ULN2803 y UDN2981 pueden ser controlados directamente por señal lógica TTL o CMOS con voltajes de suministro de 3.3V o 5V.
Sus salidas nominales de 500 mA con diodos de sujeción son adecuadas para conmutar relés y motores paso a paso.
Contras
ULN2803 y especialmente UDN2981 no son tan comunes.
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.
# 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.
/ ...
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
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.
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.
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ó.
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.
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.
Enlaces de diagrama
35 : https://i.stack.imgur.com/cWkRi.jpg
fuente