¿Cómo cambiar la energía del microcontrolador por botón?

13

Tengo un dispositivo microcontrolador con batería. Actualmente, apago y enciendo el interruptor de encendido / apagado. Quiero alternar la energía con un solo botón con una modificación mínima del esquema (y probablemente del programa del microcontrolador) y sin consumo cuando el dispositivo está apagado. ¿Cómo puedo hacerlo?

AÑADIDO . Sé el siguiente truco:

ingrese la descripción de la imagen aquí

Aquí, al inicio, el microcontrolador establece PB3 en alto y, por lo tanto, mantiene la alimentación del dispositivo. Pero esta no es una solución para mi problema, porque también necesito apagar el dispositivo presionando S1.

AÑADIDO . ¿Puedo excluir VT2 del circuito (es decir, la base de la unidad de microcontrolador de VT1 directamente)?


fuente
¿Sería una solución aceptable apretar los botones?
AndrejaKo
@AndrejaKo: No.
¡Buena suerte, entonces! Una forma que veo sería cargar un condensador mientras se presiona el botón y luego intentar activar algo con él, como un MOSFET, pero eso dependería del momento en que se presione el botón.
AndrejaKo
@tcrosley No es un duplicado, la pregunta que hace referencia no requiere que se active la alimentación cuando se presiona el botón, solo requiere que se encienda permitiendo que el microcontrolador se apague solo.
Bruno Ferreira
@BrunoFerreira ok, de acuerdo - eliminé mi comentario anterior. Agregué la línea al micro en esta respuesta, pero no incluí el zener como lo hiciste en tu respuesta, que es una buena adición.
tcrosley

Respuestas:

6

Según el circuito que proporcione, puede agregar un diodo en serie justo después del interruptor (S1) (cátodo conectado al interruptor) y puede usar una entrada para detectar si el interruptor se presionó nuevamente, si es así, apague PB3.
Modificación requerida

El diodo zener protege la entrada PIC del voltaje que proviene de la fuente de alimentación.

Bruno Ferreira
fuente
¿Cuál es el papel del diodo?
m.Alin
@ m.Alin El diodo aquí permite que el microcontrolador detecte cuando se suelta el interruptor. Si no tuviéramos el diodo, cuando VT1 comience a conducir, siempre tendremos un nivel alto en la entrada del microcontrolador.
Bruno Ferreira
8

¿Qué tan mal necesitas estar? Muchos microcontroladores modernos tienen una corriente de reposo muy por debajo de la corriente de autodescarga de incluso baterías pequeñas. Puede hacer que el botón simplemente accione el pin de E / S del micro, que luego alterna entre el modo de suspensión y el modo activo cada vez que se presiona el botón. Se necesitará un poco de eliminación de rebotes, pero todo eso también se puede hacer en el firmware.

Este tipo de método de encendido / apagado se está volviendo bastante común hoy en día. Cuando solo se necesita un µA, un microcontrolador no necesita estar realmente apagado, solo dormido, lo que puede hacer bajo su propio control. La línea del botón debe conectarse a algo que pueda hacer que el micro se despierte del sueño, pero casi todos los micro tienen al menos uno de ellos, generalmente varios.

Olin Lathrop
fuente
1
De acuerdo, muchos de mis diseños hoy en día ni siquiera tienen un botón de encendido / apagado, solo se despiertan presionando un botón.
Oli Glaser
Mi dispositivo contiene también LCD y otros periféricos. Por lo tanto, debo apagarlo también.
44
@usuario: Eso no significa que tengas que apagar el micro, solo la otra lógica. Con el micro haciendo el pensamiento de encendido / apagado, el micro puede controlar la potencia de los otros dispositivos para que estén apagados cuando el micro está en reposo. Esto significa que tiene una salida digital deliberada que puede ser cualquier polaridad que sea conveniente para encender y apagar las cosas, y no necesita implementar alternar en hardware analógico.
Olin Lathrop
Aunque muchos microcontroladores tienen corrientes de sueño muy bajas, los reguladores de calidad cuestan más que los malos. Un regulador que usa 250uA adicionales (o incluso 2.5mA) puede estar bien si solo tiene que estar activo cuando un dispositivo está en uso, pero sería totalmente inaceptable si tuviera que estar activo incluso cuando un dispositivo estaba "apagado" . Un producto que diseñé hace algunos años ni siquiera usaba un regulador; en su lugar, usó tres transistores y unas siete resistencias para proporcionar un suministro nominal de 5 voltios con apagado controlado por el procesador. Según los estándares del "regulador", su precisión de voltaje era realmente horrible ...
supercat
1
@OlinLathrop: dos 2N3094 y un 2N3906 cuestan menos de $ 0.07. Incluso si uno calcula que diez componentes cuestan un centavo cada uno para ensamblar, eso ahorra un centavo por unidad; si se fabrican 100,000 unidades, eso es $ 10,000. Si un producto no va a tener ese tipo de volumen, puede que no valga la pena intentar exprimir esos $ 0,10; si los reguladores de hoy estuvieran disponibles cuando diseñé la cosa, y si no supiera de antemano qué tan bien se vendería, probablemente habría usado un regulador con control de reserva, pero mi circuito funciona y es más barato que cualquier otra cosa; No hay razón para no seguir usándolo.
supercat
3

EDITAR: en la reflexión, el circuito a continuación (que dejaré como referencia) probablemente sea el más adecuado para su uso en circuitos sin micro. Como se mencionó en las otras respuestas, a menos que realmente no pueda pagar los pocos uA, realmente no tiene sentido no usar el micro para controlar la palanca de encendido, ya que usa menos componentes y se puede controlar con precisión.
La versión más simple puede ser algo así como una entrada IOC (interrupción en el cambio) con pull up, con botón a tierra. El micro tiene energía aplicada todo el tiempo y controla un MOSFET de canal P (con pullup desde la puerta a la fuente) para el resto del circuito. Cuando duerme, deja que la puerta flote para apagar el circuito.

Circuito de referencia:

Interruptor de palanca

Al principio, el P-MOSFET está apagado, por lo que no hay corriente base en Q2, que también está apagado. Q1 está apagado, por lo que Q1c está a 5V. El circuito es estático.

Cuando se presiona S1 (ignore los nodos + y -, están allí para propósitos de activación de SPICE), los 5V en Q1c se conectan a la base Q2, encendiéndolo. Esto tira de la puerta P-MOSFET a tierra, encendiéndola también.
R4 ahora ve 5V y cuando se libera S1, proporciona a la base de Q2s la corriente necesaria para mantenerlo abierto (y, por lo tanto, el MOSFET también está encendido) Q1 también se enciende cuando la corriente a través de R2 carga C1 a ~ 600mV, en ese punto Q1c es <200mV (es decir, Q1 está encendido)
El circuito ahora está estático nuevamente.

Cuando se presiona S1 nuevamente, Q1 hunde la corriente de R4 (que mantiene Q2 encendido) apagando Q2. R1 tira de la base MOSFET hasta 5V y la apaga nuevamente.

Aquí está la simulación (V (push) alto representa cuando se presiona el botón):

ToggleSwitchSim

También podemos ver después de apagar las cabezas de corriente a cero (cuando C1 se descarga y Q1 se apaga) para que el circuito no consuma energía en el estado apagado (el cursor para I (V1) está en 19.86s y mide 329nA):

ToggleSwitchPower

La idea original del circuito no es mía, proviene de Dave Jones en EEVblog .

Oli Glaser
fuente
1

Como sugirió Bruno Ferreira, la forma más fácil de permitir que el botón actúe como un interruptor de "apagado" es cambiar su circuito es permitir que el procesador sepa cuándo se presiona el botón. Creo que uno puede usar resistencias razonablemente bien para proteger la entrada del procesador contra voltajes en exceso de VDD sin necesidad de un Zener para eso.

Aquí hay un bosquejo del diseño de un circuito que podría usar. La mitad derecha representa el comportamiento del procesador, y utilicé una combinación de un transistor, Zener y una resistencia para sustituir a un regulador. La salida del procesador se representa usando un interruptor analógico su VDD, en lugar de una puerta, ya que las puertas en este simulador siempre generan una salida de + 5V.

Un aspecto clave del circuito, que puede causar problemas si se ignora, es que está diseñado para que el procesador no pueda encender el circuito a menos que su VDD sea de al menos ~ 3.6 voltios; También he manipulado el simulador para que el procesador siempre intente encender su salida siempre que su VDD esté por debajo de 3,5 voltios. He visto muchos diseños que suponen que los procesadores no intentarán generar una lógica alta a medida que se va su potencia. Esa suposición puede funcionar bien con algunos lotes de chips utilizados en las pruebas, pero luego falla con otros lotes de chips utilizados en la producción a gran escala. El comportamiento de la mayoría de los procesadores no se especifica durante condiciones de baja tensión; se debe diseñar un buen diseño para que el comportamiento de un procesador en tales condiciones no importe (nota leve: probablemente sea seguro asumir que un procesador que no es t diseñado explícitamente para generar voltajes que son más altos que cualquier voltaje aplicado no comenzará mágicamente a hacerlo; No creo que haya una especificación explícita para eso, pero creo que en la mayoría de los casos se puede inferir de manera segura).

Super gato
fuente