¿Qué sensor lineal para un teclado? [cerrado]

8

Estoy tratando de hacer un teclado sensible a la velocidad para reproducir música.

Tengo que medir la posición de cada tecla para saber qué tan fuerte debe ser el sonido.

El volumen del sonido es una función de la velocidad de las teclas al final del descenso. Sé que la posición se puede recuperar de la velocidad al integrarla.

¿Cuál sería la forma más barata y fácil, pero aún razonablemente precisa de hacerlo?

No sé exactamente qué significaría "razonablemente preciso" en el contexto. Tendré que probarlo.

La longitud del desplazamiento máximo es de aproximadamente 2 cm.

EDITAR: no como algunas respuestas parecen sugerir, el volumen NO es función de la velocidad media de la tecla.

EDIT2: El volumen es función de la velocidad del martillo en el momento en que toca la cuerda, pero la tecla no empuja el martillo hasta el final de su trayectoria. Es realmente como lanzar una pelota contra la pared: la pelota deja la mano en un momento, antes de que golpee la pared.

Jonas Daverio
fuente
44
Puede usar un diodo IR y un fotodiodo uno al lado del otro debajo de la tecla, el fotodiodo mide la luz reflejada. Cuanto más baja es la posición de la tecla, más luz reflejada llega al fotodiodo. Luego convierta la fotocorriente a un voltaje usando un amplificador de transimpedancia. Tendrá que jugar para ver qué voltaje o cambio de voltaje corresponde a qué volumen.
jusaca
¿Has considerado poner un acelerómetro en cada tecla? La aceleración integrada te da velocidad, y la velocidad integradora te da posición. Como se trata de distancias cortas y períodos de tiempo, probablemente podría ignorar los pequeños errores de desplazamiento de los acelerómetros.
Brhans
1
@cat Estoy familiarizado con los Launchpads y todavía no tengo idea de lo que estás hablando. ¿Puedes ser un poco más útil?
Elliot Alderson
1
Sí, creo que estás equivocado. Compare un acelerómetro de $ 1 con un sensor mecánico individual en cada tecla. Piense en la fiabilidad de cero piezas móviles (suponiendo que realice las interconexiones correctamente). Sin embargo, necesitaría un microcontrolador razonablemente capaz y un poco de experiencia escribiendo firmware para llevarlo a cabo.
Brhans
1
@jusaca parece que ya es un producto en el mercado: deskthority.net/wiki/Adomax_Flaretech :)
user60561

Respuestas:

2

¿Qué hay de la detección capacitiva? Pegue un poco de papel de aluminio en la parte inferior de la tecla, conecte a tierra la parte inferior del teclado y mida el tiempo de subida a través de una resistencia de 100k.

Este método puede hacerse casi arbitrariamente preciso, siempre que su procesador sea lo suficientemente rápido como para discriminar el cambio en la capacitancia.

No expliqué el circuito muy bien. Conecta una salida digital a la tecla a través de una resistencia de alto valor, la configura en baja para descargar cualquier carga perdida y luego la configura en alta. También conecta una entrada digital directamente a la tecla. La capacitancia se cargará lentamente a través de la resistencia, y usted mide el tiempo que tarda antes de que se encienda la entrada digital. Este tiempo es igual a la constante de tiempo RC del circuito.

0xDBFB7
fuente
Entonces, tendría que pasar AC en él, ¿no?
Jonas Daverio
1
@JonasDaverio No estoy seguro de a qué está conectando las claves, pero sería suficiente un GPIO por clave.
0xDBFB7
No estoy seguro de cómo se supone que debo medir la capacitancia. ¿Una placa está conectada a tierra y la otra está conectada a qué? ¿Una fuente de voltaje constante?
Jonas Daverio
1
El microcontrolador Teensy LC [1] tiene 11 entradas de detección capacitivas y una biblioteca C ++ que lo hace tan fácil como llamar analogReada Arduino. [1]: pjrc.com/teensy/teensyLC.html
hoosierEE
1
@JonasDaverio lo siento, no expliqué el circuito muy bien. Conecta una salida digital a la tecla a través de una resistencia de alto valor, la configura en baja para descargar cualquier carga perdida y luego la configura en alta. También conecta una entrada digital directamente a la tecla. La capacitancia se cargará lentamente a través de la resistencia, y usted mide el tiempo que tarda antes de que se encienda la entrada digital. Este tiempo es igual a la constante de tiempo RC del circuito.
0xDBFB7
16

La mayoría de los teclados simplemente usan dos contactos por tecla, configurados para que se cierren (o abran) en diferentes posiciones en el recorrido de la tecla. Estiman la velocidad a partir del tiempo que transcurre entre los dos eventos. Incluso los elegantes teclados ponderados de "acción de piano" utilizan este método de detección básico.

Intentar medir la posición y / o velocidad directamente suena como una exageración masiva.

Dave Tweed
fuente
3
Creo que este método es insuficiente. He aquí por qué: si empujo lentamente la tecla hacia abajo la mitad del camino y luego la empujo hacia abajo hasta el final, el sonido sería fuerte en un piano real, y este método pensaría que la tecla se presionó muy lentamente y, por lo tanto, emitió un Sonido realmente tranquilo. Además, si quiero repetir una nota, tendría que dejar que la tecla vuelva completamente a su posición original, que no es lo que haría en un piano real.
Jonas Daverio
99
Si un contacto estaba en la parte inferior y el otro contacto estaba muy cerca de la parte inferior, no tendría este problema.
George White
1
Todo instrumento real tiene sus matices y limitaciones. Los músicos desarrollan técnicas para explotarlos para lograr efectos musicales. El jugador pronto aprenderá a continuar hasta el final del golpe para obtener el efecto deseado.
Transistor
1
@Transistor Sí, de hecho, pero mi objetivo aquí es intentar simular lo más cerca posible un piano real. Ya hay muchos teclados disponibles, pero nunca encontré uno que hiciera eso. Sin embargo, probablemente haya algunos realmente caros.
Jonas Daverio
1
El punto sería tener una salida midi y la posibilidad de tener más teclas (para microtonalidad) mientras se mantiene toda la sensación de un piano real. Sé que esto nunca se alcanzará de todos modos. Y también quiero mantenerlo relativamente barato, pero si no puedo, me quedaré con la solución habitual.
Jonas Daverio
9

Tengo que medir la posición de cada tecla para saber qué tan fuerte debe ser el sonido.

Normalmente, la velocidad clave se calcula midiendo el tiempo entre la interrupción del interruptor ascendente normalmente cerrado y la fabricación del interruptor descendente normalmente abierto.

esquemático

simular este circuito : esquema creado con CircuitLab

Figura 1. Un contacto de teclado break-before-make se usa generalmente para medir la velocidad.

El volumen del sonido no es solo función de la velocidad de las teclas al final del descenso. ... La longitud del desplazamiento máximo es de aproximadamente 2 cm.

En este caso, debe organizar mecánicamente el contacto normalmente cerrado para que se rompa en los últimos mm de recorrido.

esquemático

simular este circuito

Figura 2. La disposición de conmutación mecánica.

Me parece que su mejor opción sería modificar una pedalera MIDI existente para adaptarla a sus propósitos.


Comentario de OP a Dave Tweed:

Creo que este método es insuficiente. He aquí por qué: si empujo lentamente la tecla hacia abajo la mitad del camino y luego la empujo hacia abajo hasta el final, el sonido sería fuerte en un piano real, y este método pensaría que la tecla se presionó muy lentamente y, por lo tanto, emitió un Sonido realmente tranquilo. Además, si quiero repetir una nota, tendría que dejar que la tecla vuelva completamente a su posición original, que no es lo que haría en un piano real.

Es por eso que propuse activar el interruptor de cambio en los últimos mm de recorrido.

Transistor
fuente
Respondí por qué creo que esto todavía es insuficiente.
Jonas Daverio
Creo que leíste mal lo que escribí. Quise decir "El volumen del sonido NO es solo función de la velocidad de las teclas al final del descenso".
Jonas Daverio
De hecho, la energía depende de la velocidad a lo largo del tiempo del impacto, que es una función de la aceleración (y la sacudida, si no se supone una aceleración constante). Sin embargo, ¿estás seguro de que eso hace una gran diferencia? ¿Puedes caracterizar los detalles que tienes o estás buscando? No sé qué sería eso. Puede depender del efecto que se supone que tiene sobre el algoritmo.
vectory
@JonasDaverio ¿Te refieres al escape? Los pianos digitales logran esto con un tercer sensor que se dispara ligeramente por encima de donde la tecla toca fondo (y por encima del sensor que hace sonar la nota). Si la tecla no sube lo suficiente como para liberar este tercer sensor, la tecla no tocará una segunda nota, al igual que un piano real no suelta el martillo a menos que la tecla esté lo suficientemente elevada.
DKNguyen
8

Deberías echar un vistazo a los teclados analógicos. Echa un vistazo a este video . Esto es solo un ejemplo de concepto.

Editar: Además, si los interruptores ópticos no funcionan para usted, eche un vistazo a esto:

ingrese la descripción de la imagen aquí

Hay una bobina impresa en PCB debajo de cada tapa de tecla. Al presionar el botón, la bobina mide el cambio de inductancia causado por la compresión y descompresión del resorte de la llave, por lo tanto, puede obtener una lectura bastante precisa de la posición del interruptor.

Fuente:
Reddit
Imgur

Mate
fuente
Aparentemente, usan un par de IR-LED y fotosensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch Sin embargo, no estoy seguro de si miden el retraso entre la emisión y la detección o si miden La intensidad de la luz que podría atravesar el túnel.
Jonas Daverio
Lo vinculé solo por el ejemplo del teclado analógico. Puede echar un vistazo a reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… e imgur.com/gallery/ImrH7nO . No estoy demasiado familiarizado con el tema, solo trato de ayudarlo a empujarlo en la dirección correcta :)
Matt
1
Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - De la opinión
Blair Fonville
1
@BlairFonville Bastante justo. Déjame resumirlo. Hay una bobina impresa en PCB debajo de cada tapa de tecla. Al presionar el botón, la bobina mide el cambio de inductancia causado por la compresión y descompresión del resorte de la llave, por lo tanto, puede obtener una lectura bastante precisa de la posición del interruptor.
Matt
7

Si la variable importante es el impacto de un "martillo" que está tratando de emular, considere los sensores piezoeléctricos que le permiten medir esto directamente. Producen un pulso cuya amplitud depende del impulso de impacto.

pjc50
fuente
3

Una opción podría ser sensores Hall, que detectan la fuerza de un campo magnético. Existen diferentes tipos de sensores Hall para detección digital y analógica, necesita uno que tenga analógico. Por ejemplo, SI7211 cuesta alrededor de 0,80 USD.

También necesita un pequeño imán debajo de cada tecla. Cuando el imán se acerca al sensor, el campo magnético aumenta, lo que aumenta el voltaje de salida del sensor.

jpa
fuente
1
Aparentemente, lo usan en algunos teclados de música. Creo que esta es una solución realmente simple y buena. Compararé los costos con la solución de 0xDBFB7.
Jonas Daverio
2

Puede tratar esto como un instrumento híbrido digital / analógico colocando micrófonos [1] dentro del teclado, sintonizados con el sonido de tocar las teclas. Las señales de los micrófonos aumentan la entrada tradicional basada en el interruptor, por lo que el interruptor le indica qué tecla se presionó, y los micrófonos le dicen qué tan fuerte fue la pulsación de tecla más reciente.

2 o más micrófonos a lo largo de la longitud del teclado permitirían decodificar un acorde con notas altas / bajas y notas suaves / altas y viceversa.

[1]: Sigo diciendo "micrófono", pero me refiero a "dispositivo genérico de detección de vibraciones".

hoosierEE
fuente
Así es como funciona una guitarra eléctrica, supongo. Sin embargo, la pregunta no mencionó ninguna parte acústica, solo teclas.
vectory
0

Es posible que desee investigar resistencias variables de retorno por resorte, potenciómetros de retorno por resorte o sensores de posición lineal. Aquí hay un ejemplo: http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0

Otra posibilidad puede ser utilizar un pequeño codificador rotatorio (y convertir mecánicamente el movimiento lineal de la pulsación de tecla en movimiento rotativo). El codificador generaría uno o más conjuntos de pulsos a medida que el eje gira. Una frecuencia de pulso más alta indicaría una prensa de mayor velocidad. La posición del codificador podría rastrearse directamente si los grupos de pulsos se envían a una lógica digital adicional. Aquí hay una parte de ejemplo: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEsECM3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ

Nedd
fuente
0

Si desea una súper precisión a un precio razonable, ¿qué tal si utiliza un codificador lineal , adjuntar una tira codificada en gris (que imprime usted mismo con una impresora láser en una hoja transparente, luego cortar y adjuntar una a cada tecla)? Más detalles de cómo funcionan bajo codificadores rotativos aquí . De esta forma, necesita dos líneas digitales (tal vez 3 para obtener una indicación precisa de la posición final) por tecla. Esto le permitirá medir la velocidad con muy buena precisión e incluso la posición si eso es relevante. La ventaja de esto es que puede adaptarlo a un teclado antiguo (incluso un teclado acústico).

Precaución: cuando era un adolescente (hace mucho tiempo) me pregunté durante años si podría hacer un teclado realista más barato que comprarlo. Parecía improbable entonces y parece aún menos probable ahora. Por lo tanto, el método rentable es probablemente "comprar un teclado sensible a la velocidad y desarmarlo", lo cual no es divertido.

abligh
fuente
1
Sí, no pretendo que esto termine más barato que uno comercial, pero estoy tratando de construir un arreglo especial de llaves que no existe en el mercado. Para su respuesta, no estoy muy seguro de lo que quiere decir. ¿Te refieres a hacer un codificador lineal desde cero? No entiendo cuál es el punto de la tira transparente. Y 3 bits parecen un poco bajos para codificar con precisión la posición y deducir la velocidad a partir de ella.
Jonas Daverio
Un codificador lineal le dará velocidad con solo 2 bits (vea los enlaces) a una gran resolución (puede obtener la posición a 256 de la distancia de viaje muy fácilmente). Al cronometrar el período entre las transiciones de bits de código gris, obtendrá una imagen muy precisa de la velocidad en las diferentes etapas del recorrido de la clave. El 3er bit te da una señal precisa de "golpes de martillo". Le sugería que usara un lector óptico de codificador lineal con su propia 'cinta' - tira transparente.
Abligh