Cómo detectar e identificar múltiples puntos de contacto

Estoy buscando una manera de detectar y distinguir múltiples puntos de contacto de fuerza o presión. He hecho una pregunta relacionada en la URL que se indica a continuación:

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

La respuesta proporcionada en esto fue crear un D2A y determinar los puntos de contacto extrayéndolo del nivel de voltaje emitido. Descubrí que esta solución es un poco "torpe", ya que luego pasaré el sencillo original a mi D2A, que luego se volverá a pasar a un A2D para su procesamiento.

Estoy buscando una solución alternativa a este problema. Cualquier sugerencia es apreciada

¿Por qué "clunky" te causa un problema? Si tiene (digamos) diez cables (recuerdo su pregunta original) y los "combinó" usando la técnica D2A, obtendrá torpeza y es esa torpeza la que le permite distinguir entre el cable A y el cable B en cortocircuito al metal. lámina. Más ayuda necesitaba comprensión.
'Clunky' no escala bien... Podría requerir muchos cables, por lo que la posible variación en la resistencia causa un problema con la resistencia de entrada A2D en la mayoría de los microcontroladores
¿Está diciendo que el sistema D2A puede no ser el mejor camino a seguir?
Bueno, realmente me gusta este enfoque, simplemente no puedo ver cómo funcionará si tuviera que usar, digamos, 50 líneas de datos. Según tengo entendido, la mayoría de los A2D en microcontroladores tienen una limitación de resistencia de entrada de ~ 2k-~ 10k y creo que la variabilidad del uso de este sistema proporcionaría resultados inconsistentes cuando se lee desde un microcontrolador ... Demuestre que estoy equivocado para que pueda volver a visitar Este enfoque :)
Para agregar a mi comentario: dado que hay n líneas y el valor de las resistencias aumenta en potencias de 2 ^ n, parece que no puedo entender cómo conectar esto con un microcontrolador A2D para proporcionar resultados consistentes ... Creo que habría problemas con las limitaciones de las restricciones de resistencia del microcontrolador A2D... ¿Ves de todos modos alrededor de esto?

Respuestas (1)

Respondí la pregunta anterior pensando que no te importaba qué punto estaba presionado y solo querías saber si alguno de ellos lo estaba.

Ahora veo que desea saber qué puntos se presionan y cómo detectar un gran número usando solo unos pocos pines del microcontrolador. Mi sugerencia esta vez es usar algunos registros de desplazamiento . Estos solo requieren unos pocos pines y muchos se pueden encadenar para leer muchas líneas y convertir los datos paralelos en datos en serie para registrarlos en el microcontrolador. Necesita un SR que haga PISO (Parallel In, Serial Out) y pueda conectarse en cascada. Un SR universal como el CD74HCT299 debería funcionar bien. Eche un vistazo a Mouser, Farnell, Digikey, etc. para obtener más opciones; aquí hay muchas de Farnell .

Ahora mencionó "simultáneo", pero no dio una definición de qué tan rápido considera que esto es exactamente. Supongo que si es para detectar el toque humano, entonces no necesita ser tan rápido en comparación con la velocidad de reloj de un microcontrolador.

Por ejemplo, si está leyendo 256 líneas y su reloj está a 1 MHz, entonces está buscando alrededor de 0,25 ms para registrar todos los datos; esto es lo suficientemente rápido como para garantizar que no se pierda un toque. Dependiendo de los registros de desplazamiento utilizados (retardo de propagación, número máximo de registros encadenados en serie; por ejemplo, podría hacer dos o cuatro cadenas en lugar de una larga), podría ir más rápido: muchos micros pequeños tienen un periférico SPI que puede hacer al menos 8 MHz.

Dependiendo de cómo desee hacer las cosas y qué tan rápido deba ser, puede configurarlo como, por ejemplo, una matriz de 8x8 o 16x16, escaneando una fila a la vez.

Aquí hay un ejemplo de dos SR encadenados (de esta página ):

2 SR encadenados

Ah, olvidé mencionar el tiempo de respuesta nuevamente :) ... Bueno, me gustaría detectar hasta 128 líneas en 1 ms ... ¿Es eso posible con esta solución?
Mis disculpas... son ~ 0.1 ms
Nunca había encadenado tantos juntos, pero sí, creo que esto debería ser factible con registros de desplazamiento rápido (si revisa las especificaciones de las hojas de datos para cosas como configuración/retención, pulso de reloj mínimo y retraso de propagación, puede calcular aproximadamente qué tan rápido puede go) Siempre puede usar dos conjuntos de 8 en lugar de uno de 16 para acelerar las cosas (aunque necesitaría 6 pines en lugar de 3)