键盘使用哪种线性传感器?[关闭]


8

我正在尝试制作一个力度敏感的键盘来播放音乐。

我必须测量每个键的位置才能知道声音应该有多响。

声音的音量是下降结束时琴键速度的函数。我知道可以通过积分从速度中恢复位置。

什么是最便宜,最简单但仍相当精确的方法呢?

我不完全了解上下文中的“合理精确”的含义。我必须测试一下。

最大位移的长度约为2厘米。

编辑:并非像某些答案所暗示的那样,响度不是按键平均速度的函数。

EDIT2:响度是锤击弦时锤速度的函数,但关键是直到锤的路径结束才推动锤。这真的就像是在墙上扔一个球:球在碰到墙之前一瞬间离开手。


4
您可以在按键下方将IR二极管和光电二极管彼此相邻使用,该光电二极管测量反射光。键的位置越低,反射到光电二极管的光越多。然后使用跨阻放大器将光电流转换为电压。您将必须四处逛逛,看看什么电压或电压变化对应于哪个音量。
jusaca

您是否考虑过在每个按键上放置一个加速度计?积分加速度给您速度,而积分速度给您位置。由于您要处理的距离和时间段较短,因此您可能会忽略加速度计的小偏移误差。
勃朗斯

1
@cat我熟悉Launchpads,但我仍然不知道您在说什么。您能提供些帮助吗?
Elliot Alderson

1
是的,我相信你错了。将$ 1的加速度计与每个按键上的单个机械传感器进行比较。考虑零移动部件的可靠性(假设您正确进行了互连)。但是,您将需要功能强大的微控制器和编写固件的经验来将其推出。
勃朗斯

1
@jusaca好像已经是市场上的产品:deskthority.net/wiki/Adomax_Flaretech :)
user60561

Answers:


2

电容感应怎么样?用铝箔纸包住按键的底部,将键盘的底部接地,然后通过100k电阻测量上升时间。

只要您的处理器足够快以区分电容变化,就可以使这种方法几乎任意精确。

我没有很好地解释电路。您可以通过一个高阻值电阻将数字输出连接到按键,将其设置为低电平以释放任何杂散电荷,然后将其设置为高电平。您还可以将数字输入直接连接到按键。电容将通过电阻缓慢充电,您需要花费时间多长时间才能打开数字输入。该时间等于电路的RC时间常数。


所以,我必须通过AC,不是吗?
乔纳斯·达维里奥

1
@JonasDaverio我不确定您将按键连接到什么,但是每个按键一个GPIO就足够了。
0xDBFB7

我不确定如何测量电容。一块板接地,另一块板接地?恒定电压源?
乔纳斯·达维里奥19'Mar

1
Teensy LC微控制器[1]具有11个电容式感应输入和一个C ++库,使其与analogRead在Arduino中调用一样容易。[1]:pjrc.com/teensy/teensyLC.html
hoosierEE,

1
@JonasDaverio对不起,我没有很好地解释电路。您可以通过一个高阻值电阻将数字输出连接到按键,将其设置为低电平以释放任何杂散电荷,然后将其设置为高电平。您还可以将数字输入直接连接到按键。电容将通过电阻缓慢充电,您需要花费时间多长时间才能打开数字输入。该时间等于电路的RC时间常数。
0xDBFB7

16

大多数键盘在每个按键上仅使用两个触点,其配置使其在按键行程中的不同位置闭合(或打开)。他们从两个事件之间经过的时间估算速度。甚至是花式加权的“钢琴动作”键盘也使用这种基本的感应方法。

试图直接测量位置和/或速度听起来像是过大的杀伤力。


3
我认为这种方法是不够的。原因是:如果我缓慢将琴键向下推到一半,然后快速将琴键向下推到尽头,则在真实的钢琴上声音会很大,这种方法会认为琴键被按下得很慢,因此会输出真的很安静。另外,如果我想重复一个音符,则必须让琴键完全回到其原始位置,这根本不是我在真正的钢琴上所能做的。
乔纳斯·达维里奥

9
如果一个联系人位于底部,而另一个联系人位于底部附近,则不会出现此问题。
乔治白

1
每个真实的乐器都有其细微差别和局限性。音乐家开发出可以利用这些技术来产生音乐效果的技术。玩家很快就会学会进行到笔触的底部以获得所需的效果。
晶体管

1
@Transistor是的,的确如此,但是我在这里的目标是尝试模拟尽可能接近真实的钢琴。已经有很多可用的键盘,但是我从来没有找到能做到这一点的键盘。不过,可能有一些真的很贵。
乔纳斯·达维里奥

1
关键是要有一个中音输出,并有可能拥有更多琴键(用于微调),同时保留真实钢琴的所有感官。我知道这绝对不会实现。而且我也想保持它相对便宜,但如果不能,我将坚持常规解决方案。
乔纳斯·达维里奥

9

我必须测量每个键的位置才能知道声音应该有多响。

通常,通过测量常闭向上开关断开与常开向下开关闭合之间的时间来计算琴键速度。

原理图

模拟此电路 –使用CircuitLab创建的原理图

图1.先断后通键盘触点通常用于速度测量。

声音的音量不仅是下降结束时琴键速度的函数。...最大位移的长度约为2厘米。

在这种情况下,您需要机械地布置常闭触点,以使其在行程的最后几毫米处破裂。

原理图

模拟该电路

图2.机械开关装置。

在我看来,最好的选择是修改一个现有的MIDI低音踏板以适合您的目的。


OP对Dave Tweed的评论:

我认为这种方法是不够的。原因是:如果我缓慢将琴键向下推到一半,然后快速将琴键向下推到尽头,则在真实的钢琴上声音会很大,这种方法会认为琴键被按下得很慢,因此会输出真的很安静。另外,如果我想重复一个音符,则必须让琴键完全回到其原始位置,这根本不是我在真正的钢琴上所能做的。

因此,我建议在行程的最后几毫米内激活转换开关。


我回覆了为什么我认为这仍然不够。
乔纳斯·达维里奥

我想你误解了我写的东西。我的意思是“声音的音量不仅是下降结束时琴键速度的函数。”
乔纳斯·达维里奥

的确,能量取决于撞击时间长度上的速度,这是加速度的函数(如果不假定恒定的加速度,则是加速度的函数)。但是,确定这有很大的不同吗?您能描述您所拥有或正在寻找的细节吗?我不知道那会是什么。这可能取决于它对算法的影响。
矢量

@JonasDaverio您是指擒纵系统吗?数码钢琴通过第三个传感器来实现此目的,该传感器会在琴键触底的位置上方(以及发声音符的传感器上方)上方触发。如果琴键的音高不足以释放第三个传感器,则触底琴音将不会发出第二个音符,就像真实的钢琴不会释放琴槌,除非将琴键升高到足够高的程度。
DKNguyen

8

您应该看看模拟键盘。看一下这个视频。这只是概念的一个例子。

编辑:另外,如果光学开关对您不起作用,请查看以下内容:

在此处输入图片说明

每个键帽下方都有一个PCB印刷线圈。当您按下按钮线圈时,将测量由键弹簧压缩和减压引起的电感变化,因此,您可以获得相当准确的开关位置读数。

资料来源:
Reddit
Imgur


显然,他们使用了一对IR-LED和光电传感器:blog.wooting.nl/flaretech-the-optical-keyboard-switch但是,我不确定它们是否测量发射和检测之间的延迟或它们是否测量穿过隧道的光线强度。
乔纳斯·达维里奥

我仅以模拟键盘为例进行链接。你可以看看reddit.com/r/MechanicalKeyboards/comments/9ii6gw/...imgur.com/gallery/ImrH7nO。我对这个主题不太熟悉,只是试图帮助您朝正确的方向发展:)
Matt

1
虽然此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会失效。- 评论
布莱尔·丰维尔

1
@BlairFonville足够公平。让我总结一下。每个键帽下方都有一个PCB印刷线圈。当您按下按钮线圈时,将测量由键弹簧压缩和减压引起的电感变化,因此,您可以获得相当准确的开关位置读数。
马特

7

如果重要的变量是您要模拟的“锤子”的影响,请考虑使您能够直接测量的压电传感器。它们产生一个脉冲,其幅度取决于冲击脉冲。


3

一种选择是霍尔传感器,它可以感应磁场强度。用于数字和模拟感测的霍尔传感器有不同类型,您需要一种具有模拟功能的霍尔传感器。例如,SI7211的成本约为0.80美元。

您还需要在每个按键下方放置一个小磁铁。当磁体靠近传感器时,磁场会增加,从而增加传感器的输出电压。


1
显然,他们在某些音乐键盘上使用它。我认为这是一个非常简单且不错的解决方案。我将成本与0xDBFB7的解决方案进行比较。
乔纳斯·达维里奥19'Mar

2

您可以通过将麦克风[1]放在键盘内部,将其调整为敲击按键的声音,将其视为数字/模拟混合乐器。麦克风的信号增强了传统的基于开关的输入,因此开关会告诉您按下了哪个键,而麦克风则告诉您最近的按键有多响

沿键盘长度的2个或更多麦克风可以解码具有高/低音和柔和/高音的和弦,反之亦然。

[1]:我一直说“麦克风”,但我的意思是“通用振动感应装置”。


我猜这就是电子吉他的工作原理。但是,这个问题没有提到任何声学部件,只是按键。
矢量

0

您可能需要研究弹簧复位可变电阻器,弹簧复位电位计或线性位置传感器。这是一个示例:http : //ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0

另一种可能是使用小型旋转编码器(并将机械按键线性运动转换为旋转运动)。当轴旋转时,编码器将输出一组或多组脉冲。较高的脉冲频率表示较高的压力机速度。如果将脉冲组发送到其他数字逻辑,则可以直接跟踪编码器的位置。这是一个示例部分:https : //www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEeNCh3JAAKuEAQ


0

如果您想以合理的价格获得超高精度,那么如何使用线性编码器,附加格雷码条带(您可以使用激光打印机在透明纸上进行打印,然后将其切割并附加到每个键上)-更多他们在旋转编码器是如何工作的细节在这里。这样,每个键需要两条(也许是3条,这样您才能准确地知道终点位置)数字线路。如果需要的话,这将使您能够非常准确地测量速度,甚至可以测量位置。这样做的好处是您可以将其改装为旧键盘(甚至是原声键盘)。

警告:我十几岁的时候(很久以前),我一直在想,是否可以比购买它们更便宜地制造出逼真的键盘。那时似乎不太可能,现在看来可能性很小。因此,具有成本效益的方法可能是“购买力度感应键盘并将其拆开”,这很无聊。


1
是的,我不假装这样做最终不会比商业化的便宜,但我正在尝试构建一种特殊的密钥安排,这种密钥在市场上不存在。对于您的答案,我不太确定您的意思。您是从头开始制造线性编码器吗?我不明白透明带的意义。3位似乎有点低,无法精确编码位置并从中推断出速度。
乔纳斯·达维里奥19'Mar

线性编码器将只为您提供2位的速度(请参见链接),从而获得较高的分辨率(您可以很容易地将位置定位到行进距离的256分之一)。通过对格雷码位转换之间的时间进行计时,您将获得钥匙在不同行程阶段的速度的非常精确的图像。第三位给您准确的“锤击弦”信号。我建议您将线性编码器光学阅读器与自己的“胶带”(透明带)一起使用。
abligh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.