Estoy tratando de generar un pulso de reinicio para activar un dispositivo ESP8266.
El ESP8266 admite una función de "sueño profundo", en la que consume muy poca energía. Sin embargo, la única forma de activarlo es restablecerlo (haciendo que el pin de reinicio esté bajo; el dispositivo se reiniciará tan pronto como el pin vuelva a estar alto).
Entonces, estoy tratando de 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 cierra el interruptor, aunque el interruptor puede permanecer cerrado durante muchos segundos o minutos después. Entonces necesito un circuito que genere un pulso de reinicio (bajo, luego alto después de varios milisegundos) cada vez que se cierre el interruptor.
Pensé para mis adentros: "¡No hay problema, eso debería ser fácil!" (sí, ¡soy así de novato! :)). Y construí este circuito, que funciona maravillosamente en el simulador...
Pero, por supuesto, la vida real no se ajusta a la simulación... Estoy usando una placa de desarrollo Wemos D1 Mini, que agrega un nuevo nivel de complejidad , que incluye una resistencia pull-up en RST y un capacitor entre RST y tierra. Entonces, por supuesto, este circuito simple ya no funciona :(
Mi pregunta es: ¿cómo puedo cambiar este circuito para que haga el trabajo? 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, y b) es un dispositivo de 5 V, por lo que podría ser más difícil que funcione con baterías.
Algunos desafíos adicionales:
¡Gracias!
Usando su idea básica, puede hacer algo como esto (simplemente agregando una parte, el circuito en el cuadro punteado simula lo que hay en su placa de desarrollo):
simular este circuito : esquema creado con CircuitLab
El MOSFET 2N7000 se utiliza para descargar el condensador de reinicio de encendido de 100 nF en su placa.
La simulación muestra el encendido en t = 0 y luego el interruptor de reinicio 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 con 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 tendrán mucho más alto carga de la puerta).
Funcionaría una versión ligeramente modificada de su solución como señaló Simon en el comentario.
La clave es que C1 debe ser mucho más grande que el capacitor dentro de la placa (C2 aquí). La resistencia pull-up debe reducirse en el mismo orden para mantener constante el tiempo.
Además, a partir de los comentarios, veo un problema falso con el "doblador de voltaje", el voltaje en el pin de reinicio se dividirá entre R1 y R3 en un orden de 1/10, lo que significa que el pin de reinicio puede ir como máximo a 0,36 V sobre V1 con una corriente máxima de 36 uA que está permitido.
R2 está ahí para evitar un pico de corriente a través de SWX, C1 y C2, pero si los diseñadores de Wemos consideraron que no es necesario, puede omitirlo.
simular este circuito : esquema creado con CircuitLab
Para un solo interruptor no se necesita el diodo ni la resistencia de 1M
El inconveniente de los conmutadores múltiples es que tendrá que esperar a que todo el software esté abierto de forma constante durante un tiempo para asegurarse de no perder ningún dato, pero si permanecen abiertos en su mayoría, esta solución simple podría funcionar bien.
Según nuestra conversación y sus comentarios, puede echar un vistazo a esos esquemas (Descargo de responsabilidad: no es mi esquema).
El capacitor se carga a VCC hasta que lo pasa por alto usando el interruptor. Una vez que se usa el interruptor, descargará el capacitor por completo. Si desea que la descarga sea más lenta, puede poner una resistencia en serie con el interruptor.
Con respecto a la pregunta 1: la única corriente que se desperdiciará es la corriente de fuga que pasará por el puerto de reinicio y por el capacitor (corriente de fuga). Esos son inevitables por desgracia.
Con respecto a la pregunta 2: puede agregar muchos otros interruptores en paralelo con el primero. Cada interruptor podrá restablecer el ESP8266. Sin embargo, si desea enrutar cada conmutador a un GPIO, necesitará un tipo diferente de conmutador y configuración:
simular este circuito : esquema creado con CircuitLab
R2 y R3 mantienen un estado de activación en su GPIO para garantizar que pueda diferenciar correctamente entre un 0 y un 1. Puede invertir VCC y conectar a tierra en ese subcircuito si desea lo contrario (ahora que lo pienso, podría ¡incluso sería mejor tirar hacia abajo y evitar la fuga de corriente!) Podría crear una lógica similar usando un interruptor de doble tiro dependiendo de lo que tenga en su mano.
Hice algunas modificaciones en el primer circuito para que funcione con la señal de RESET del ESP01.
La señal de RESET se conecta al nodo donde se conecta el Voltimetes (entre la resistencia de 100 ohmios y el diodo. La resistencia de 3,3k hay que quitarla, la puse para simular la impedancia interna del pin RESET. Espero que te funcione
Simón Marcoux
Bodd
Bodd