Haga que un interruptor momentáneo controle una palanca


17

¿Cuáles son las formas más simples, baratas y pequeñas de hacer que un interruptor momentáneo produzca una salida de alternancia de 2 estados (interruptor momentáneo de enclavamiento)?

En otras palabras, la salida es continuamente baja, y cuando presiona momentáneamente el botón / interruptor táctil, la salida cambia continuamente a alta, y luego cuando la presiona nuevamente, cambia a baja.


Creo que la mejor respuesta a esto depende del autor de la pregunta y de si te sientes más cómodo con una solución de hardware o software.
J. Polfer

También depende de dónde esté este interruptor de salida y qué voltajes (estados) tenga disponibles.
XTL

Solo dos estados, alto y bajo, como cualquier lógica digital. Si quieres hacer varios estados por los que estás pasando en bicicleta, creo que eso requeriría un microcontrolador. Probablemente tengas uno en tu circuito de todos modos para eso.
endolito

Me gusta la solución con 2 inversores. ¿Me pregunto qué se necesitaría para permitir que esto cambie 30V @ 1A?
stevenrcfox 01 de

@Overlow: Reemplace el transistor de salida con un transistor de potencia o relé
endolito

Respuestas:


9

Aquí hay otra alternativa con dos inversores y antirrebote:

Dos inversores

Para la salida lógica, solo se necesitan los dos inversores, RC y resistencia de retroalimentación:

ingrese la descripción de la imagen aquí

NC7WZ14 cuesta $ 0.06 con 2 inversores, un pequeño paquete de 6 pines y entradas de disparador Schmitt, aunque creo que este circuito ni siquiera necesita entradas Schmitt debido al RC. También puede manejar 24 mA, por lo que puede conectar el LED directamente si está utilizando un LED por cualquier motivo.

También se muestra aquí y aquí como un interruptor táctil de palanca .

Creo que la resistencia de retroalimentación debe ser mucho más pequeña que la resistencia central para evitar que oscile si mantiene presionado el botón, porque la conexión de baja impedancia a la salida evitará que el condensador se cargue a la tensión media hasta que lo suelte.

Las variantes se describen en Presione ON - Presione OFF en circuitos de enclavamiento suave :

Y variante de puerta


Cuando se enciende por primera vez, ¿se iniciará con la salida encendida, apagada o aleatoria? Simplemente inspeccionando el circuito, supongo que se encenderá con la salida encendida.
Craig McQueen

@CraigMcQueen Cuando se enciende por primera vez, el condensador tendrá 0 V a través de él. Entonces el primer circuito comenzará en la posición ON. Conecte el condensador a la fuente en lugar de tierra, y comenzará en la posición OFF.
endolito

@CraigMcQueen ¿Está realmente garantizado? No estoy seguro. La baja impedancia de salida del inversor dominará sobre la resistencia de 220k, por lo que podría comenzar en un estado aleatorio.
endolito

@CraigMcQueen El último circuito que se muestra comenzará con un capacitor de 0.01 μF 0 V, por lo que Vout será 0.
endolito

@endolith ¿Dónde está conectada la VCC en la última imagen? Veo tierra y Vout.
Mike

7

Un posible método:

Use un RC para eliminar el conmutador

Red RC conectada al interruptor momentáneo para eliminar el rebote

y luego alimentarlo en un flip-flop D con la salida realimentando la entrada para implementar un flip-flop T.

D flip-flop configurado como alternar flip-flop

El flip-flop D solo debe ser activado por flanco positivo, y necesita una salida invertida.

  • El NC7SZ74 de 8 pines debería funcionar, es muy pequeño y cuesta $ 0.12 en cantidad.
  • El 74HC74 es un flip-flop dual D con 14 pines por $ 0.05.

¿Hay algún problema con esto? El interruptor debería mantenerse presionado durante un corto período de tiempo para que el tiempo de subida active la entrada del reloj, lo que probablemente sea bueno. Si mantiene presionado el botón, solo se activará una vez, lo cual es bueno. ¿Hay una mejor manera de eliminar el rebote en el ciclo de retroalimentación o algo así?


55
Realmente necesita un buffer de disparo schmitt en la entrada del botón (o si el flip-flop tiene entradas de disparo schmitt que también funcionarían). De lo contrario, el FF puede oscilar momentáneamente cuando la entrada del reloj aumenta lentamente cuando se suelta el botón. (Esto puede mitigarse un poco con una selección cuidadosa de la tapa y la resistencia antirrebote, pero nunca se elimina)
Connor Wolf

¿No podría utilizar también un filtro RC en la ruta de retroalimentación para evitar el rebote?
endolito

6

O podría hacerlo con un pequeño microcontrolador de 6 pines y sin otros componentes. Puede costar un poco más, pero es más simple y ocupa menos espacio. Rebotar un interruptor en el software es simple, entonces es solo una forma de almacenar un valor booleano si la salida debe ser alta o baja. La versión más pequeña de este mcu viene en un paquete de montaje en superficie de 2 mm x 2 mm. En grandes cantidades puede ser $ 0.50.

esquema esquemático


+1 - Pero creo que esa parte solo viene en SMT.
J. Polfer

1
Sí, pero incluso el microcontrolador más barato costará más que la simple lógica digital. Es un sistema bastante complejo para hacer una tarea simple, y te estás abriendo al mundo de los errores de software. Además, ¿aumenta los costos de producción para programar cada micro?
endolito

Entonces usaría la resistencia pull-up interna en la configuración PB0 como entrada digital y luego la conectaría a tierra para activarla, ¿verdad? No debería necesitar una resistencia en serie con el interruptor de esa manera.
endolito

1
@TokenMacGuy No debe fluir corriente de PB0 a GND, ya que PB0 sería una entrada, no una salida. @endolith correcto, el uso del pull-up interno significa que no hay necesidad de pull-up externo. (Además, el pull-up no está en serie con el interruptor, ya sea con un pull-up interno o externo). @sheepsimulator que viene en SMT es solo un problema para el aficionado. En ese caso, uno o dos dólares adicionales no serían un problema, y ​​puede pasar fácilmente al DIP ATtiny25 de 8 pines.
davr

@endolith Depende de la aplicación, supongo. Siempre hay compensaciones. Todo menos el dispositivo más básico tiene algún tipo de lógica. Decir que te abres al mundo de los errores de software no es tan importante ... sin el mcu te abres a los errores de hardware, ya que estás construyendo algún tipo de circuito digital / analógico para realizar la lógica.
davr

1

Este circuito (también descrito aquí ) es muy barato, pero es más complejo y ocupa algo de espacio con todos los componentes. Si los transistores son como $ 0.02 en grandes cantidades, ¿sería quizás $ 0.10 en total?

Interruptor de bloqueo de 3 transistores


$ 0.02 ... tal vez si compras 27,000 de ellos como aquí: search.digikey.com/scripts/DkSearch/…
davr

1
$ 0.03 es mucho como $ 0.02 en pequeñas cantidades ...
SingleNegationElimination

3904s por 1.4 centavos: newark.com/on-semiconductor/mmbt3904lt1g/... En grandes cantidades, los condensadores son como 1 centavo, y las resistencias son como 1/10 de centavo.
endolito

Parece que el transistor Q2 necesita una resistencia en la base, para limitar la corriente que fluye a través de la base.
Craig McQueen


0

Sé que es una forma "indirecta" de hacerlo, pero puede obtener un sensor de efecto hall como el que tiene sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=9312

y solo use un imán, descubrí (por las malas) que este efecto Hall en particular se traba, por lo que no funcionará para lo que necesito, pero parece que en teoría podría funcionar para lo que está buscando .

Simplemente lo conecté a una placa de pruebas, creo que podría haber usado una resistencia (ha pasado probablemente un mes, así que estoy un poco borroso en los detalles), y cuando acerco el imán (momentáneamente) cierra el sensor y allí anda tu.


1
Sin embargo, ¿cómo lo destrabarías? Acercar el imán al sensor por segunda vez no lo desactivaría, ¿verdad?
davr

Creo que tendrías que invertir la polaridad del imán para "limpiarlo". Tendré que volver a conectarlo en casa para probarlo para estar seguro, sin embargo, estoy investigando cuánto tiempo lleva "restablecer" si quitas el poder. Podría usarlo para mi proyecto al que iba a ir, matando el poder por el tiempo especificado (siempre que no sea demasiado largo)
onaclov2000

0

La alternativa más fácil es usar un interruptor de botón alternativo.

Si ignora el hecho de que se traba en diferentes posiciones, es casi exactamente como un interruptor momentáneo. Entiendo que este no es el espíritu de la pregunta, pero es una solución simple y compacta que no requiere software ni hardware externo.


0

No estoy seguro de cuál es exactamente el objetivo final, pero pensé que lo pondría ahí:

Este es un pequeño gran circuito que me gusta usar para manejar relés biestables. Es bastante barato de construir también.

Al presionar el interruptor momentáneo se alterna el estado del relé y el LED. No es realmente exigente sobre cuánto tiempo mantienes presionado el botón. Como el relé se enclava, la mayor parte del tiempo no consumirá mucha corriente.

En esta configuración, el LED se encenderá cuando el relé esté en su condición establecida y se apagará cuando se reinicie el relé. También puede conectar R7 al terminal + de C3 para que el LED se encienda cuando se restablezca el relé.

Me gusta usar esto en los efectos de guitarra para poder omitir o activar el dispositivo con un pedal momentáneo. Por supuesto, un interruptor 3PDT haría lo mismo por sí solo, pero el cambio es más silencioso de esta manera (sin gran pop) y los pedales momentáneos de tacto suave se sienten mucho más agradables que los grandes 3PDT.

Espero que esto ayude.

Latching Relay Driver


0

¿No podrías simplemente hacerlo en software?

¿Será el botón una entrada en un dispositivo programable, o necesita alternar en el ámbito del hardware?

Al almacenar un estado de botón en la memoria, es bastante fácil usar un interruptor momentáneo como alternador.

boolean buttonState = false; // store for toggle state, false = off true = on

if(yourButton == HIGH && buttonState == false) // if button is pressed and toggled off
{
     Serial.println("Button Toggled On"); // do something while button is on

     buttonState = true // set button state to on
}

if(yourButton == HIGH && buttonState == true) // if button is pressed and toggled on
{
     Serial.println("Button Toggled Off");  // do something else while button is off

     buttonState = false // set button state to off
}

Lo sentimos si esto está fuera de lugar, obviamente esta respuesta depende de que uses un MCU o un chip programable.


Personalmente, necesito una solución independiente, pero la pregunta es general.
endolito

1
Sí, esa es ciertamente la solución sensata cuando tienes un microprocesador. Tenga en cuenta que también debe implementar "antirrebote" ya que los interruptores y botones son ruidosos al cambiar.
Craig McQueen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.