Como manejar un rele desde ESP8266 gpio

Estoy tratando de conectar un gpio ESP8266 a uno de los módulos de relé (consulte la imagen).

Según entiendo con un trasfondo muy básico, ESP debería poder activar estos módulos de relé ya que todos los componentes electrónicos están integrados en ellos (no son solo componentes de un solo relé). He alimentado ESP y módulo de relé con diferentes fuentes de alimentación, con el VCC adecuado para cada uno (3v3 y 5v, compartiendo GND). Pero configurar las salidas ALTA y BAJA de ESP tiene un comportamiento errático (algunas veces el módulo de relé se dispara, a veces simplemente permanece en el mismo estado sin importar la salida gpio entregada).

Ahora, investigando no solo esta comunidad, sino algunas otras fuentes en la web, sé que debería haber el mismo transistor para ayudar a generar un voltaje más alto en las entradas de relé que el provisto, excepto ESP gpios.

Es importante señalar que:

  1. ambos módulos de relé funcionan bien cuando están conectados a un Arduino Nano, que por supuesto tiene un ALTO de 5v, y eso parece confirmar el problema con el ESP gpio
  2. El módulo de 2 relés funciona "mejor" que el módulo de 1 relé: en términos de precisión LOW gpio -> relé activado; ALTO gpio -> relé apagado. El módulo de 1 relé parece activarse solo una vez, y luego mantiene el relé encendido sin importar el valor de gpio (al igual que si el relé IN siempre estuviera en cortocircuito a tierra).
  3. Medí ~2.72v en ambos pines IN del módulo de 2 relés y ~4.33v del módulo de 1 relé. Eso me hace pensar que ESP no puede apagar el relé más tarde porque nunca alcanzará el valor de voltaje de pin normal, y casi todo lo que esté por debajo se reconocerá como GND LOW (por lo tanto, relé activado).

Mi pregunta es: ¿cómo puedo conducir correctamente los valores BAJOS y ALTOS de ESP gpio a estos módulos de relé?

Módulos de relé

Use un transistor, más específicamente un MOSFET, para amortiguar los 3V3 a 5V. Como se indica en el empaque del relé, están diseñados para 5V y no funcionarán de manera confiable con una señal de 3V3.
Gracias @uint128_t, tengo un transistor 2N2222 que creo que hará el trabajo. ¿Podría por favor proporcionar un esquema? Supongo que las conexiones no carecen de algunas resistencias y realmente me gustaría hacerlo bien para evitar freír cualquier cosa.
Ah, ignore mi comentario anterior, no tiene en cuenta el circuito adicional que alimenta los relés. Transeúnte tiene una gran respuesta.

Respuestas (1)

Ambos módulos manejan las cosas de manera diferente. El módulo de un solo relé utiliza un transistor PNP directo para controlar el relé. Bajo activo . Dado que su base nunca baja de 4,3 V (caída de VBE de 5 v - 0,7 v), nunca se apagará. Esta es también la razón por la que ve ~ 4.3V cuando IN está flotando. La corriente de fuga a través del diodo VBE es suficiente para causar esto y también puede mantener el transistor encendido por sí mismo.

ingrese la descripción de la imagen aquí

Su salida de 3.3V nunca puede apagar esto. Puedes arreglar esto con un circuito controlador. Cualquier NPN común y dos resistencias. La lógica se invierte debido a la NPN. Por lo tanto, la salida alta es NPN en la que está PNP en la que está activado el relé.

esquemático

simular este circuito : esquema creado con CircuitLab

El otro módulo es más complicado. Utiliza un optoacoplador para impulsar el transistor de relé.

ingrese la descripción de la imagen aquí

Sin embargo, el lado del led del opto tiene múltiples problemas para su ESP. Está vinculado a VCC. Su resistencia fue elegida en base a 5V VCC. Tiene un led de estado en línea. Dado que su GPIO es de 3.3V, eso significa que nunca puede apagar realmente la pareja opto. En la lógica alta, el opto ve 5V - 3.3V = 1.7V en todo, por lo que el lado del transistor sigue conduciendo.

Además, su imagen muestra que el puente VCC a JD-VCC está conectado . Esto significa que no encendió el lado Opto desde 3.3V, y tal vez causó que el ESP GPIO no tolerante a 5V se haya dañado.

Pero puedes probar con lo mismo que arriba. Una resistencia base NPN + es todo lo que necesita. No necesitas el pull up (R2 10k).

¿El módulo de 1 relé no es un nivel bajo activo? Lo probé con un Arduino uno y activa el relé cuando gpio está BAJO
@Dario no, está activo alto. Es un diseño simple. Tal vez conectó los contactos normalmente cerrados del relé en lugar de los normalmente abiertos. Entonces, al encender el transistor, que enciende el relé, rompe la conexión en el lado conmutado. El 2TY es un transistor npn y estos se usan típicamente como configuraciones de lado bajo y alto activo.
Estoy considerando las especificaciones recibidas por el vendedor y el hecho de que al conectar a tierra el pin IN, el LED verde en el tablero de relés se enciende, lo que significa que el relé también debería estar encendido. Pero como dijiste, el diseño y también la naturaleza npn del transistor dicen lo contrario. Así que comprobaré cómo funcionan los contactos C, NC y NO (todavía no les conecté nada)
Oh, espera, ¿el 2ty es PNP? En ese caso, tiene razón, poniéndolo a tierra, encienda el relé. Pero eso también significa que nunca puedes apagarlo por completo. Para apagar un controlador de lado alto PNP, la base debe estar debajo de una caída de diodo debajo del colector. Para 5v, eso significa 4.3 o superior. Entonces, a 3.3 V, todavía está conduciendo y el relé permanece encendido.
Como dije, tengo poca experiencia en electrónica, así que acabo de probar la forma en que funciona el módulo de relé y estoy bastante seguro de que la conexión a tierra ENCIENDE el relé. Además, el transistor soldado en el módulo está etiquetado como "2TY". No se si aun con esa etiqueta el transistor puede ser NPN o PNP. He buscado y siempre encuentro una descripción como esta . En ese caso, creo que tengo razón al decir que se trata de un transistor PNP y que el módulo de relé está activo en nivel bajo.
@Dario mira mi actualización. Un 2n3904 o similar es todo lo que necesita.
Es casi seguro que el transeúnte tenga razón en que es un PNP. Voy a eliminar mi respuesta, ya que la suya es mucho mejor.
@Dario sí, un 2n2222 funcionará. No, aún necesita una resistencia de base para ambos módulos y un pull up como se muestra para el módulo de un solo relé.
@Passerby ahora que estamos de acuerdo en que el módulo de relé está activo bajo, ¡creo que tenemos un ganador! Compruebe esto y estas pruebas. Mañana probaré el otro módulo de relés (más complejo). Gracias de antemano, lo siento, no tengo la reputación requerida para votar su respuesta en este momento.
He estado experimentando un problema de arranque, que en realidad desaparece cuando gpio se desconecta de la base del transistor en el arranque y luego se conecta cuando el esp se está ejecutando. El módulo simplemente no arranca conectado a través de resistencias de 2*220 ohmios ni con 1k+1k en paralelo (lo más cercano que puedo llegar a los 470 ohmios sugeridos). Mientras no arranco, puedo ver tanto tx/rx como los LED de alimentación encendidos, el monitor serial muestra basura y estoy bastante seguro de que hay algún tipo de "ruido" alrededor (capturado por los altavoces e incluso por el relé). Agradeceré sus amables sugerencias y soluciones.
470 es mi ir a la resistencia. Dado que este es solo un interruptor para el interruptor real, podría usar 1k o tal vez 4.7k. 10k podría ser demasiado bajo. Sin embargo, no estoy seguro de dónde viene el mal comportamiento. Eso es muy extraño.
Pero 470 ohmios en esta configuración solo generarían 6 miliamperios. Nada que debería ser un problema incluso para la esp.
@Passerby Probé con 1k, 4.1k, incluso 10k solo para verificar, también con 470 más bajos que los sugeridos, como 440, 320 y 220. Sin suerte, solo al desconectar el esp gpio del circuito del transistor permite que el esp arranque. Además, medí la salida de ~ 1.2v de gpio cuando encendí el esp, simplemente permanece así y no arranca. Cuando gpio se desconecta del circuito, el pin comienza en ~ 1.2v, cae a 0v y normalmente se inicia. Puedes comprobarlo en este metraje no tan Spielberg
@Dario, tienes la conexión a tierra esp y la conexión a tierra del relé, ¿verdad? ¿Y cómo es tu código?
Sí, ambos terrenos están conectados entre sí y estoy usando Espeasy
Esto casi podría ser una buena respuesta, pero el análisis de la versión del optoacoplador es erróneo. Está pasando por alto que hay dos gotas de diodo LED en serie allí. O tres si cuentas el diodo de protección de E/S. La diferencia entre 5v y 3v3 probablemente no será suficiente para activar ambos LED y, especialmente, no será suficiente para activar ambos LED y poner el diodo de protección en conducción polarizada directa donde podría dañarse.