Conducción de un módulo de relé con alimentación de 5V desde un microcontrolador con alimentación de 3V3

lo que estoy tratando de hacer

Esta pregunta trata sobre el uso de cualquier microcontrolador de suministro de 3V3 para controlar módulos de relé alimentados con 5V que están disponibles en muchos proveedores. He proporcionado detalles a continuación de los microcontroladores y módulos que estoy usando específicamente, pero la pregunta es genérica.

En mi aplicación tengo una Raspberry Pi Zero y un Arduino que me gustaría usar para un proyecto de automatización. Tengo dos de los módulos SSR (HCMODU0115), como el de la imagen de abajo.

RSS

Los conecté a mis pines GPIO, como en la imagen a continuación, y los activé, pero noté que ambos LED brillaban independientemente de la salida proporcionada por mis controladores. Solo que cuando estaba activo, los LED eran como 100% brillantes, y cuando estaban inactivos, estaban a la mitad de brillo, pero aún encendidos.

Alambrado

Por curiosidad, decidí conectar un par de diodos en las entradas de los canales, como la imagen de abajo, pero luego los relés no se activaron en absoluto.

Prueba 1

Entonces decidí invertir los diodos y de repente el módulo de relé comenzó a funcionar de nuevo, pero esta vez el LED1 y el LED2 funcionaban como debían, estando tapados solo cuando estaban activos.

Prueba 2

Esto me trae dos preguntas.

Primero, ¿es seguro conectar directamente este módulo de relé a mis controladores? ¿Por qué los LED siempre están encendidos?

Segundo, ¿por qué solo funcionó cuando invertí los diodos? ¿Tiene algo que ver con la dirección del flujo de electrones?

Esto probablemente tiene que ver con niveles lógicos no coincidentes donde una salida de MCU 3v3 todavía se ve un poco "baja" para una unidad de optoacoplador de 5v (hasta que agregó una caída de diodo adicional que evita que el LED alcance su rodilla de voltaje directo). Pero las preguntas sobre productos no documentados no son tema aquí. Puede intentar usar un colector abierto o un circuito de drenaje abierto para impulsarlos, pero la verdadera lección es no comprar cosas a menos que a) vengan con documentación o b) esté seguro de que personalmente puede realizar ingeniería inversa de lo que necesita saber .
Hola @Mauker, bienvenido y encantado de conocerte. Ahora déjame ver. Su especificación de SSR de Hobby Components dice que para apagar el SSR, necesita 3.5V o más. Sin embargo, Rpi's High (también el 3V3 Arduino Mini Pro más nuevo) es solo 3V <3.3V. Por lo tanto, este tipo de dispositivo compatible con Arduino (no solo relé, sino muchos actuadores similares) hace que muchos novatos de Rpi lloren en la oscuridad. Lea mi (solo la respuesta completa a la mitad) para obtener más detalles. Por cierto, su pregunta es muy buena, con todos los detalles y una solución alternativa. Salud.

Respuestas (2)

Pregunta

El OP tiene un SSR activado por bajo nivel para Arduino de 5V .

El OP descubrió que 3V3 Raspberry Pi Zero (y 3V3 Arduino Mini Pro, etc.) pueden encenderlo, pero no apagarlo (solo el LED de estado cambia de brillante a tenue)

El OP descubrió que agregar un diodo en serie en el terminal de entrada resuelve el problema. ¿Por qué?

/ continuar, ...


Respuesta

Respuesta corta

Parte 1: Causa raíz del problema de no poder apagar el dispositivo

La causa raíz es la siguiente.

El dispositivo compatible con Arduino está diseñado para apagarse con un nivel alto de > 3,5 V (Apéndice A)

Sin embargo, el nivel alto de Rpi < 3,3 V no es lo suficientemente alto , por lo que SSR siempre está activado.


Parte 2 - Soluciones alternativas

ssr2

Hay un par de soluciones alternativas, incluidas las siguientes:

(1) Agregue una resistencia en serie 4k7 en el terminal de entrada (IN/CH1)

solución 4k7

Explicación: El 4k7 provoca una caída adicional de 5V a los 3V de Rpi (que es constante). Esta caída de tensión adicional hace que la tensión en el terminal IN/CH1 sea superior a 3 V, digamos 3,5 V. Así que problema resuelto.


(2) Convierta la lógica 3.3 de Rpi a 5V

Hay un par de formas, incluidas las siguientes:

(a)  Using a NPN BJT (eg 2N2222) in open collector mode, to pull up the 0V/3V signal to 0V/5V.  This method is only one directional, ie, output only.  

(b)  Using any MOSFET logical level converter module which is auto detect bidirectional (Ref 4).  

(3) Cambie GPIO al modo de entrada para apagar SSR/Relé/Zumbador (Apéndice C)

Como se explicó anteriormente, Rpi's High no es lo suficientemente alto como para cortar el LED del optoacoplador, o la corriente de base / emisor / colector de PNP BJT, una solución es simplemente cambiar el GPIO al modo de entrada, por lo que no se hunde la corriente de base, por lo tanto, todo apagado. Consulte el Apéndice C para conocer el caso de estudio del zumbador.

Advertencia: esta solución alternativa de cambiar el pin GPIO al modo de entrada para apagar el SSR tiene el riesgo de bloquear el circuito GPIO, lo que resulta en freír el Rpi tarde o temprano o acortar la vida útil del Rpi/s.


Parte 3 - Discusión, conclusión y recomendación

Discusión

/ continuar, ...


Conclusión

/ continuar, ...


Recomendación

(1) Los dispositivos disparados de alto nivel compatibles con Arduino casi siempre no tienen el problema de señal de alto nivel no lo suficientemente alta, por lo tanto, no se puede apagar el dispositivo.

Por otro lado, el dispositivo disparado de bajo nivel compatible con Arduno a menudo tiene el problema anterior.

Por lo tanto, para confundir a los novatos, una recomendación rápida y sucia es la siguiente:

Para jugar seguro, siempre obtenga un dispositivo activado de alto nivel, si tiene una opción.


(2) No use cambiar GPIO al modo de entrada, para evitar el bloqueo

Para evitar engancharse y freír su Rpi/3v3 Arduino Mini Pro, no use la solución de cambiar el pin GPIO al modo de entrada (configuración por configuración de modo o función de limpieza) para apagar el dispositivo.

/ continuar, ...


Respuesta larga

/ continuar, ...


Referencias

Parte A - Generalidades

(1) Disparador de bajo nivel de 5 V (Omron G3MB-202P x 2) Relé de estado sólido de 2 canales y 240 V CA - HobbyComponents

(2) Disparador de nivel bajo de 5 V (Omron G3MB-202P x 2) Esquema SSR de 2 canales y 240 V CA - HobbyComponents

(2.1) Relé de estado sólido G3MB - Omron

(3) Zumbador activo compatible con Arduino que indica que la señal de alto nivel de Rpi no es lo suficientemente alta como para apagarla


Parte B - Cambiador de nivel lógico (3V a 5V)

(4) TXB0108 Convertidor de nivel lógico bidireccional de 8 canales - AdaFruit US$8

(5) Cambiador de nivel cuádruple HCT125 de 3V a 5V - AdaFruit US$1.50

(6) HC03 Quad NAND Gartes con Open Drain Outpus (cambiador de nivel lógico de 3 V a 5 V)

(7) Conjuntos de transistores Darlington ULN2803A (cambiador de nivel de 3 V a 5 V) - TI

(8) Controlador de fuente de 8 canales UDN2981 (desplazador de nivel lógico de 3 V a 5 V - AllegroMicro

(9) Tutorial de nivel lógico - SparkFun

(10) Especificaciones eléctricas Rpi GPIO - Mosiac Industries

(11) Tutorial de transistores bipolares - Tutoriales de electrónica

/ continuar, ...


Apéndices

Apéndice A - Especificaciones del SSR activado por bajo nivel de HobbyComponents

(1) Especificaciones de entrada

Tensión de alimentación (CC- y CC+): 5V

Voltaje del interruptor de entrada: 0V a 2.4V

Voltaje de liberación de entrada: 3,5 a 5 V - ¡Causa raíz del problema!

(2) Especificaciones de salida

Voltaje de carga nominal: 100 V a 240 V CA

Corriente de carga: 0,10 a 2A

Sobrecorriente: 30 A (60 Hz, 1 ciclo)


Apéndice B - El nivel alto de Rpi/3v3Arduino no es un problema lo suficientemente alto

La muy triste historia comenzó en los viejos tiempos felices, cuando los aficionados jugábamos con solo 5V Arduino y todos los niveles lógicos eran una especie de 5V TTL, la vida era fácil.

Solo cuando apareció 3V3 Raspberry Pi, y más tarde también 3V3 Arduinos (por ejemplo, Pro Mini 328 3V3 8MHz), la vida se volvió confusa, especialmente para los viejos/novatos que solo conocen la lógica Arduino/TTL 5V.

Para entender por qué todos (bueno, casi) los novatos se confunden, debemos mirar de cerca el siguiente gráfico de niveles lógicos, que muestra la causa raíz de las molestias de los novatos de 3V/5V.


Gráfico de niveles lógicos

rpi alto


Centrémonos en las dos columnas más a la izquierda, TTL y Arduino. En esos eran los días, mis amigos de Arduino pensaron que el imperio imperial de Arudino viviría feliz para siempre, nunca imaginaron que pronto aparecerían algunos tipos grandes como Rpi. Entonces, la historia cuenta que los ingenieros de Arduino idearon un nuevo estándar/especificación de nivel lógico:

High level means at least 4.2V

Low level means at most 0.8V

El resultado es que la mayoría de los dispositivos, digamos actuadores, incluidos relés, solenoides, zumbadores, lo que sea, cumplen con esta especificación, con (este último Rpi, chicos, da miedo) el requisito de que para hacer algo usando un nivel alto, debe proporcionar 4,2 V o más. .

Por supuesto, esto hace que la vida de Rpi nazca más tarde, muy miserable, porque son tipos débiles de 3V3, y su nivel alto suele ser de 2.4V a 3.2V como máximo. Esto es lo que suelo referirme como el

El alto de Rpi no es un problema lo suficientemente alto


Apéndice C - Cambie GPIO al modo de entrada para apagar el zumbador

zumbador siempre encendido

Por qué el zumbador activo siempre está encendido.

La causa raíz es usar un zumbador activo compatible con Arduino para Rpi. Para este zumbador compatible con Arduino, está diseñado para ser de baja actividad, es decir, cuando la señal de entrada sea inferior a aproximadamente 1,0 V, el zumbador estará encendido. Y si la señal de entrada es superior a 3,5 V, el zumbador se apagará. Ahora Arduino no tiene problema, porque su High es de unos 4,2V, muy por encima de los 3,5V.

Ahora Rpi está en un gran problema, porque su alto es solo de unos 3 V, no hay esperanza de alcanzar los 3,5 V necesarios para apagarse.

Solución alterna

Fácil: inserte una resistencia 4k7 (o un diodo, como sugiere el OP) entre el pin Rpi GPIO y la entrada del zumbador activo.

Explicación rápida y sucia.

Es muy probable que la entrada del circuito del zumbador sea un PNP BJT. Está sesgado de tal manera que cuando la señal de entrada a la base, a través de una resistencia de polarización, es de 3,5 V o más, el transistor se corta (suerte, Arduino High es de 4,2 V, por lo tanto, un corte limpio), no fluye corriente base, por lo tanto no suficiente corriente de colector para activar el zumbador piezoeléctrico.

Ahora Rpi's High es solo 3V, por lo tanto, no es lo suficientemente alto como para tener un corte limpio, lo que da como resultado una corriente de base y, por lo tanto, una corriente de colector para activar parcialmente / débilmente el piezoeléctrico, por lo tanto, el zumbido más pequeño.

La solución de insertar un 4k7 entre Rpi GPIO y la entrada es no permitir que fluya ni siquiera una pequeña corriente de base, para obtener un corte limpio, por lo que no hay sonido.

Ahora, para el caso de activación/encendido, tanto Arduino como Rpi tienen un nivel bajo inferior a 1V, por lo tanto, ambos no tienen problemas para encenderse.

En realidad, Rpi tiene el mismo problema con un par de otros dispositivos Arduino, incluido el relé de activación de bajo nivel de 5V. Del mismo modo, Rpi solo puede encenderse, pero no apagarse. El mismo truco de agregar una resistencia de 4k7 es la cura rápida. Otra solución es la siguiente:

Para apagar el relé, en lugar de configurar GPIO alto,

establecer GPIO en modo de entrada

/ continuar, ...


Apéndice D: el problema del enganche, freír el Rpi o acortar su vida

Usar la solución alternativa de cambiar el pin GPIO al modo de entrada para apagar el SSR o el relé, tiene el riesgo de bloquear el circuito del pin GPIO de Rpi o acortar la vida útil de Rpi. La razón es que conectar un pin de entrada GPIO a 5V, incluso a través de una resistencia, puede ser fatal, como se explica en el siguiente artículo.

problema con el pestillo

problema de enganche


Apéndice E: ¿Por qué los dispositivos de disparo de bajo nivel a menudo causan problemas, pero nunca los dispositivos de alto nivel?

Problema de relé de disparo bajo

/ continuar, ...


fin de respuesta

Entonces, ¿la solución de diodo que utilicé funcionó por la misma razón que la solución de resistencia que proporcionó? Además, gracias por una respuesta tan detallada :)
@Mauker, perdón por responder tarde. Me perdí su pregunta porque he estado saltando entre un par de foros y generalmente me olvido de volver para hacer un seguimiento. La próxima vez que agregue una "@" antes de mi nombre de usuario , el sistema me lo notificará de inmediato. Acerca del uso del diodo en lugar de una resistencia para solucionarlo. (1) La resistencia puede reducir la corriente a lo que está diseñado. (2) Un diodo puede causar una caída de voltaje para lograr el voltaje original según lo diseñado. (3) Pero un LED en el extremo de la entrada puede usarse solo como indicador de estado, indicando el estado de la entrada (y también guardando el LED de estado de energía).

Esta es la forma más fácil de hacer que esto funcione: agregue solo una parte (por salida):

esquemático

simular este circuito : esquema creado con CircuitLab

ingrese la descripción de la imagen aquí

El esquema interno del módulo es algo como esto (desde aquí ):

ingrese la descripción de la imagen aquí

El Omron SSR obtiene alrededor de 0,7 o 0,8 V menos que el voltaje de suministro y necesita un mínimo de 4 V para funcionar de manera confiable, por lo que realmente necesita un suministro de 5 V. Comienza a encenderse un par de diodos por debajo del suministro, por lo que supera el voltaje de salida máximo de la MCU de 3,3 V.

¡Ey! Gracias por los esquemas internos. Me aseguraré de probar tu solución también.