Múltiples botones conectados para restablecer el pin

1

Estoy creando un dispositivo alimentado por batería basado en ESP8266 . Hay pocos botones (digamos 4 en este momento). Después de presionar cualquiera de ellos, ESP debe realizar alguna acción e ir al modo de suspensión profunda. La siguiente pulsación de cualquiera de estos botones debería activar el ESP para que pueda realizar otra acción y volver al modo de suspensión profunda. Entonces, lo que necesito es poner la línea RST a bajo durante un tiempo (alrededor de 100us) en cualquier botón, pero mantener el GPIO bajo mientras se presione el botón.

Vine con la siguiente idea:

simular este circuito : esquema creado usando CircuitLab

Lamentablemente no funciona muy bien. Hay dos problemas: uno es que no es confiable: por una razón desconocida, el voltaje en RST cae lo suficientemente bajo solo cuando presiono SW1, también solía funcionar para otros interruptores pero se detuvo después de un tiempo (el osciloscopio muestra que cae a alrededor de 2.0V). El otro problema es que hay un pico de voltaje en la línea RST cuando suelto el botón; va a aproximadamente 6.6V porque el capacitor se está descargando. Tal vez estas puntas dañaron otros condensadores (electrolíticos) porque probé mi software principalmente utilizando SW1?

¿Tiene una mejor idea de cómo restablecer ESP con varios botones y aún puede detectar cuál fue? Me gustaría evitar cualquier cosa que consuma energía cuando no se usa o tomaría mucho espacio de PCB (es muy limitado).

    
pregunta Patryk Ściborek

2 respuestas

3

Intente conectar el circuito de su interruptor como se muestra a continuación. Este no es el circuito ideal ya que el tiempo de bajo nivel de RST es similar al circuito original, pero puede ser lo suficientemente bueno para su aplicación. Un circuito mejor introduciría un comparador de bajo número de pines para dar un impulso de nivel lógico completo al pin RST.

UselosdiodosBAT54AenelpaqueteSOT-23parareducirelconteodepaquetes(2diodosporpaquete).Seleccionelostamañosdelaresistenciayelvalordelcondensadorparaproporcionarlasincronizaciónadecuada.Estecircuitodebesersustancialmentemáspequeñoquetodosloscondensadoresde100uFquetieneahora.TambiénagregueeldiodoquesemuestraenlapartesuperiorderechaparasujetarcualquiertensióndeempujeaunacaídadediodoSchottkysobreelrielde3.3V.

Elmejortipodecircuitoseguiríaundiseñomáscomoelquesemuestraacontinuación.EstoledaráunbuenpulsoRSTlimpioalmomentodepresionarelinterruptor.Agregueinterruptoresadicionalesdelamismamaneraquesemuestraarriba.

Tengaencuentaqueestonotieneencuentaelrebotedelinterruptor.SitieneuncambiodeconmutadorynodeseaqueserepitanlospulsosderestablecimientorápidoalaMCU,serequierentrabajosdediseñoadicionales.

    
respondido por el Michael Karas
0

Al agregar 1 capacitor en paralelo con cada uno de los 4 interruptores anteriores podría ayudar a uC a identificar qué swich se presionó, al mantener el último estado "OFF" justo después de que el botón se volviera a sellar por un tiempo suficiente para permitirle a ESP8266 leer la entrada que tenía despertar sus I / Os. No es necesario decir que el RC de los conmutadores debe ser mayor que el formado por la constante de tiempo de reinicio del RC.

    
respondido por el andre_teprom

Lea otras preguntas en las etiquetas