Estoy usando un ESP8266-01 para controlar un relé de 3.3v a través de un transistor NPN 2N2222A. Los GPIO ESP8266 usan un nivel lógico de 3.3v.
La idea es que al configurar GPIO2 en hi/lo puedo saturar/cortar el transistor y controlar el relé. Esto funciona bien, siempre que conecte GPIO2 al transistor después del inicio, porque GPIO2 debe mantenerse alto durante el encendido para arrancar normalmente desde flash ( http://robertoostenveld.nl/esp-12-bootloader-modes/ ). Tengo una idea de que probablemente necesito tener un pull-up en el pin, pero estoy confundido con la forma en que GPIO2 se puede mantener alto sin tener siempre el transistor en estado saturado (es decir, ¿cómo puedo entonces hacer que GPIO2 sea bajo?... ). ¿Cuál es el mejor enfoque aquí?
Además, en una nota no relacionada, noté que en muchos diagramas de circuitos de controladores de relé que usan transistores, hay una resistencia entre GPIO y transistor. ¿Alguna buena razón para esto? Todo funciona como está, pero tal vez hay algo que me estoy perdiendo.
EDITAR: Para aclarar, el problema es que el circuito funciona según lo previsto si dejo que el ESP arranque y luego conecto GPIO2 a Q1. El problema ocurre si trato de iniciar mientras GPIO2 está conectado (es decir, como se muestra en el diagrama que proporcioné), en cuyo caso, presumiblemente, el GPIO2 se está reduciendo, lo que resulta en un modo de inicio incorrecto.
Debe agregar una resistencia entre la salida GPIO y la base del transistor. Si la base del transistor se condujera a 3,3 V, consumiría unos pocos amperios y el transistor o la MCU explotarían. Si no explotó, probablemente signifique que algo está limitando la corriente en la salida GPIO, pero no lo recomendaría dependiendo de esto.
Si su MCU lo necesita, ciertamente puede agregar una resistencia pull-up a GPIO2. Siempre que su valor sea lo suficientemente alto (10k es estándar para mí), la MCU puede reducir fácilmente el pin cuando se lo solicite.
El esquema sería algo así:
simular este circuito : esquema creado con CircuitLab
Editar: R2 debería ser mucho más bajo que R1, pero aún alto, así que arreglé los valores y reemplacé el transistor único con una estructura similar a Darlington para tener una ganancia lo suficientemente alta como para controlar correctamente el relé.
Lo que quieres hacer es conectar tu GPIO2 al relé con este circuito. Esto permitirá que GPIO2 alcance cerca de 3,3 V en el momento del encendido, pero no haga clic en el relé. Luego, cuando el software en la MCU esté listo para activar el relé, haga que envíe un '0' al pin GPIO2. El par de resistencias R1/R2 debe dimensionarse en la proporción que se muestra para que el GPIO2 realmente pueda elevarse. (El circuito en la otra respuesta los tiene al revés y no permite que GPIO2 se acerque a un máximo válido).
Claramente, la unión Base-Emisor {leer diodo} de la NPN está jalando GPOI2 a tierra. Y si la salida GPIO es alta, no hay un límite de corriente adecuado para esa salida.
Incluso con un pullup de 10k, la resistencia de la serie 1k solo tendría aproximadamente 0.3v a través de ella {suponiendo que esté conectada a tierra}; sin embargo, también habrá alrededor de 0.5v de voltaje del emisor de base, por lo que el resultado final seguirá siendo de alrededor de 0.8v en el pin IO. ¿Eso seguirá creando el problema de arranque? Ciertamente no es lo que yo llamaría detenido.
La sugerencia de usar un transistor PNP podría ser buena si tiene más voltaje para jugar, pero aún desea incluir una resistencia en serie para limitar la corriente, lo que significará menos voltaje para controlar el relé.
Al final, sería mejor usar un FET ya que no habrá corriente de puerta y no se necesitará una resistencia en serie. Solo necesita decidir si usar la conmutación de lado alto o bajo y, por lo tanto, el FET de tipo de canal P o N.
Dado que desea que el pin GPIO sea alto al principio, pero el relé no está activado, debe usar un FET de canal P en la configuración de conmutación del lado alto y bajar la puerta para activar el relé. No olvides la resistencia pullup
broma
glen_geek
arcologias
dandavis