Pulsadores momentáneos de enclavamiento mutuamente excluyentes

Aquí hay un circuito que implementa un arreglo de botón de radio.

ingrese la descripción de la imagen aquí

Todos los interruptores activan el reloj.

Uno de los interruptores habilita un pestillo que no tiene conexión de salida.

Los otros dos interruptores activan cada uno una salida.

Si ninguna de esas salidas está habilitada, una puerta DTL NOR crea una lógica alta que indica que ninguna de las dos está 'activada'.

Entonces, el interruptor uno y dos funcionan como botones de radio (mutuamente excluyentes) y el interruptor de reinicio desactiva las otras dos salidas.

Si sw1 está activo y presiono el botón nuevamente, no pasa nada, sw1 permanece activo. Solo puedo deshabilitar sw1 y sw2 presionando el interruptor de reinicio.

no quiero esto

Se me ocurre que el interruptor de reinicio PODRÍA ser redundante. Lo que realmente necesito es que cada interruptor se encienda y apague, y SI cambia alto para deshabilitar el otro interruptor.

ie. (truth table)
S1 S2 S1_CURR S2_CURR S1_NEW S2_NEW
1  0  0       0       1      0
1  0  1       0       0      0
0  1  0       0       0      1
0  1  0       1       0      0
1  0  0       1       1      0
0  1  1       0       0      1
etc.

KEY
S? = status of switch 1 (1 = closed, 0 = open)
S?_CURR = status of current latch output for the given switch (1=high, 0=low)
S?_NEW = the result of the switch press

Podría tener uno de estos en cada botón:

ingrese la descripción de la imagen aquí

Pero, ¿cómo vincularía dos de estos en un arreglo de botones de opción (mutuamente excluyentes)?

Consideré algún tipo de arreglo XOR pero eso tiene problemas.

Creo que este puede ser un requisito bastante estándar para el que alguien podría conocer la solución.

¡Muchas gracias a cualquiera que se moleste en leer esto!

¿Qué es un "arreglo de botones de opción"?
Un circuito de botón de radio tiene un grupo de botones pulsadores momentáneos (generalmente SPST), cada uno con una salida bloqueada. Al presionar cualquier botón, se establece su salida y se borran todas las demás salidas. El nombre proviene del mecanismo selector de estación de botón mecánico en una radio de automóvil.

Respuestas (2)

La función de acción alternativa no forma parte de un circuito de botón de radio estándar.

Si solo hay dos botones activos, esto se puede hacer con un flip-flop dual D, como un CD4013. Cada mitad está conectada como un conmutador ff, y la salida Q de cada sección se diferencia en la entrada de reinicio de la otra sección.

EDITAR: Primer paso en un esquema. R1-C1 elimina el rebote de la entrada del interruptor mientras mantiene un borde de señal rápido en la entrada del reloj. R2-C2 diferencia la salida Q y pulsa la entrada Restablecer del otro circuito cuando la salida Q sube. Puede ajustar los valores de los componentes para su comportamiento de cambio, inventario, etc.

Crédito a Crutschow en AAC por el truco de rebote del interruptor.

ingrese la descripción de la imagen aquí

Explicación ampliada:

Como notó en su pregunta, necesita un flip-flop para cada interruptor, más algo para administrar el reinicio de los otros circuitos. El circuito que publiqué es bastante simple, pero eso se debe en parte a que solo funciona con dos interruptores. La expansión de este circuito para más interruptores se complica muy rápidamente.

Conectar la salida inversora de un flip-flop D a su entrada D crea un flip-flop de palanca, y un 4013 tiene dos, por lo que esa es la base del circuito. Sin ninguna de las conexiones cruzadas entre los dos circuitos, tiene dos circuitos basculantes básicos.

Los interruptores rebotan; es decir, los contactos del interruptor no se unen limpiamente. Rebotan entre sí y luego se juntan nuevamente bajo la fuerza del resorte. Cuando presiona el botón, la entrada del reloj puede ver docenas de flancos de señal en unos pocos milisegundos. Sin tratamiento, este es un buen generador de números aleatorios. R1-C1 es un filtro de paso bajo que evita que la entrada D cambie tan rápido como rebota la entrada del reloj. El primer flanco positivo sincroniza el valor Q actual en el ff. esto hace que Q- cambie al otro estado, pero la entrada D no realiza un seguimiento de esto durante unos 16 milisegundos, aproximadamente 0,7 x la constante de tiempo RC. Si los contactos del interruptor aún están rebotando después de ese tiempo, obtendrá una acción de circuito esporádica; aumente R1 o C1 para obtener un período de rebote más largo.

En cualquier otra pulsación del interruptor, la salida Q subirá. C2-R2 forman un filtro de paso alto que funciona como un diferenciador. Cuando Q salta de 0 v a Vcc (-ish), ese nivel alto aparece inmediatamente en el pin 10, la entrada de reinicio del otro circuito, reiniciando U1B inmediatamente. Q permanecerá alto hasta que presione el siguiente botón, y también lo hará el extremo de C2 conectado directamente a él. Pero R2 comienza a cargar a C2 tirando del otro extremo hacia GND. Después de (0,7 x R2 x C2) segundos, el voltaje en el pin 10 cae por debajo del nivel de transición de entrada, liberando la entrada de reinicio para que el circuito pueda aceptar entradas de SW2. El ancho del pulso de reinicio es de aprox. 1,6 ms.

Nota: Falta en el sch un condensador de desacoplamiento para el chip. Use otra tapa de 0.22 uF conectada directamente a los pines 7 y 14.

eso suena como una solución... Lo intentaré.
Gracias. He probado esto en LTSpice y es perfecto. Confieso que no entiendo muy bien cómo funciona eso sí.
Agregué una explicación de circuito expandido.
Has ido más allá. Te daría una recompensa por esto, pero no sé cómo. El PCB final tiene mucho suavizado de potencia y el chip tendrá una tapa de tantalio. Esto es excelente para mí, libera mucho espacio porque los interruptores son interruptores de pie momentáneos montados al ras en la PCB y tienen un patio ENORME. Perder un interruptor completo significa que puedo colocar todo cómodamente sin usar el reverso del tablero, lo que obviamente también me ahorra dinero.
Me alegra que funcione para ti. NOTA: La función de acción alternativa anterior y un interruptor de reinicio separado como el que usó al principio no son lo mismo. El circuito anterior pasa a un estado de "reinicio" (sin salidas altas) solo si presiona el interruptor correcto cuando una salida está alta. Un verdadero interruptor de reinicio borra todas las salidas sin saber cuál es alta.
Sí, no necesito un reinicio 'verdadero'... esto es exactamente lo que se requiere.

Creo que este puede ser un requisito bastante estándar para el que alguien podría conocer la solución.

No sé si este problema específico es "bastante estándar" (suena súper específico para mí), pero la clase general de problema es muy común:

Cada uno de norte Los botones activan un estado diferente. Solo un estado puede estar activo.

¡Felicitaciones, esa es una máquina de estado, el bloque de construcción más fundamental de la lógica digital!

Especialmente para norte > 2 , prácticamente siempre implementaría eso con el microcontrolador más barato que pueda encontrar.

Eso suele ser más barato que comprar suficientes puertas lógicas para implementar una Máquina Moore o una Máquina Mealy . Y, nadie necesita razonar acerca de por qué un arreglo complejo de puertas lógicas no funciona según lo planeado, si en cambio pueden escribir 5 líneas de código para definir la máquina de estado en el software.

Su perfil no indica en absoluto si ha programado antes, pero no tenga miedo: el software no es difícil y un microcontrolador realmente necesita poco esfuerzo para hacerlo funcionar. "Blue Pill" / Android podría ser una buena plataforma para comenzar.