Botón de encendido/apagado suave con enclavamiento

¿Sería razonable implementar un botón suave de ENCENDIDO/APAGADO como este?

ingrese la descripción de la imagen aquí

Mis requisitos de diseño en resumen:

  • Habilite la alimentación del sistema desde una batería LiPo de una sola celda inmediatamente después de presionar el botón de ENCENDIDO/APAGADO.
  • La alimentación del sistema se controla a través de un pin de habilitación activo-alto de un convertidor CC/CC de modo de conmutación, y no se conmuta directamente.
  • El sistema debe mantenerse encendido, también durante posibles reinicios del microcontrolador (MCU).
  • Las pulsaciones posteriores de los botones no deberían tener ningún efecto en el dispositivo en funcionamiento.
  • Los eventos de los botones deben ser legibles por la MCU.
  • La MCU puede apagar activamente el sistema, después de presionar el botón de encendido durante X segundos.
  • Bajo uso de energía, e idealmente casi sin uso de energía en estado APAGADO.
  • Sin circuitos integrados especializados (e idealmente sin MOSFET discretos, preferiblemente una solución que solo use lógica digital simple).

Mi viejo intento se veía así:

ingrese la descripción de la imagen aquí

Para mi sorpresa funciona bastante bien, pero tuve dos problemas con él:

  1. El sistema se apaga solo cuando la MCU se reinicia automáticamente, es decir, cuando carga un nuevo programa en la RAM desde una tarjeta SD (se reinició SYS_POWER GPIO).
  2. Es común mantener presionado el botón ON/OFF durante un tiempo hasta que el dispositivo se apague, pero eso no es posible con esta "compuerta OR" basada en diodos. El botón debe soltarse para que se produzca el apagado...

Actualmente estoy tratando de encontrar una solución más simple y esbocé la idea anterior en Logisim . La clave está en utilizar un elemento de almacenamiento como una chancleta.

(Un problema que veo con esa solución es que el flip-flop necesitaría ser alimentado directamente por la batería. - (El flip-flop posiblemente podría reemplazarse por un pestillo SR, pero podrían ocurrir estados no válidos... podría reemplazarse con tres diodos, una entrada adicional que conecta el botón de encendido directamente al pin de habilitación de alimentación del sistema. Luego, el flip-flop tendría que reaccionar al borde descendente y encenderse después de que se encienda el sistema. Pero eso parece peligroso. y demasiado complicado...))

Por cierto, actualmente estoy tratando de aprender más sobre electrónica y no soy un experto en absoluto. - Este es un proyecto de microcontrolador de nivel de aficionado, diseñado en KiCAD.

" e idealmente sin MOSFET discretos " y " Bajo uso de energía, e idealmente casi sin uso de energía en estado APAGADO ". Realmente no van de la mano. Puede obtener un uso de energía muy bajo con MOSFET discretos. - Si yo fuera tú, ampliaría mis soluciones " ideales ".
¿Qué pasa si todas las fuentes de energía son <3V como cargador o Bat?
el rebote de contacto podría ser un problema.
¡Muchas gracias por los consejos! Harry: Estoy de acuerdo... la razón real por la que traté de evitarlos es porque son difíciles de usar, ¿verdad? :P Voy a buscar una solución más simple hoy, que usa diodos y MOSFET discretos, para compararla con el de arriba... Me sigue interesando el de arriba, ya que es tan limpio y fácil de entender... Pero, ¿tiene algún sentido? Nunca he visto un botón tan suave todavía. Tony: Creo que ya no encendería y la batería se agotaría lentamente, hasta que se conecte un cargador, lo que estaría bien, supongo. Jasen: Será necesario eliminar el rebote, sí.

Respuestas (3)

Esta solución es ligeramente similar a Cristobols pero tal vez con un estado de inicio mejor definido y menos tensión en el pin MCU. Este:

esquemático

simular este circuito : esquema creado con CircuitLab

R10, R9 mantiene M1 apagado cuando se aplica energía. Cuando se empuja SW1, la compuerta M1 está conectada a tierra por Q1 y M1 comienza a conducir a la carga. Q1 también activa Q4 para que se enganchen. C1 hace un pulso corto a la base Q1, por lo que si el usuario mantiene presionado el botón, Q1 todavía puede ser apagado por Q3. La MCU puede decidir desconectar la alimentación enviando un pulso en Q3. R6 probablemente se pueda ajustar para mitigar los efectos de alta impedancia/pullups si la MCU se reinicia.

La idea aquí es no bloquear la salida de M1, ya que probablemente tenga un poco de capacitancia conectada. Un ejemplo: si la base de Q1 se conectó con una resistencia a M1 ilustrada por el cuadro rojo R12, Q3 tendría que descargar los capacitores del sistema a través de R12 para apagar M1.

Editar: me acabo de dar cuenta de que en realidad está controlando el pin EN de un regulador y no cambiando la ruta de carga directamente. Pero creo que el circuito sugerido también funcionaría en un pin de habilitación.

¡Muchas gracias por la respuesta detallada! Es realmente agradable y también funciona para controlar un pin EN de un regulador, creo. - El único problema que todavía tengo (también con el otro enfoque basado en flip-flop) es que la MCU no puede apagar el regulador mientras el usuario mantiene presionado el botón. La MCU en sí está alimentada por el convertidor CC/CC, que se apagará después de subir el GPIO, antes de soltar el botón... para que Q3 se apague y el dispositivo se vuelva a encender. Para entenderlo más fácilmente, también he simulado el circuito en el circuito JS de Falstad: bit.ly/2tE646R
Por cierto: el mismo problema ocurrió mientras intentaba hacer que otra solución basada en flip-flop funcionara. Deshabilitar la alimentación del sistema, mientras se presiona el botón ON/OFF todavía no es posible, porque se enciende justo después de deshabilitarlo...; también probado en el circuito JS de Falstad: bit.ly/2tDYKbm
Una idea que surgió para resolver este problema sería agregar un capacitor, que se carga con el riel de alimentación del sistema (3.3V). Un elemento de conmutación (MOSFET o puerta de transmisión (?) que normalmente está cerrada) en serie con el botón desactivaría la entrada del botón después de que suba el riel de 3.3 V. La MCU aún podría leer el botón, deshabilitar el regulador, para que el capacitor se descargue... - Problemas menores aquí: 1) El botón se desactivará después de apagarse por un tiempo... 2) El sistema vuelve a aparecer después de mantener presionado hacia abajo durante demasiado tiempo. - Circuito JS: bit.ly/2yTfpwS ¿Tiene eso algún sentido?
Agregué una "cosa de pulso" a la unidad Q1, por lo que no importa si se mantiene presionado el botón.
Esto es muy limpio. - También lo probé en el Circuito JS: bit.ly/2tTVisO , y moví el diodo D1, de modo que el voltaje base de Q1 no pueda caer demasiado después de soltar el botón (¿pulso inverso a través de C1?). Y también intenté reemplazar el MOSFET M1 con un segundo transistor PNP (ya que es solo para conmutación de señal), y agregué una resistencia a su base para reducir el número de componentes (1x NPN dual, 1x PNP dual y un par de partes pasivas). - ¿Crees que esta modificación tiene sentido? - Estaría muy feliz con esta o una solución similar, si funciona de manera confiable en la práctica.
Suena bien. :) Puedo ejecutarlo en LTSpice más tarde.
¡Lindo! Su circuito en realidad parece resolver todos mis problemas iniciales y usa solo componentes simples discretos, hermosos. - Una pregunta rápida: ¿Por qué usaste el diodo D1 exactamente ahí? Para "asegurar" la base de Q1, ¿una gota de diodo sobre el suelo? ¿Y es realmente necesario? - Solo quería preguntar, porque creo que he confundido algo: el diodo de bloqueo que he agregado a mi esquema JS de circuito anterior no es necesario, cuando se usa un botón pulsador, ya que abre el circuito, y un el pulso inverso no puede ocurrir (R13 es una resistencia grande), Q3 sigue conduciendo.
Probablemente no sea necesario. Es un "copiar y pegar tal vez algo bueno" de una de mis respuestas anteriores que fue impulsada por un IC, no por un interruptor.
Bueno, gracias. - Para simplificar aún más el circuito, Q3, R6, (R8) también podrían eliminarse, ya que un pin de salida push-pull GPIO (tolerante a 5 V) también podría absorber la corriente directamente y estaría en modo de entrada de forma predeterminada (alto). impedancia). Pero dado que el comportamiento puede variar entre diferentes tipos de MCU, creo que no es una buena idea hacerlo. (bosquejo del circuito JS: bit.ly/2Kj8fay )
Exactamente, tuve problemas en los que el estado del pin de alta impedancia de la MCU estaba cerca de 50k.
(FYI: hoy, construí su circuito como este bit.ly/2m6lX1W en una placa de prueba y funciona perfectamente, por lo que puedo decir). - ¡Gracias de nuevo! @Dejvid_no1

Los MOSFET no son tan complicados, especialmente en aplicaciones de encendido/apagado. Aquí hay un enfoque:

esquemático

simular este circuito : esquema creado con CircuitLab

¡Gracias por el aporte! - ¿Tendría sentido agregar una resistencia pull-up a la puerta de M1 para evitar que flote? También hice un boceto JS del circuito de Falstad de esto, solo como un ejercicio =) bit.ly/2Kep46i
Tienes razón, lo haría más fiable. Solo estaba tratando de mostrar lo básico; Es posible que estos componentes exactos tampoco sean ideales para su aplicación. Por ejemplo, los 100 Ω probablemente podrían ser varios K Ω .

Conectar un botón pulsador directamente a la entrada CLK de un flip flop hará que el flop se mueva varias veces debido al rebote del interruptor.

Una segunda cosa es que las entradas a un flip flop, la entrada D en este caso, requieren un tiempo de configuración para ser estables en un nivel lógico antes del flanco ascendente de CLK. Como tal, no funcionará vincular las entradas CLK y D juntas.

Un buen enfoque de diseño para este tipo de conmutación es usar el botón pulsador para encender y luego dejar que la MCU pueda leer el estado del botón y dejar que el software de la MCU realice todo el control para apagar la unidad. Si usa un P-FET para encender la alimentación, entonces en el estado apagado no es necesario que haya corriente de la batería, excepto cualquier corriente de fuga de nivel muy bajo cuando el P-FET está polarizado en el estado APAGADO.

Se requieren dos señales de la MCU, una para monitorear el estado del botón y una segunda para mantener encendido o apagado el suministro eléctrico. Dependiendo de cómo elija construir el circuito asociado alrededor del P-FET, a veces puede ser más simple agregar una tercera señal de MCU a la mezcla y separar la función de espera del control de apagado. El circuito para este tipo de cosas no requiere chips lógicos. Además, la MCU debe despertarse rápidamente y una de las primeras cosas que debe hacer el software de la MCU es afirmar el control de retención.

Gracias por señalar los problemas con el flip-flop y los consejos generales. ¡Esto ayuda mucho!