Quale sensore lineare per una tastiera? [chiuso]


8

Sto cercando di creare una tastiera sensibile alla velocità per suonare la musica.

Devo misurare la posizione di ciascun tasto per sapere quanto dovrebbe essere forte il suono.

Il volume del suono è una funzione della velocità dei tasti alla fine della discesa. So che la posizione può essere recuperata dalla velocità integrandola.

Quale sarebbe il modo più economico e semplice, ma ancora ragionevolmente preciso per farlo?

Non so esattamente cosa significhi "ragionevolmente preciso" nel contesto. Dovrò provarlo.

La lunghezza dello spostamento massimo è di circa 2 cm.

EDIT: non come sembrano suggerire alcune risposte, il volume NON è funzione della velocità media del tasto.

EDIT2: il volume è funzione della velocità del martello nel momento in cui colpisce la corda, ma la chiave non sta spingendo il martello fino alla fine del suo percorso. È davvero come lanciare una palla su un muro: la palla lascia la mano in un momento, prima di colpire il muro.


4
È possibile utilizzare un diodo IR e un fotodiodo uno accanto all'altro sotto il tasto, il fotodiodo che misura la luce riflessa. Più bassa è la posizione della chiave, più luce riflessa raggiunge il fotodiodo. Quindi convertire la fotocorrente in una tensione utilizzando un amplificatore di transimpedenza. Dovrai giocare per vedere quale tensione o variazione di tensione corrisponde a quale volume.
jusaca,

Hai pensato di mettere un accelerometro su ogni tasto? L'integrazione dell'accelerazione ti dà la velocità e l'integrazione della velocità ti dà la posizione. Dato che hai a che fare con brevi distanze e periodi di tempo, probabilmente potresti ignorare i piccoli errori di offset degli accelerometri.
brhans,

1
@cat Ho familiarità con i Launchpad e non ho ancora idea di cosa tu stia parlando. Puoi essere un po 'più utile?
Elliot Alderson,

1
Sì, credo che tu abbia torto. Confronta un accelerometro da $ 1 con un singolo sensore meccanico su ogni tasto. Pensa all'affidabilità da zero parti in movimento (supponendo di fare correttamente le interconnessioni). Avresti bisogno di un microcontrollore ragionevolmente capace e un po 'di esperienza nella scrittura del firmware per riuscirci.
brhans,

1
@jusaca sembra che sia già un prodotto sul mercato: deskthority.net/wiki/Adomax_Flaretech :)
user60561

Risposte:


2

Che ne dici di rilevamento capacitivo? Nastro un po 'di foglio di alluminio sul fondo del tasto, terra la parte inferiore della tastiera e misura il tempo di salita attraverso una resistenza da 100k.

Questo metodo può essere reso quasi arbitrariamente preciso, purché il processore sia abbastanza veloce da discriminare il cambiamento di capacità.

Non ho spiegato molto bene il circuito. Si collega un'uscita digitale alla chiave tramite un resistore di alto valore, si imposta in basso per scaricare qualsiasi carica vagante e quindi si imposta in alto. È inoltre possibile collegare un ingresso digitale direttamente alla chiave. La capacità si caricherà lentamente attraverso il resistore e il tempo impiegato prima dell'accensione dell'ingresso digitale. Questo tempo è uguale alla costante di tempo RC del circuito.


Quindi, dovrei passare AC in esso, non è vero?
Jonas Daverio,

1
@JonasDaverio Non sono sicuro a cosa stai collegando le chiavi, ma sarebbe sufficiente un GPIO per chiave.
0xDBFB7

Non sono sicuro di come dovrei misurare la capacità. Una piastra è collegata a terra e l'altra è collegata a cosa? Una fonte di tensione costante?
Jonas Daverio il

1
Il microcontrollore Teensy LC [1] ha 11 ingressi di rilevamento capacitivo e una libreria C ++ che lo rende facile come chiamare analogReadin Arduino. [1]: pjrc.com/teensy/teensyLC.html
hoosierEE

1
@JonasDaverio scusa, non ho spiegato molto bene il circuito. Si collega un'uscita digitale alla chiave tramite un resistore di alto valore, si imposta in basso per scaricare qualsiasi carica vagante e quindi si imposta in alto. È inoltre possibile collegare un ingresso digitale direttamente alla chiave. La capacità si caricherà lentamente attraverso il resistore e il tempo impiegato prima dell'accensione dell'ingresso digitale. Questo tempo è uguale alla costante di tempo RC del circuito.
0xDBFB7

16

La maggior parte delle tastiere utilizza semplicemente due contatti per tasto, configurati in modo da chiudersi (o aprirsi) in posizioni diverse nella corsa del tasto. Stimano la velocità dal tempo che intercorre tra i due eventi. Anche le tastiere "piano action" ponderate con fantasia usano questo metodo di rilevamento di base.

Cercare di misurare la posizione e / o la velocità suona direttamente come un enorme eccesso.


3
Penso che questo metodo sia insufficiente. Ecco perché: se spingo lentamente il tasto giù per metà del percorso, quindi lo spingo rapidamente fino alla fine, il suono sarebbe forte su un piano reale e questo metodo penserebbe che il tasto sia stato premuto molto lentamente e quindi emettere un suono davvero silenzioso. Inoltre, se voglio ripetere una nota, dovrei lasciare che il tasto ritorni completamente nella sua posizione originale, che non è affatto ciò che farei su un pianoforte reale.
Jonas Daverio,

9
Se un contatto fosse in fondo e l'altro fosse molto vicino in fondo, non si avrebbe questo problema.
George White,

1
Ogni strumento reale ha le sue sfumature e limitazioni. I musicisti sviluppano tecniche per sfruttarle per effetti musicali. Il giocatore imparerà presto a portare a termine la corsa per ottenere l'effetto desiderato.
Transistor

1
@Transistor Sì, certo, ma il mio obiettivo qui è cercare di simulare il più vicino possibile un vero pianoforte. Ci sono già molte tastiere disponibili, ma non ne ho mai trovato uno che lo abbia fatto. Probabilmente ce ne sono alcuni davvero costosi.
Jonas Daverio,

1
Il punto sarebbe avere un output MIDI e la possibilità di avere più tasti (per microtonalità) mantenendo tutta la sensazione di un vero pianoforte. So che questo non sarà mai raggiunto comunque. E voglio anche mantenerlo relativamente economico, ma se non ci riesco, seguirò la soluzione normale.
Jonas Daverio,

9

Devo misurare la posizione di ciascun tasto per sapere quanto dovrebbe essere forte il suono.

Normalmente la velocità della chiave viene calcolata misurando il tempo tra l'interruzione dell'interruttore normalmente chiuso e la realizzazione dell'interruttore discendente normalmente aperto.

schematico

simula questo circuito - Schema creato usando CircuitLab

Figura 1. Un contatto da tastiera break-before-make viene in genere utilizzato per la misurazione della velocità.

Il volume del suono non è solo funzione della velocità dei tasti alla fine della discesa. ... La lunghezza dello spostamento massimo è di circa 2 cm.

In questo caso è necessario disporre meccanicamente il contatto normalmente chiuso in modo che si rompa negli ultimi mm di corsa.

schematico

simula questo circuito

Figura 2. La disposizione di commutazione meccanica.

Mi sembra che la soluzione migliore sarebbe quella di modificare una pedaliera per basso MIDI esistente in base alle proprie esigenze.


Il commento di OP a Dave Tweed:

Penso che questo metodo sia insufficiente. Ecco perché: se spingo lentamente il tasto giù per metà del percorso, quindi lo spingo rapidamente fino alla fine, il suono sarebbe forte su un piano reale e questo metodo penserebbe che il tasto sia stato premuto molto lentamente e quindi emettere un suono davvero silenzioso. Inoltre, se voglio ripetere una nota, dovrei lasciare che il tasto ritorni completamente nella sua posizione originale, che non è affatto ciò che farei su un pianoforte reale.

Ecco perché ho proposto di attivare l'interruttore di commutazione negli ultimi mm di corsa.


Ho risposto al motivo per cui penso che questo sia ancora insufficiente.
Jonas Daverio

Penso che tu abbia letto male quello che ho scritto. Intendevo "Il volume del suono NON è solo funzione della velocità dei tasti alla fine della discesa".
Jonas Daverio,

In effetti, l'energia dipende dalla velocità nel tempo dell'impatto, che è una funzione dell'accelerazione (e del jerk, se non si assume un'accelerazione costante). Tuttavia, sei sicuro che fa molta differenza? Puoi caratterizzare le specifiche che hai o stai cercando? Non so cosa sarebbe. Potrebbe dipendere dall'effetto che dovrebbe avere sull'algoritmo.
vectory

@JonasDaverio Ti riferisci allo scappamento? I pianoforti digitali ottengono questo risultato con un terzo sensore che si attiva leggermente sopra il punto in cui il tasto si chiude (e sopra il sensore che emette la nota). Se il tasto non si alza abbastanza in alto per rilasciare questo 3 ° sensore, il fondo del tasto non emetterà una seconda nota, proprio come un vero pianoforte non rilascia il martello a meno che il tasto non sia sollevato abbastanza in alto.
DKNguyen,

8

Dovresti dare un'occhiata alle tastiere analogiche. Dai un'occhiata a questo video . Questo è solo un esempio di concetto.

Modifica: Inoltre, se gli interruttori ottici non funzionano per te, dai un'occhiata a questo:

inserisci qui la descrizione dell'immagine

C'è una bobina stampata PCB sotto ciascun cappuccio chiave. Quando si preme il pulsante, la bobina misura la variazione di induttanza causata dalla compressione e decompressione della molla del tasto, pertanto è possibile ottenere una lettura abbastanza accurata della posizione dell'interruttore.

Fonte:
Reddit
Imgur


Apparentemente, usano una coppia di LED IR e fotosensore: blog.wooting.nl/flaretech-the-optical-keyboard-switch Tuttavia, non sono sicuro che misurino il ritardo tra l'emissione e il rilevamento o se misurano l'intensità della luce che potrebbe fare attraverso il tunnel.
Jonas Daverio,

L'ho collegato solo per l'esempio della tastiera analogica. Puoi dare un'occhiata a reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… e imgur.com/gallery/ImrH7nO . Non ho molta familiarità con l'argomento, sto solo cercando di aiutarti a spingerti nella giusta direzione :)
Matt

1
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
Blair Fonville,

1
@BlairFonville Abbastanza giusto. Vorrei sintetizzarlo. C'è una bobina stampata PCB sotto ciascun cappuccio chiave. Quando si preme il pulsante, la bobina misura la variazione di induttanza causata dalla compressione e decompressione della molla del tasto, pertanto è possibile ottenere una lettura abbastanza accurata della posizione dell'interruttore.
Matt

7

Se la variabile importante è l'impatto di un "martello" che stai cercando di emulare, considera i sensori piezoelettrici che ti consentono di misurare direttamente questo. Producono un impulso la cui ampiezza dipende dall'impulso d'impatto.


3

Un'opzione potrebbe essere i sensori Hall, che rilevano la forza di un campo magnetico. Esistono diversi tipi di sensori Hall per il rilevamento digitale e analogico, ne hai bisogno uno con analogico. Ad esempio, SI7211 costa circa 0,80 USD.

È inoltre necessario un piccolo magnete sotto ogni tasto. Quando il magnete si avvicina al sensore, il campo magnetico aumenta, aumentando la tensione di uscita del sensore.


1
Apparentemente, lo usano su alcune tastiere musicali. Penso che questa sia una soluzione davvero semplice e buona. Confronterò i costi con la soluzione di 0xDBFB7.
Jonas Daverio,

2

Puoi trattarlo come uno strumento ibrido digitale / analogico posizionando i microfoni [1] all'interno della tastiera, sintonizzati sul suono di colpire i tasti. I segnali dei microfoni aumentano il tradizionale ingresso basato su switch, quindi l'interruttore ti dice quale tasto è premuto e i microfoni ti dicono quanto è stato forte il più recente pressione dei tasti.

2 o più microfoni lungo la lunghezza della tastiera permetterebbero di decodificare un accordo con note alte / basse e note morbide / alte e viceversa.

[1]: continuo a dire "microfono", ma intendo "dispositivo generico di rilevamento delle vibrazioni".


È praticamente come funziona una chitarra elettrica, immagino. Tuttavia, la domanda non menzionava alcuna parte acustica, ma solo chiavi.
vectory

0

Potresti voler ricercare resistori variabili con ritorno a molla, potenziometri con ritorno a molla o sensori di posizione lineari. Ecco un esempio: http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0

Un'altra possibilità potrebbe essere quella di utilizzare un piccolo codificatore rotante (e convertire meccanicamente il movimento della pressa lineare in movimento rotatorio). L'encoder emetterebbe uno o più gruppi di impulsi mentre l'albero ruota. Una frequenza cardiaca maggiore indica una velocità maggiore. La posizione dell'encoder può essere tracciata direttamente se i gruppi di impulsi vengono inviati a una logica digitale aggiuntiva. Ecco un esempio: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrQQQA


0

Se vuoi la massima precisione a un prezzo ragionevole, che ne dici di usare un codificatore lineare , attaccare una striscia codificata in grigio (che stampi tu stesso usando una stampante laser su un foglio trasparente, quindi ritaglia e attaccane uno a ciascuna chiave) - altro dettagli su come funzionano con gli encoder rotativi qui . In questo modo sono necessarie due linee digitali (forse 3 per ottenere un'indicazione accurata della posizione finale) per tasto. Ciò ti consentirà di misurare la velocità con una precisione molto buona e anche la posizione, se pertinente. Il vantaggio di questo è che potresti adattarlo a una vecchia tastiera (anche a una tastiera acustica).

Attenzione: quando ero adolescente (molto tempo fa) mi chiedevo da anni se avrei potuto realizzare una tastiera realistica a un prezzo più basso rispetto all'acquisto. Sembrava improbabile allora e sembra ancora meno probabile ora. Il metodo conveniente è quindi probabilmente "comprare una tastiera sensibile alla velocità e smontarla", il che non è divertente.


1
Sì, non sto fingendo che questo finirà per essere più economico di uno commerciale, ma sto cercando di costruire una disposizione speciale di chiavi che non esiste sul mercato. Per la tua risposta, non sono davvero sicuro di cosa intendi. Intendi creare un encoder lineare da zero? Non capisco qual è il punto della striscia trasparente. E 3 bit sembrano un po 'bassi per codificare con precisione la posizione e dedurne la velocità.
Jonas Daverio,

Un encoder lineare ti darà la velocità con solo 2 bit (vedi link) ad una risoluzione eccezionale (potresti raggiungere molto facilmente la posizione a 256 ° della distanza di viaggio). Sincronizzando il periodo tra le transizioni dei bit in codice grigio, si otterrà un'immagine molto precisa della velocità in diverse fasi di spostamento della chiave. Il terzo bit fornisce un preciso segnale di "colpi di martello". Stavo suggerendo di utilizzare un lettore ottico di encoder lineare con il proprio "nastro" - striscia trasparente.
circa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.