Restablecer el generador de impulsos para ESP8266

2

Estoy intentando generar un pulso de reinicio para activar un dispositivo ESP8266.

El ESP8266 admite una función de "suspensión profunda", en la que consume muy poca energía. Sin embargo, la única forma de activarlo es restablecerlo (tirando del pin de reinicio hacia abajo: el dispositivo se reiniciará tan pronto como el pin vuelva a subir).

Así que estoy intentando usar un evento externo (digamos un interruptor normalmente abierto) para activar el dispositivo. Sin embargo, hay un inconveniente: el dispositivo debe activarse inmediatamente después de que se cierre el interruptor, aunque el interruptor puede permanecer cerrado durante muchos segundos o minutos después. Así que necesito un circuito que genere un pulso de restablecimiento (bajo, luego alto después de varios milisegundos) cada vez que se cierre el interruptor.

Pensé para mí mismo: "No hay problema, ¡eso debería ser fácil!" (Sí, soy un novato! :)). Y construí este circuito, que funciona maravillosamente en el simulador ...

Pero,porsupuesto,lavidarealnoseajustaalasimulación...EstoyusandounaplacadedesarrolloWemosD1Mini,queagregaunnivelcompletamentenuevode complex , que incluye una resistencia pull-up en RST y un condensador entre RST y tierra. Así que, por supuesto, este simple circuito ya no funciona :(

Mi pregunta es: ¿cómo puedo cambiar este circuito para que funcione? O, si eso no es posible, ¿qué tipo de circuito podría usar en su lugar?

También consideré un 555, pero a) no estoy seguro del consumo de energía, yb) es un dispositivo de 5 V, por lo que podría ser más difícil utilizar las baterías.

Algunos desafíos adicionales:

  1. Los circuitos adicionales deben usar la menor potencia posible (la idea general de usar el modo de suspensión profunda es hacer que el dispositivo funcione con las baterías durante mucho tiempo)
  2. ¿Sería posible usar varios interruptores para activar el dispositivo? (Luego podría ejecutar los conmutadores a diferentes pines GPIO y obtener el estado de los pines en el inicio para averiguar exactamente qué evento generó la señal de activación)

¡Gracias!

    
pregunta Bogd

3 respuestas

2

Usando tu idea básica, puedes hacer algo como esto (simplemente agregando una parte, el circuito en el cuadro de guiones simula lo que hay en tu placa de desarrollo):

simular este circuito : esquema creado usando CircuitLab

El MOSFET 2N7000 se usa para descargar el condensador de reinicio de encendido de 100 nF en su tarjeta.

La simulación muestra el encendido en t = 0 y luego el interruptor de restablecimiento presionado y mantenido en t = 100 ms.

Parece que podría ir fácilmente a resistencias de 10nF y 10M, e incluso menos en la capacitancia, pero tenga cuidado de la capacitancia de entrada del MOSFET si intenta ir muy bajo o intenta sustituir un tipo diferente de MOSFET (la mayoría de los cuales tienen carga de puerta mucho mayor).

    
respondido por el Spehro Pefhany
1

Una versión ligeramente modificada de su solución, como señaló Simon en el comentario, funcionaría.

La clave es que C1 debe ser mucho más grande que el condensador dentro de la placa (C2 aquí). La resistencia de pull-up debe reducirse en el mismo orden para mantener la misma constante de tiempo.

También de los comentarios veo un problema falso con el "doblador de voltaje", la tensión en el pin de reinicio se dividirá entre R1 y R3 a 1/10 orden, lo que significa que el pin de reinicio puede ir a un máximo de 0.36 V sobre V1 con un 36uA corriente máxima permitida.

R2 está ahí para evitar un pico actual a través de SWX, C1 y C2, pero si Wemos considera que los diseñadores consideran que no es necesario, puede omitirlo.

simular este circuito : esquema creado usando CircuitLab

Para un solo interruptor, no se necesitan el diodo y la resistencia 1M

El inconveniente de los interruptores múltiples es que tendrá que esperar a que todos los SW se abran constantemente durante un tiempo para asegurarse de que no pierda ningún dato, pero si permanecen abiertos, esta simple solución podría funcionar bien.

    
respondido por el Dorian
0

Basándonos en nuestra conversación y en tus comentarios, puedes echar un vistazo a esos esquemas (Descargo de responsabilidad: no es mi esquema).

ElcondensadorsecargaaVCChastaqueloomitautilizandoelinterruptor.Unavezqueseutilizaelinterruptor,descargaráelcondensadorcompletamente.Sideseaqueladescargaseamáslenta,puedeponerunaresistenciaenserieconelinterruptor.

Respectoalapregunta1:laúnicacorrientequesedesperdiciaráeslacorrientedefugaquepasaráatravésdelpuertodereinicioyatravésdelcondensador(corrientedefuga).Esossoninevitablesdesafortunadamente.

Respectoalapregunta2:Puedesagregarmuchosotrosinterruptoresenparaleloconelprimero.CadainterruptorpodráreiniciarelESP8266.Sinembargo,sideseaenrutarcadaconmutadoraunGPIO,necesitaráuntipodiferentedeconmutadoryconfiguración:

simular este circuito : esquema creado usando CircuitLab

R2 y R3 mantienen un estado de activación para su GPIO para garantizar que pueda diferenciar correctamente entre 0 y 1. Puede invertir el VCC y la conexión a tierra en ese circuito si desea lo contrario (ahora que lo pienso , ¡incluso podría ser mejor bajar y evitar la fuga de corriente!) Podría crear una lógica similar utilizando un interruptor de tiro doble dependiendo de lo que tenga a mano.

    
respondido por el Simon Marcoux

Lea otras preguntas en las etiquetas