31 votos

Formas inteligentes para detectar un botón (menos consumo de la energía)

Durante una reunión para un proyecto en particular me pidió una reflexión sobre la manera de detectar una pulsación sobre un botón con un MCU. La detección debe consumir la menor cantidad de energía posible. En la primera vista, pensé que el típico circuito con un pull-up o pull-down :

schematic

simular este circuito – Esquema creado mediante CircuitLab

No me cuenta un poco de anti-rebote aquí características, como que está más allá de esta cuestión del ámbito de aplicación. En cualquier caso, cuando el botón es presionado, el total del valor de la corriente que fluye depende del valor de la resistencia. Para minimizar (el actual), podría aumentar el valor de la resistencia, pero no tanto, ya que, si estoy en lo correcto, depende también de la clavija de entrada de fugas de valor. Además, una gran resistencia se recupera lentamente.

Mi pregunta es la siguiente : ¿cuáles son las formas inteligentes para detectar una pulsación de botón que no consumen energía (típicamente por un alto consumo de energía de la aplicación)? Hay métodos que son apenas consumen energía cuando se pulsa el botón?

30voto

TonyM Puntos 41

Una baja corriente método que he utilizado una vez que se a conectado un conmutador entre dos microcontroladores I/O pins.

Uno de e/S se configuran como una salida (SWO). El segundo se ha configurado como una entrada (SWI) con su programable interna de pull-up activado.

El estado del interruptor se tomaron muestras con poca frecuencia (cada 10 ms) por un programa de rutina de interrupción. La lectura de la secuencia era: unidad de SWO baja, leer SWI, de la unidad de SWO alta.

Esto significaba que una presionado el interruptor sólo atrajo la SWI pull-down actual a través de la misma y SWO por menos de 1 us durante la exploración, mientras que un sin prensar interruptor no atrajo actual. Este consumo de corriente para <1 cada 10 ms como resultado una pequeña promedio de consumo de corriente.

25voto

chharvey Puntos 121

Un SPDT (Single Pole Ddogvble Throw) botón sería su ultra eficiente botón.

enter image description here

Fuente: http://www.ni.com/white-paper/3960/en/

En su caso, la 1P iría a la MCU, el 1T a VCC, el 2T a GND.

11voto

Callum Rogers Puntos 6769

Uno de los métodos que he utilizado tiene la ventaja de la naturaleza capacitiva de CMOS de entradas.

schematic

simular este circuito – Esquema creado mediante CircuitLab

En el circuito de arriba el interruptor, cuando está cerrado, permite que la resistencia pull-down para la carga/descarga de la entrada capacitancias de los GPIO al nivel del suelo.

El truco con este circuito es utilizar el carácter bidireccional de un GPIO para mantener la entrada de carga a una lógica de alto nivel cuando el interruptor está abierto.

El control de rutina periódicamente convierte a los pines de salida, como un alto nivel, o brevemente permite el pull-up, el tiempo suficiente para mantener una carga de las tapas. El pin de entrada, a continuación, actúa como una memoria dinámica poco y, con la mayoría de los dispositivos, sostienen que cobran por una considerable cantidad utilizable de tiempo.

Cuando se configura correctamente, si se pulsa el botón de carga en el pin se descarga más rápido que la tasa de actualización. Esa condición se puede detectar como parte de la actualización del algoritmo de lectura de antes de la operación de actualización, o utilizado para conducir a una interrupción.

El poder es usado brevemente durante la actualización, el pulso, tanto para la recarga de los condensadores y a través de la resistencia y el interruptor si está cerrada. Sin embargo, la longitud de la actualización de pulso es corto y la frecuencia de sondeo resultados en la actualización actual es relativamente insignificante.

Obviamente, este método es un activo. Si el micro es puesto a dormir, el estado del interruptor será indeterminado en despertar. El primer ciclo de actualización después de wake-up debe ignorar el pin de lectura. También, este método no debe utilizarse para activar el micro. Antes de ir a la cama, también es conveniente habilitar el pin como salida baja para aparcar en un cero estado actual.

Para leer más interruptores estáticos, como la configuración de los dip-switches, dedicado rutina puede ser utilizado en lugar de un continuo ciclo de actualización. Después de la lectura, los pines GPIO debe ser "estacionado" en un activo de baja del estado de salida (corriente cero) para evitar la flotación entradas problema.

NOTA: Esta técnica hace sufrir un poco de sensibilidad al ruido si la traza de las longitudes de largo y viajar a través de un área ruidosa. Como tal, R1 debe estar cerca de la entrada de pin. Sin embargo, no lo recomiendo para conectar un interruptor a cierta distancia en un panel frontal en algún lugar, a menos que usted añadir capacitancia cerca del pin.

10voto

FakeMoustache Puntos 6645

¿Cuánto tiempo el botón sea presionado? Si no es un interruptor de palanca (que mantiene su estado), pero un interruptor momentáneo, a continuación, la corriente que fluye cuando se pulsa el botón es en gran medida irrelevante debido al corto tiempo que el botón se cerrará.

Cualquiera de los dos circuitos se muestran está bien, no importa.

Se puede asumir que la entrada de fuga y/o de la corriente en un MCU de entrada es insignificante. Todos los Mcu son en la tecnología CMOS de estos días y tiene prácticamente cero de la corriente de entrada. Así que dejar de considerar que es, no es.

En lugar de utilizar una resistencia externa también se puede utilizar la resistencia interna pull-up construir en muchos MCU sus entradas. Esta resistencia podría tener un valor relativamente bajo (50 kohm tal vez) por lo que una pequeña corriente de flujo cuando se pulsa el botón.

Usted puede utilizar con seguridad incluso de 1 Mohm resistor de pull-up/pull-down. Sólo en muy "sucio" (eléctricamente hablando) de entornos, usted puede ser que necesite un valor inferior. También puede colocar un condensador de 100 nF en paralelo con el interruptor para suprimir la interferencia de otros circuitos cercanos.

Pro consejo: Reservar un lugar para un capacitor en el PCB, pero no monte la tapa. sin embargo. En caso de problemas: lugar y ver si eso ayuda.

Para detectar el estado del interruptor, ya sea el uso de sondeo (como en TonyM la respuesta) o el uso de una interrupción. Depende del uso que uno es mejor para el consumo de energía (de la MCU).

9voto

Heath Raftery Puntos 141

Si el botón es un piezo interruptor, entonces la única potencia requerida es la energía generada al pulsar el botón.

Por ejemplo: R2/C1 recoger la energía que se produce al presionar el piezo. D1 impide que el C1 voltaje demasiado alto. R1 desagües C1 cuando se suelta el botón. El MCU GPIO debe estar en la entrada, no hay modo de extracción. Voilà, botón detectar con cero consumo de corriente de la fuente.

schematic

simular este circuito – Esquema creado mediante CircuitLab

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X