Quel capteur linéaire pour un clavier? [fermé]


8

J'essaie de créer un clavier sensible à la vélocité pour jouer de la musique.

Je dois mesurer la position de chaque touche afin de savoir à quel point le son doit être fort.

Le volume du son est fonction de la vélocité des touches en fin de descente. Je sais que la position peut être récupérée de la vitesse en l'intégrant.

Quelle serait la façon la moins chère et la plus simple, mais encore assez précise de le faire?

Je ne sais pas exactement ce que «raisonnablement précis» signifierait dans le contexte. Je vais devoir le tester.

La longueur du déplacement maximum est d'environ 2 cm.

EDIT: pas comme certaines réponses semblent le suggérer, le volume n'est PAS fonction de la vitesse moyenne de la touche.

EDIT2: Le volume est fonction de la vitesse du marteau au moment où il frappe la corde, mais la touche ne pousse le marteau qu'à la fin de sa trajectoire. C'est vraiment comme lancer une balle sur un mur: la balle quitte la main à un moment, avant de heurter le mur.


4
Vous pouvez utiliser une diode IR et une photodiode côte à côte sous la clé, la photodiode mesurant la lumière réfléchie. Plus la position de la touche est basse, plus la lumière réfléchie atteint la photodiode. Convertissez ensuite le photocourant en une tension à l'aide d'un amplificateur à transimpédance. Vous devrez jouer pour voir quelle tension ou changement de tension correspond à quel volume.
jusaca

Avez-vous envisagé de mettre un accéléromètre sur chaque touche? L'intégration de l'accélération vous donne de la vitesse et l'intégration de la vitesse vous donne la position. Comme vous avez affaire à de courtes distances et à de courtes périodes, vous pouvez probablement ignorer les petites erreurs de décalage des accéléromètres.
brhans

1
@cat Je connais bien les Launchpads et je n'ai toujours aucune idée de ce dont vous parlez. Pouvez-vous être un peu plus utile?
Elliot Alderson

1
Oui, je crois que vous vous trompez. Comparez un accéléromètre à 1 $ à un capteur mécanique individuel sur chaque touche. Pensez à la fiabilité de zéro pièces mobiles (en supposant que vous faites les interconnexions correctement). Vous auriez besoin d'un microcontrôleur raisonnablement capable et d'un peu d'expérience en écriture de firmware pour le retirer.
brhans

1
@jusaca semble être déjà un produit sur le marché: deskthority.net/wiki/Adomax_Flaretech :)
user60561

Réponses:


2

Et la détection capacitive? Collez du papier d'aluminium au bas de la touche, reliez le bas du clavier à la terre et mesurez le temps de montée à travers une résistance de 100k.

Cette méthode peut être rendue presque arbitrairement précise, tant que votre processeur est suffisamment rapide pour discriminer le changement de capacité.

Je n'ai pas très bien expliqué le circuit. Vous connectez une sortie numérique à la clé via une résistance de valeur élevée, la réglez à un niveau bas pour décharger toute charge parasite, puis la réglez à un niveau élevé. Vous connectez également une entrée numérique directement à la clé. La capacité se chargera lentement à travers la résistance, et vous chronométrez le temps qu'il faut avant que l'entrée numérique ne s'allume. Ce temps est égal à la constante de temps RC du circuit.


Donc, je devrais passer AC en elle, non?
Jonas Daverio

1
@JonasDaverio Je ne sais pas à quoi vous connectez les clés, mais un GPIO par clé suffirait.
0xDBFB7

Je ne sais pas comment je suis censé mesurer la capacité. Une plaque est connectée à la terre et l'autre est connectée à quoi? Une source de tension constante?
Jonas Daverio

1
Le microcontrôleur Teensy LC [1] possède 11 entrées de détection capacitives et une bibliothèque C ++ qui le rend aussi simple que d'appeler analogReaden Arduino. [1]: pjrc.com/teensy/teensyLC.html
hoosierEE

1
@JonasDaverio désolé, je n'ai pas très bien expliqué le circuit. Vous connectez une sortie numérique à la clé via une résistance de valeur élevée, la réglez à un niveau bas pour décharger toute charge parasite, puis la réglez à un niveau élevé. Vous connectez également une entrée numérique directement à la clé. La capacité se chargera lentement à travers la résistance et vous chronométrez le temps qu'il faut avant que l'entrée numérique ne s'allume. Ce temps est égal à la constante de temps RC du circuit.
0xDBFB7

16

La plupart des claviers utilisent simplement deux contacts par clé, configurés de manière à ce qu'ils se ferment (ou s'ouvrent) à différentes positions dans le parcours de la clé. Ils estiment la vitesse à partir du temps qui s'écoule entre les deux événements. Même les claviers "piano action" pondérés de fantaisie utilisent cette méthode de détection de base.

Essayer de mesurer directement la position et / ou la vitesse sonne comme une surpuissance massive.


3
Je pense que cette méthode est insuffisante. Voici pourquoi: si je pousse lentement la touche vers le bas de la moitié du chemin, puis la pousse rapidement vers la fin, le son serait fort sur un vrai piano, et cette méthode penserait que la touche a été poussée très lentement et produirait donc un son vraiment calme. De plus, si je veux répéter une note, je devrais laisser la touche revenir complètement à sa position d'origine, ce qui n'est pas du tout ce que je ferais sur un vrai piano.
Jonas Daverio

9
Si un contact était en bas et l'autre contact était très près du fond, vous n'auriez pas ce problème.
George White

1
Chaque véritable instrument a ses nuances et ses limites. Les musiciens développent des techniques pour les exploiter à des fins musicales. Le joueur apprendra bientôt à passer jusqu'au bas du coup pour obtenir l'effet désiré.
Transistor

1
@Transistor Oui, en effet, mais mon objectif ici est d'essayer de simuler le plus près possible un vrai piano. Il y a déjà beaucoup de claviers disponibles, mais je n'en ai jamais trouvé un qui a fait ça. Il y en a probablement un très cher, cependant.
Jonas Daverio

1
Le point serait d'avoir une sortie midi et la possibilité d'avoir plus de touches (pour la microtonalité) tout en gardant toute la sensation d'un vrai piano. Je sais que cela ne sera jamais atteint de toute façon. Et je veux aussi le garder relativement bon marché, mais si je ne peux pas, je m'en tiendrai à la solution habituelle.
Jonas Daverio

9

Je dois mesurer la position de chaque touche afin de savoir à quel point le son doit être fort.

Normalement, la vitesse des touches est calculée en mesurant le temps entre la rupture de l'interrupteur de montée normalement fermé et la fermeture de l'interrupteur de descente normalement ouvert.

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

Figure 1. Un contact clavier de rupture avant création est généralement utilisé pour la mesure de la vitesse.

Le volume du son n'est pas uniquement fonction de la vélocité des touches en fin de descente. ... La longueur du déplacement maximum est d'environ 2 cm.

Dans ce cas, vous devez arranger mécaniquement le contact normalement fermé pour qu'il se casse dans les derniers mm de course.

schématique

simuler ce circuit

Figure 2. La disposition de commutation mécanique.

Il me semble que votre meilleur pari serait de modifier un pédalier de basse MIDI existant pour l'adapter à vos besoins.


Commentaire de l'OP à Dave Tweed:

Je pense que cette méthode est insuffisante. Voici pourquoi: si je pousse lentement la touche vers le bas de la moitié du chemin, puis la pousse rapidement vers la fin, le son serait fort sur un vrai piano, et cette méthode penserait que la touche a été pressée très lentement et produirait donc un son vraiment calme. De plus, si je veux répéter une note, je devrais laisser la touche revenir complètement à sa position d'origine, ce qui n'est pas du tout ce que je ferais sur un vrai piano.

C'est pourquoi j'ai proposé d'activer le commutateur dans les derniers mm de course.


J'ai répondu pourquoi je pense que cela est encore insuffisant.
Jonas Daverio

Je pense que vous avez mal lu ce que j'ai écrit. Je voulais dire "Le volume du son n'est PAS seulement fonction de la vitesse des touches à la fin de la descente."
Jonas Daverio

En effet, l'énergie dépend de la vitesse sur la durée de l'impact, qui est fonction de l'accélération (et du jerk, si l'on ne suppose pas une accélération constante). Cependant, êtes-vous sûr que cela fait une grande différence? Pouvez-vous caractériser les spécificités dont vous disposez ou que vous recherchez? Je ne sais pas ce que ce serait. Cela peut dépendre de l'effet qu'il est censé avoir sur l'algorithme.
vectoire

@JonasDaverio Faites-vous référence à l'échappement? Les pianos numériques accomplissent cela avec un troisième capteur qui tire légèrement au-dessus de l'endroit où la touche touche le fond (et au-dessus du capteur qui émet la note). Si la touche ne monte pas assez haut pour relâcher ce 3ème capteur, le fait d'enfoncer la touche ne fera pas retentir une seconde note, tout comme un vrai piano ne relâche pas le marteau à moins que la touche ne soit suffisamment élevée.
DKNguyen

8

Vous devriez jeter un œil aux claviers analogiques. Jetez un œil à cette vidéo . Ceci est juste un exemple de concept.

Edit: De plus, si les commutateurs optiques ne fonctionnent pas pour vous, jetez un œil à ceci:

entrez la description de l'image ici

Il y a une bobine imprimée PCB sous chaque capuchon de clé. Lorsque vous appuyez sur le bouton, la bobine mesure le changement d'inductance provoqué par la compression et la décompression des ressorts, vous pouvez donc obtenir une lecture assez précise de la position du commutateur.

Source:
Reddit
Imgur


Apparemment, ils utilisent une paire de LED IR et un capteur photo : blog.wooting.nl/flaretech-the-optical-keyboard-switch Cependant, je ne sais pas s'ils mesurent le délai entre l'émission et la détection ou s'ils mesurent l'intensité de la lumière qui pourrait traverser le tunnel.
Jonas Daverio

Je l'ai lié juste pour l'exemple du clavier analogique. Vous pouvez jeter un œil sur reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… et imgur.com/gallery/ImrH7nO . Je ne connais pas trop le sujet, j'essaye juste de vous aider à vous pousser dans la bonne direction :)
Matt

1
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses contenant uniquement des liens peuvent devenir invalides si la page liée change. - De l'avis
Blair Fonville

1
@BlairFonville Assez juste. Permettez-moi de le résumer. Il y a une bobine imprimée PCB sous chaque capuchon de clé. Lorsque vous appuyez sur le bouton, la bobine mesure le changement d'inductance provoqué par la compression et la décompression des ressorts clés, vous pouvez donc obtenir une lecture assez précise de la position du commutateur.
Matt

7

Si la variable importante est l'impact d'un "marteau" que vous essayez d'émuler, pensez aux capteurs piézoélectriques qui vous permettent de mesurer directement. Ils produisent une impulsion dont l'amplitude dépend de l'impulsion d'impact.


3

Une option pourrait être des capteurs à effet Hall, qui détectent la force d'un champ magnétique. Il existe différents types de capteurs Hall pour la détection numérique et analogique, vous avez besoin d'un capteur analogique. Par exemple, SI7211 coûte environ 0,80 USD.

Vous avez également besoin d'un petit aimant sous chaque clé. Lorsque l'aimant se rapproche du capteur, le champ magnétique augmente, ce qui augmente la tension de sortie du capteur.


1
Apparemment, ils l'utilisent sur certains claviers de musique. Je pense que c'est une solution vraiment simple et bonne. Je comparerai les coûts avec la solution de 0xDBFB7.
Jonas Daverio

2

Vous pouvez le traiter comme un instrument hybride numérique / analogique en plaçant des microphones [1] à l'intérieur du clavier, accordés au son de la frappe des touches. Les signaux provenant des microphones augmentent l'entrée traditionnelle basée sur le commutateur, de sorte que le commutateur vous indique quelle touche est enfoncée et les microphones vous indiquent le niveau de bruit de la touche la plus récente.

2 microphones ou plus sur toute la longueur du clavier permettraient de décoder un accord avec des notes fortes / basses et des notes douces / aiguës et vice versa.

[1]: Je continue de dire "microphone", mais je veux dire "dispositif générique de détection des vibrations".


C'est à peu près comment fonctionne une guitare électrique, je suppose. Cependant, la question ne mentionnait aucune partie acoustique, juste des touches.
vectoire

0

Vous pouvez rechercher des résistances variables à rappel par ressort, des potentiomètres à rappel par ressort ou des capteurs de position linéaire. Voici un exemple: http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0

Une autre possibilité peut être d'utiliser un petit encodeur rotatif (et de convertir mécaniquement le mouvement de pression linéaire des touches en mouvement rotatif). L'encodeur produirait un ou plusieurs jeux d'impulsions lorsque l'arbre tourne. Une fréquence d'impulsion plus élevée indiquerait une presse à vitesse plus élevée. La position du codeur pourrait être suivie directement si les groupes d'impulsions sont envoyés à une logique numérique supplémentaire. Voici un exemple de partie: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSA4QIVA_EK


0

Si vous voulez une super précision à un prix raisonnable, que diriez-vous d'utiliser un encodeur linéaire , de fixer une bande codée en gris (que vous imprimez vous-même à l'aide d'une imprimante laser sur une feuille transparente, puis de la découper et de l'attacher à chaque touche) - plus détails sur la façon dont ils fonctionnent sous les encodeurs rotatifs ici . De cette façon, vous avez besoin de deux (peut-être 3 pour obtenir une indication précise de la position finale) des lignes numériques par touche. Cela vous permettra de mesurer la vitesse avec une très bonne précision et même une position si cela est pertinent. L'avantage de cela est que vous pouvez le transformer en un ancien clavier (même un clavier acoustique).

Attention: quand j'étais adolescent (il y a longtemps) je me demandais depuis longtemps si je pouvais faire un clavier réaliste moins cher que de les acheter. Cela semblait peu probable à l'époque et cela semble encore moins probable maintenant. La méthode rentable est donc probablement "acheter un clavier sensible à la vélocité et le démonter", ce qui n'est pas amusant.


1
Oui, je ne prétends pas que cela finira par être moins cher que commercial, mais j'essaie de construire un arrangement spécial de clés qui n'existe pas sur le marché. Pour votre réponse, je ne suis pas vraiment sûr de ce que vous voulez dire. Voulez-vous dire faire un encodeur linéaire à partir de zéro? Je ne comprends pas à quoi sert la bande transparente. Et 3 bits semblent un peu bas pour encoder précisément la position et en déduire la vitesse.
Jonas Daverio

Un encodeur linéaire vous donnera une vitesse avec seulement 2 bits (voir les liens) à une grande résolution (vous pourriez très facilement obtenir une position à 256e de la distance de déplacement). En chronométrant la période entre les transitions de bits de code gris, vous obtiendrez une image très précise de la vitesse à différents stades de déplacement de la clé. Le 3ème bit vous donne un signal précis de «coups de marteau». Je vous proposais d'utiliser un lecteur optique à encodeur linéaire avec votre propre bande transparente - bande.
abligh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.