Convertir el pulso 2s en pulso corto para despertar ESP8266

3

Tengo un ESP8266 que hace algo y luego se va a dormir.

También tengo un sensor PIR AM312 que activa el ESP cuando está activado. El PIR genera un pulso largo de 2 segundos cuando se activa.

El ESP se despierta cuando el pin RST baja. Utilizo la salida PIR para conducir un transistor para bajar el pin RST.

Esto funciona bien, el problema es que el ESP solo se despierta una vez que finaliza el pulso de 2 segundos, y este lento despertar retrasa la respuesta del ESP. IOW: el ESP necesita un pulso negativo corto para despertarse, pero solo se despierta cuando el pin RST vuelve a subir. Mientras esté bajo, no se despertará.

¿Cómo puedo convertir el pulso 2s del PIR en un pulso corto, para activar el transistor y despertar el ESP más rápido?

Esta es una aplicación de bajo consumo de energía impulsada por batería (por lo tanto, está inactiva), así que espero que exista una solución simple de baja tecnología para este problema que no afecte mi presupuesto de energía.

El LED que se muestra se ilumina como estado para mostrar cuando el ESP está despierto.

El transistor es un 2N2222a.

La resistencia de 47 k entre el riel de alimentación y RST mantiene el pin RST alto durante el funcionamiento normal.

    
pregunta codemonkey

3 respuestas

2

Aquí está el esquema que mencioné en los comentarios:

simular este circuito : esquema creado usando CircuitLab

La idea principal es que al arrancar rápidamente en \ $ C_1 \ $ también se tira en el otro lado de \ $ C_1 \ $ (si \ $ C_1 \ $ tiene \ $ 0 \: \ textrm {V} \ $ across luego, arrastrar hacia arriba en el lado izquierdo significa que el lado derecho de \ $ C_1 \ $ también estará en el mismo voltaje ... por un momento.) Esto significa que la base de \ $ Q_1 \ $ se levanta de manera similar y la corriente de base activa inmediatamente \ $ Q_1 \ $ (mientras que al mismo tiempo que carga \ $ C_1 \ $ para que su lado derecho se mueva hacia el suelo). \ $ R_1 \ $ también ayuda a cargar \ $ C_1 \ $ y junto con el la corriente base de \ $ Q_1 \ $ cobra rápidamente \ $ C_1 \ $ hasta que no haya más corriente base para que \ $ Q_1 \ $ permanezca activo. La duración exacta aquí no es terriblemente importante, siempre que sea "lo suficientemente larga" para que el recolector de \ $ Q_1 \ $ sea derribado y provoque el pulso RST de baja marcha que se necesita.

Una vez que \ $ C_1 \ $ ha desarrollado un cargo y \ $ R_1 \ $ ha ayudado a completar ese trabajo, \ $ Q_1 \ $ debe apagarse por completo y la línea RST vuelve a ser alta, otra vez. Permanecerá allí hasta que haya otra ventaja a la izquierda de \ $ C_1 \ $.

En algún momento posterior en el tiempo (\ $ \ ge 2 \: \ textrm {s} \ $), el lado izquierdo de \ $ C_1 \ $ regresa al suelo. Pero \ $ C_1 \ $ se cobra ([+] a la izquierda, [-] a la derecha) y, por lo tanto, el desplazamiento hacia abajo en el lado izquierdo hace que el lado derecho tenga un voltaje bastante negativo (debajo de la tierra). Aquí es donde \ $ D_1 \ $ viene al rescate, dando a \ $ C_1 \ $ una forma de (en su mayoría) de descarga; y con bastante rapidez. El resto del cargo puede eliminarse mediante \ $ R_1 \ $ para restablecer completamente y eliminar el voltaje en \ $ C_1 \ $, preparándolo para otro evento.

El ancho del pulso debe ser del orden de cientos de microsegundos; creo que es lo suficientemente largo como para hacer el trabajo.

Puede ser conveniente agregar una resistencia de serie a \ $ C_1 \ $, como en:

simular este circuito

Aproximadamente \ $ 1 \: \ textrm {k} \ Omega \ $ debería estar bien. Un poco menos, si quieres. Esto limitará la corriente de base a \ $ Q_1 \ $ y disminuirá la tasa de carga, ampliando el pulso y ayudando a que el comportamiento se maneje mejor que antes.

Hay otras formas que son técnicamente superiores. Suponiendo que la salida del PIR deba ser "configurada", su salida podría alimentarse a un circuito de activación Schmitt, seguido de un temporizador de disparo (como a 74LS121 , por ejemplo.) O, con una salida lo suficientemente limpia del PIR (probablemente aquí), solo el 74LS121 sería suficiente. Se pueden configurar para que se activen en el flanco ascendente o descendente de su entrada (A vs B) y la sincronización de su salida se puede ajustar utilizando un par de temporización RC. También puedes elegir el sentido de la salida. Así que son bastante buenos para algo como esto.

Pero el circuito anterior podría funcionar bien para ti. Es barato y sospecho que ya tienes las piezas a mano. Así que eso es bueno, si funciona.

    
respondido por el jonk
1

Por supuesto, podría despertarse de la suspensión profunda basándose en el reloj RTC en lugar de reiniciar. Ajuste el reloj para que diga 100 ms y pruebe la salida del detector de movimiento cuando despierte. Esto daría una operación de potencia razonablemente baja y no necesita ningún componente adicional.

También puede usar Light-sleep y un cambio de pin GPIO para activar la MCU, pero esto tendrá un nivel base más alto de corriente de sueño de aproximadamente 900 uA.

Consultela documentación de suspensión y aquí para realizar cálculos.

    
respondido por el Jack Creasey
0

Agregue una resistencia de 47 K del colector 2N2222 a Vcc. Reemplace la resistencia de la serie de 100 ohmios con un capacitor de la serie 0.1 uF.

Esto diferenciará el borde anterior del pulso largo en algo que todavía es negativo, pero ahora su borde posterior se producirá en solo unos 5 milisegundos. Ajuste los valores de la resistencia de 47 K existente y el nuevo condensador de 0.1 uF para otros anchos de pulso.

La próxima vez, considere publicar un esquema real, con un designador de referencia único para cada componente. Esto evita malentendidos sobre qué componentes se están discutiendo.

    
respondido por el AnalogKid

Lea otras preguntas en las etiquetas