¿Qué se puede hacer con este circuito para mejorarlo/simplificarlo?
Por ejemplo, ¿he hecho algo que es una mala práctica, o algo que se sabe que fallará antes de que hayan pasado cinco años (digo cinco porque creo que es una expectativa de vida normal para los aparatos electrónicos del hogar), o debería/podría usar otras partes que serían más adecuadas.
Nota:
creé esta pregunta para centrarme principalmente en el circuito que creé. Mis pensamientos iniciales fueron hacer una pregunta más amplia, pero veo (y experimenté) que puede ser difícil. Consulte mi otra pregunta (ahora editada): ¿ Cómo se llama este circuito?
Nota 2:
este es un proyecto de código abierto que quiero compartir con la comunidad, no pretende ser un estándar de la industria, pero tampoco quiero hacer algo que se rompa en un par de meses. Está destinado a ser una puerta/ventana/buzón/cualquier sensor de apertura y cierre sobre el que pueda tener un control total.
Creé un prototipo de trabajo que hice fabricar y probar trabajando con mis requisitos. Más explicación más adelante.
Ref: https://easyeda.com/jakibsgaard/low-powered-rising-and-falling-power-on-circuit
Requisitos:
Acerca de mi circuito y experiencias
Primero algo de crédito:
Por el circuito de enganche Rui Santos en los tutoriales de randomnerd .
Para la idea sobre el circuito detector de bordes, la respuesta de Russel McMahon .
Cómo funciona:
suponiendo que el interruptor de láminas conectado en P1 está abierto y se está cerrando. Luego, VCC irá directamente a A en el XOR y dado que C1 se está cargando lentamente (debido a R1), B todavía está por debajo del umbral, por lo que la salida Y en el XOR ahora es alta. Esto envía una señal a Q2 que, a su vez, envía una señal a Q3, lo que hace que la compuerta en Q1 se cierre y se envíe energía al esp8266.
El esp8266 se alimenta únicamente debido a la señal del XOR durante un tiempo (determinado por C1, R1 y R3), este tiempo es lo suficientemente largo para que el esp8266 envíe una señal alta al pin 14 (GPIO5) hacia Q3 que luego mantiene el flujo de energía tanto tiempo como sea necesario.
Cuando C1 está lo suficientemente cargado, A y B en el XOR están altos y Q2 está apagado y el esp8266 mantiene el poder solo.
El esp8266 también verifica si la entrada es alta o baja en el pin 6 (GPIO12), esto es para informar si el interruptor está abierto o cerrado.
Luego, cuando el esp8266 termina, deja de enviar la señal alta y el circuito de enganche se apaga.
Luego, cuando el interruptor de lengüeta se cierra y se abre, A en el XOR es bajo, y B sigue siendo alto, ya que C1 todavía mantiene un voltaje por encima del umbral. Esto hace que Y en el XOR sea alto y comience el mismo proceso con el circuito de enganche. D1 está evitando que la corriente regrese al circuito, pero existe alguna fuga.
Cuando C1 se agota lo suficiente, B también es bajo, por lo que la salida Y en el XOR ahora es baja.
En el esp8266, el pin 3 (EN) debe estar alto y el pin 10 (GPIO15) debe estar bajo para que el esp8266 arranque correctamente. El pin 12 (GPIO0) se usa cuando parpadea y debe mantenerse bajo al hacerlo. Pero puede estar flotando cuando no está siendo flasheado. El pin 11 (GPIO2) también puede estar flotando para estar en estado alto.
El encabezado de programación está ahí para facilitar la programación por primera vez. Luego es mejor usar OTA (Over The Air update). También alimenta el esp8266 directamente.
Energía de la batería:
He probado este circuito con éxito en el rango de 2,5 a 4,3 V CC. Por supuesto, esto no se recomienda ya que el rango de voltaje del esp8266 es de 2.5 a 3.6 VDC. Pero desde mi experiencia y la de otros, esto está bien, especialmente porque solo se enciende unas pocas veces al día.
Tampoco necesito condensadores para la alimentación ya que la batería lipo es la fuente directa.
Consumo de energía:
después de la prueba, descubrí que la corriente de reposo en estado cerrado es ~3uA y en estado abierto ~0.40uA.
Entonces, si se activa dos veces al día, usa 3 segundos para arrancar y hace lo que debe hacer a ~80 mA, durará más de 2 años con una batería de 200 mAh (15 % de capacidad reducida en los cálculos).
Circuito latching:
he cambiado algunos componentes por unos más pequeños ya que quería que jlcpcb montara el SMD. Entonces solo componentes básicos y lo más pequeños posible ya que el consumo de energía es muy bajo en la parte "lógica" del circuito.
"Problemas" actuales que puedo cambiar pero que no he probado ni encontrado una solución funcional en la vida real :
¿Ha considerado un 74HC74 con su señal conectada a la entrada del reloj (quizás a través de un inversor si es necesario), la línea de datos alta y un GPIO de su MCU conectado a la línea de reinicio para que pueda cancelar la solicitud una vez que la MCU se haya encendido? ?
¿Ha considerado simplemente mantener el ESP8266 en modo de suspensión profunda y hacer que el interruptor de lengüeta haga que se despierte?
Aquí hay un proyecto de alarma de puerta que usa un ESP8266 que hace eso:
https://github.com/chaeplin/esp8266_and_arduino/tree/master/_48-door-alarm-deepsleep
Más discusión aquí: https://github.com/esp8266/Arduino/issues/1488#issuecomment-205113504
John-Arvid
neodimios
John-Arvid
Martín