Qual sensor linear para um teclado? [fechadas]

8

Estou tentando criar um teclado sensível à velocidade para tocar música.

Preciso medir a posição de cada tecla para saber quão alto o som deve ser.

O volume do som é uma função da velocidade das teclas no final da descida. Eu sei que a posição pode ser recuperada da velocidade integrando-a.

Qual seria a maneira mais barata e fácil, mas ainda razoavelmente precisa, de fazer isso?

Não sei exatamente o que "razoavelmente preciso" significaria no contexto. Vou ter que testar.

O comprimento do deslocamento máximo é de cerca de 2 cm.

EDIT: não como algumas respostas parecem sugerir, o volume NÃO é função da velocidade média da tecla.

EDIT2: O volume é função da velocidade do martelo no momento em que atinge a corda, mas a chave não está pressionando o martelo até o final de seu caminho. É realmente como jogar uma bola na parede: a bola sai da mão em um momento, antes de bater na parede.

Jonas Daverio
fonte
4
Você pode usar um diodo IR e um fotodiodo próximos um do outro abaixo da tecla, o fotodiodo medindo a luz refletida. Quanto mais baixa a posição da tecla, mais luz refletida atinge o fotodiodo. Em seguida, converta a fotocorrente em uma tensão usando um amplificador de transimpedância. Você terá que brincar para ver qual voltagem ou mudança de voltagem corresponde a qual volume.
jusaca
Você já pensou em colocar um acelerômetro em cada tecla? A integração da aceleração fornece velocidade, e a velocidade de integração fornece posição. Como você está lidando com distâncias curtas e períodos de tempo, provavelmente você pode ignorar os pequenos erros de deslocamento dos acelerômetros.
brhans
1
@cat Estou familiarizado com o Launchpads e ainda não faço ideia do que você está falando. Você pode ser um pouco mais útil?
Elliot Alderson
1
Sim, eu acredito que você está errado. Compare um acelerômetro de US $ 1 com um sensor mecânico individual em cada tecla. Pense na confiabilidade de zero partes móveis (supondo que você faça as interconexões corretamente). Você precisaria de um microcontrolador com capacidade razoável e um pouco de experiência em escrever firmware para executá-lo.
precisa saber é
1
@jusaca olhares como que já é um produto no mercado: deskthority.net/wiki/Adomax_Flaretech :)
user60561

Respostas:

2

E quanto à detecção capacitiva? Prenda um pouco de papel alumínio na parte inferior da tecla, aterre a parte inferior do teclado e meça o tempo de subida através de um resistor de 100k.

Esse método pode ser feito quase arbitrariamente preciso, desde que o seu processador seja rápido o suficiente para discriminar a alteração na capacitância.

Não expliquei muito bem o circuito. Você conecta uma saída digital à chave por meio de um resistor de alto valor, configura-o baixo para descarregar qualquer carga dispersa e, em seguida, configura-o alto. Você também conecta uma entrada digital diretamente à tecla. A capacitância será carregada lentamente através do resistor e você tempo quanto tempo leva para a entrada digital ser ligada. Este tempo é igual à constante de tempo RC do circuito.

0xDBFB7
fonte
Então, eu teria que passar AC nele, não teria?
Jonas Daverio
1
@JonasDaverio Não sei ao que você está conectando as chaves, mas um GPIO por chave seria suficiente.
0xDBFB7
Não tenho certeza de como devo medir a capacitância. Uma placa está conectada ao terra e a outra está conectada a quê? Uma fonte de tensão constante?
Jonas Daverio
1
O microcontrolador Teensy LC [1] possui 11 entradas capacitivas de detecção e uma biblioteca C ++ que facilita a chamada analogReadno Arduino. [1]: pjrc.com/teensy/teensyLC.html
hoosierEE
1
@JonasDaverio desculpe, eu não expliquei o circuito muito bem. Você conecta uma saída digital à chave por meio de um resistor de alto valor, configura-o baixo para descarregar qualquer carga dispersa e, em seguida, configura-o alto. Você também conecta uma entrada digital diretamente à tecla. A capacitância será carregada lentamente através do resistor e você tempo quanto tempo leva para a entrada digital ser ligada. Este tempo é igual à constante de tempo RC do circuito.
0xDBFB7
16

A maioria dos teclados simplesmente usa dois contatos por tecla, configurados para fechar (ou abrir) em diferentes posições no percurso da tecla. Eles estimam a velocidade a partir do tempo decorrido entre os dois eventos. Até os teclados sofisticados de "ação de piano" usam esse método básico de detecção.

Tentar medir a posição e / ou a velocidade diretamente soa como um exagero maciço.

Dave Tweed
fonte
3
Eu acho que esse método é insuficiente. Eis o porquê: se eu pressionar a tecla lentamente pela metade do caminho e depois pressioná-la rapidamente até o fim, o som será alto em um piano real e esse método pensará que a tecla foi pressionada muito lentamente e, portanto, emitirá um som. som muito calmo. Além disso, se eu quiser repetir uma nota, teria que deixar a tecla retornar completamente à sua posição original, o que não é o que eu faria em um piano real.
Jonas Daverio
9
Se um contato estivesse na parte inferior e o outro estivesse muito perto da parte inferior, você não teria esse problema.
George White
1
Todo instrumento real tem suas nuances e limitações. Músicos desenvolvem técnicas para explorá-las para efeito musical. Em breve, o jogador aprenderá a avançar até o final do curso para obter o efeito desejado.
Transistor
1
@Transistor Sim, de fato, mas meu objetivo aqui é tentar simular o mais próximo possível de um piano real. Já existem muitos teclados disponíveis, mas nunca encontrei um que fizesse isso. Provavelmente, existem alguns realmente caros.
Jonas Daverio
1
O objetivo seria ter uma saída midi e a possibilidade de ter mais teclas (para microtonalidade), mantendo toda a sensação de um piano real. Eu sei que isso nunca será alcançado de qualquer maneira. E também quero mantê-lo relativamente barato, mas se não puder, continuarei com a solução regular.
Jonas Daverio
9

Preciso medir a posição de cada tecla para saber quão alto o som deve ser.

Normalmente, a velocidade da chave é calculada medindo o tempo entre a interrupção do interruptor ascendente normalmente fechada e a fabricação do interruptor descendente normalmente aberto.

esquemático

simular este circuito - esquemático criado usando o CircuitLab

Figura 1. Um contato do teclado break-before-make é normalmente usado para medição de velocidade.

O volume do som não é apenas função da velocidade das teclas no final da descida. ... O comprimento do deslocamento máximo é de cerca de 2 cm.

Nesse caso, é necessário organizar mecanicamente o contato normalmente fechado para que ele quebre nos últimos mm de curso.

esquemático

simule este circuito

Figura 2. O arranjo de comutação mecânica.

Parece-me que sua melhor aposta seria modificar uma pedaleira de baixo MIDI existente para se adequar aos seus propósitos.


Comentário do OP a Dave Tweed:

Eu acho que esse método é insuficiente. Eis o porquê: se eu pressionar a tecla lentamente pela metade do caminho e depois pressioná-la rapidamente até o fim, o som será alto em um piano real e esse método pensará que a tecla foi pressionada muito lentamente e, portanto, emitirá um som. som muito calmo. Além disso, se eu quiser repetir uma nota, teria que deixar a tecla retornar completamente à sua posição original, o que não é o que eu faria em um piano real.

Foi por isso que propus ativar a chave de comutação nos últimos mm de curso.

Transistor
fonte
Respondi por que acho que isso ainda é insuficiente.
Jonas Daverio
Eu acho que você leu errado o que escrevi. Eu quis dizer "O volume do som NÃO é apenas função da velocidade das teclas no final da descida".
Jonas Daverio
De fato, a energia depende da velocidade ao longo do tempo do impacto, que é uma função da aceleração (e o empurrão, se você não assume aceleração constante). No entanto, tem certeza de que faz muita diferença? Você pode caracterizar as especificidades que possui ou procura? Não sei o que seria isso. Pode depender do efeito que deveria ter no algoritmo.
vectory 25/03/19
@JonasDaverio Você está se referindo a fuga? Os pianos digitais conseguem isso com um terceiro sensor que dispara um pouco acima de onde a tecla fica por baixo (e acima do sensor que soa a nota). Se a tecla não for alta o suficiente para liberar esse terceiro sensor, a parte inferior da tecla não soará uma segunda nota, assim como um piano de verdade não libera o martelo, a menos que a tecla seja elevada o suficiente.
DKNguyen 25/03/19
8

Você deve dar uma olhada nos teclados analógicos. Dê uma olhada neste vídeo . Este é apenas um exemplo de conceito.

Edit: Além disso, se os switches ópticos não estiverem funcionando para você, dê uma olhada no seguinte:

insira a descrição da imagem aqui

Há uma bobina impressa em PCB sob cada tampa de chave. À medida que você pressiona a bobina do botão, mede a alteração da indutância causada pela compressão e descompressão da mola de chave, portanto, você pode obter uma leitura bastante precisa da posição do interruptor.

Fonte:
Reddit
Imgur

Matt
fonte
Aparentemente, eles usam um par de LED-IR e fotossensor: blog.wooting.nl/flaretech-the-optical-keyboard-switch No entanto, não tenho certeza se eles medem o atraso entre a emissão e a detecção ou se medem a intensidade da luz que poderia atravessar o túnel.
Jonas Daverio
Liguei isso apenas para o exemplo do teclado analógico. Você pode dar uma olhada em reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… e imgur.com/gallery/ImrH7nO . I'am não muito familiarizado com o assunto, apenas tentando ajudar a empurrá-lo em direção certa :)
Matt
1
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Da avaliação
Blair Fonville /
1
@BlairFonville Fair bastante. Deixe-me resumir. Há uma bobina impressa em PCB sob cada tampa de chave. À medida que você pressiona a bobina do botão, mede a alteração da indutância causada pela compressão e descompressão da mola de chave, portanto, você pode obter uma leitura bastante precisa da posição do interruptor.
Matt
7

Se a variável importante é o impacto de um "martelo" que você está tentando imitar, considere sensores piezoelétricos que permitem medir isso diretamente. Eles produzem um pulso cuja amplitude depende do impulso do impacto.

pjc50
fonte
3

Uma opção poderia ser os sensores Hall, que detectam a força de um campo magnético. Existem diferentes tipos de sensores Hall para detecção digital e analógica, você precisa de um que possua analógico. Por exemplo, o SI7211 custa cerca de 0,80 USD.

Você também precisa de um pequeno ímã embaixo de cada tecla. Quando o ímã se aproxima do sensor, o campo magnético aumenta, o que aumenta a tensão de saída do sensor.

jpa
fonte
1
Aparentemente, eles o usam em alguns teclados de música. Eu acho que essa é uma solução realmente simples e boa. Vou comparar os custos com a solução do 0xDBFB7.
Jonas Daverio
2

Você pode tratá-lo como um instrumento digital / analógico híbrido, colocando microfones [1] dentro do teclado, sintonizados ao som do toque nas teclas. Os sinais dos microfones aumentam a entrada tradicional baseada em comutador, de modo que o comutador informa qual tecla foi pressionada e os microfones informam quão alto foi o pressionamento de tecla mais recente.

Dois ou mais microfones ao longo do comprimento do teclado permitiriam decodificar um acorde com notas altas / baixas e notas suaves / altas e vice-versa.

[1]: Eu continuo dizendo "microfone", mas quero dizer "dispositivo genérico de detecção de vibração".

hoosierEE
fonte
É assim que funciona uma guitarra elétrica, eu acho. No entanto, a pergunta não mencionou nenhuma parte acústica, apenas teclas.
vectory 25/03/19
0

Você pode pesquisar resistores variáveis ​​de retorno de mola, potenciômetros de retorno de mola ou sensores de posição lineares. Aqui está um exemplo: http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0

Outra possibilidade pode ser o uso de um pequeno codificador rotativo (e converter mecanicamente o movimento de pressionar a tecla linear em movimento rotativo). O codificador emitirá um ou mais conjuntos de pulsos à medida que o eixo gira. Uma taxa de pulso mais alta indicaria uma pressão de velocidade mais alta. A posição do codificador pode ser rastreada diretamente se os grupos de pulsos forem enviados para uma lógica digital adicional. Aqui está uma parte de exemplo: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSEA4AWE_YAWY

Nedd
fonte
0

Se você deseja superprecisão a um preço razoável, que tal usar um codificador linear , anexar uma fita codificada em cinza (que você imprime usando uma impressora a laser em uma folha transparente, cortar e anexar uma a cada tecla) - mais detalhes de como eles funcionam em codificadores rotativos aqui . Dessa forma, você precisa de duas linhas digitais (talvez 3 para obter uma indicação precisa da posição final) por tecla. Isso permitirá que você meça a velocidade com muito boa precisão e posição uniforme, se isso for relevante. A vantagem disso é que você pode adaptá-lo a um teclado antigo (mesmo um teclado acústico).

Cuidado: quando eu era adolescente (há muito tempo), eu me perguntava há séculos se conseguiria fazer um teclado realista mais barato do que comprá-lo. Parecia improvável na época e parece ainda menos provável agora. O método econômico é, portanto, provavelmente "compre um teclado sensível à velocidade e desmonte-o", o que não é divertido.

abligh
fonte
1
Sim, não estou fingindo que isso acabará sendo mais barato que o comercial, mas estou tentando construir um arranjo especial de chaves que não existe no mercado. Para sua resposta, não tenho muita certeza do que você quer dizer. Você quer dizer criar um codificador linear a partir do zero? Não entendo qual é o sentido da faixa transparente. E 3 bits parece um pouco baixo para codificar com precisão a posição e deduzir a velocidade dela.
Jonas Daverio
Um codificador linear fornecerá velocidade com apenas 2 bits (consulte os links) para obter uma ótima resolução (você pode obter posição facilmente até 256th da distância de viagem). Cronometrando o período entre as transições de bit de código cinza, você obterá uma imagem muito precisa da velocidade em diferentes estágios do deslocamento da tecla. O 3º bit fornece um sinal preciso de 'golpes de martelo'. Sugeri que você usasse um leitor óptico de codificador linear com sua própria fita transparente - fita.
abligh 25/03/19