Cómo codificar una gran cantidad de señales de entrada digital en un resultado de señal

Quisiera saber como puedo detectar pulsos simultáneos en varios cables. Esencialmente, tendré varios cables que servirán como puntos de conexión cuando se los presione. Una visualización simple de esto es si viera varios cables colocados sobre (pero sin tocar) una placa de metal. La placa estaría conectada al extremo negativo de la batería y los cables estarían conectados al extremo positivo de la batería. Cuando se toca, el cable golpea la placa y pulsa. Inicialmente estaba pensando en algo como un codificador 64-6, pero ahora siento que hay soluciones mucho mejores.

Entonces, en resumen, cuál es la mejor manera de 'hardware' para codificar 2^n en n líneas de datos.

¡Cualquier ayuda es apreciada!

¿Necesita poder identificar qué líneas de entrada, o cuántas de ellas, están "activas" en cualquier momento? Además, ¿un simple paralelo en IC de salida en serie no haría lo que usted describe?
¿Qué tan simultáneo es "simultáneo" y qué tiene de malo el codificador 2^n?

Respuestas (3)

Puede codificar fácilmente 6 líneas digitales en una línea analógica . Recuerdo que mi viejo walkman Sony MD solía hacer algo como esto para codificar todos sus botones en una sola línea. Cada botón conecta una resistencia de valor diferente a la línea de detección. Los valores de resistencia se eligen de manera que cada combinación de botones cree una resistencia paralela única. Esta resistencia se mide y el microcontrolador puede calcular la combinación de botones.

resistencias

Aquí he dibujado la placa de metal y seis cables que se ciernen sobre ella. Cada cable está conectado a un valor diferente de resistencia. Lo que está creando aquí es básicamente un convertidor manual de digital a analógico .

Algunos ejemplos:

  • Sin cables en contacto -> Voltaje de salida = Vcc
  • Primeros toques de cable -> Voltaje de salida = Vcc x 1/2
  • El segundo cable toca -> Voltaje de salida = Vcc x 2/3
  • El primer y último cable se tocan -> Voltaje de salida = Vcc x 0.667/1.667
Esa es una mejora genial en mi idea y una buena imagen también.
Sony va mejor que eso, sus bloques de cámara FCB usan una matriz de resistencias para codificar MUCHOS botones en un teclado.
¡Me encanta esta idea! Me aseguraré de probarlo... ¡Gracias!
¿Tiene alguna sugerencia relacionada con el tipo de microcontrolador a utilizar?
¿Se puede modularizar este circuito y luego usar varios del mismo circuito en paralelo desde la misma fuente de voltaje? (Tengo problemas con los valores de resistencia 2^n que no se escalan bien con números grandes)
@Buck: sí, puede tener tantos de estos como desee, siempre que cada línea Output_Voltage se maneje por separado (por ejemplo, cada uno va a un canal ADC diferente).

Si te entiendo bien, estás buscando algo así como una configuración OR cableada :

O alámbrico

En el diagrama anterior, A y B están aislados entre sí (es decir, si B sube, A no lo hace), pero si cualquiera sube, C sube. El número de diodos/conexiones anteriores se puede aumentar tanto como desee.
O si necesita que las cosas sean un poco más complejas, entonces podría usar un montón de puertas lógicas o incluso un CPLD.

Si desea "detectar pulsos simultáneos en varios cables" y no está interesado en cuántos o cuáles están contribuyendo, conecte cada cable a través de una resistencia de 10k a un punto común y ate ese punto común a tierra a través de 1k. cuando 1 cable toca la placa de metal (conectado a +5V) verá 0,455 voltios en el común 1k; cuando varios cables tocan la placa de metal, verá 0,833 V (2 cables en cortocircuito) y esto aumenta a medida que se cortan más cables. Use un circuito comparador simple para detectar voltajes superiores a aproximadamente 0,6 V y esto debería funcionar.