我正在尝试构建一个类似 MIDI 的控制器,它的琴颈像吉他。在那个脖子上,有一个巨大的压力传感器矩阵。控制器将模拟 3 个字符串。
它的工作原理是:有3条长条双面铜带(宽0.5厘米,与脖子一样长)连接到电源(可能是3.3V或5V,暂时无所谓)。在这些条带上是一层 Velostat,它会根据压力改变电阻率。在 velostat 的顶部将是另一层铜带行或单元,连接到某物,通过 velostat 层吐出电压读数。由于脖子长约40厘米,至少有80行。
如果您将底部的 3 条铜带想象成沿着颈部的图表的列,则传感器将是单元格或行,具体取决于测量方法(我认为也可以复用列,然后可能有行。)有一些特殊条件可能会使这更容易:因为这是一个类似吉他的控制器,所以不需要测量每个交互!只有最靠近控制器主体的触摸才重要。8位的分辨率也应该足够准确。无论如何,255 的压力水平可能超过了所需的水平。
现在困难的部分:
测量需要足够实时以检测锤击等(不知道需要多高的采样率 - 估计为几 kHz 以获得良好的测量和可玩性)并且控制器的数字输出应该是MIDI(在 3 个单独的通道上 - 每个字符串一个)或可以用 Raspberry Pi 处理的数字信号。
现在由于我的知识非常有限,我想不出合适的工具来完成这项工作。我所知道的是:这是可能的。有一个相似但不同的控制器使用非常相似的技术(我实际上对其进行了逆向工程,直到我注意到他们拥有专利并且关于他们如何做到这一点的信息并不像我想象的那样神秘),它被称为 ROLI海岸。
TL;博士:
大约 240 个传感器
可以分成80个一组,由同一条线路供电
这是一个实时应用程序,我需要在每个传感器被触摸时获取压力(某些条件适用,见上文)
在此先感谢,我知道要阅读的内容很多。我很感谢您的任何建议,如果您能帮助我完成我打算制作的可怕烂摊子,我将非常高兴!
到目前为止我想到的事情:
多路复用行和列,使用 MCP3008 或更大的 ADC 读取每个单元并链接(菊花链或树状)ATmegas,这只会将位置方面的最低交互推到最终信号,但根据我的计算,这可能会受到瓶颈通信开销。还有一个早期的型号包括带状电位器,我已经放弃了,因为设计很糟糕(几次尝试,不够酷)。
编辑/更新:
感谢您迄今为止提出的好建议!多亏了他们,我现在能够更清楚地表达我的问题:
我有一个 80 行 * 3 列压力传感器的矩阵。当人与传感器矩阵交互时,附近的几个传感器会接收到触摸,但只能沿着一列。柱是机械分离的。传感器的电阻在 100 Ohm 和 1 kOhm 之间。所有这些传感器都需要以 8 位的深度进行读取、处理,并且需要以至少 1 kHz 的速率发送结果。因此,单个读取/处理需要不到一毫秒的时间。每列的最终输出需要是:float32 为 4 个字节,uint8 为 1 个字节。float32 将指示第一次交互沿列的平均位置。交互被定义为压力高于某个阈值的连续传感器集群。这是处理进入混合的地方:该列将向下遍历,直到读数超过阈值。这将被视为交互的开始。每个传感器的压力和位置都会被记住,直到第一个传感器低于阈值,最多(可能)4 个连续传感器。在记录的交互的所有传感器中,只有两个传感器将被处理 - 一个读取最高压力(最低电阻)的传感器,以及直接在其上方或下方的最高传感器。浮点位置是通过对两个传感器位置的压力加权来计算的。交互的整体压力将只是将两个压力夹在 0 到 255 之间的加法(将 unit8 的两个压力添加到 uint16 中并除以 2 而不四舍五入,丢弃不需要的位 - 这应该很快)。这需要发生在每一列。然后,15 字节大小的结果将通过 SPI 发送到充当合成器的小型计算机 (Raspberry Pi B3)。我没有设置传输方法。如果 SPI 不是适合这项工作的工具,我愿意采用 Raspberry Pi 可以处理的任何通信方法。由于这是一个音乐交互应用程序,延迟是至关重要的。
我的确切问题是:可以用一个微控制器解决这个问题而不会破坏银行吗?我买不起价值几百美元的 IC 来做一个爱好项目。你会推荐什么硬件?有没有我需要警惕的不明显的警告?
到目前为止,我从答案中得出的方法是单独为每列供电,然后通过 SPI 连接到 Arduino 的 5 个 16 通道 ADC (ADS7961) 读出行。我担心这可能不是最简单/最便宜的方法,或者速度不够快,无法达到 >1 kHz 的速率。
免责声明:在电气工程方面,我通常是一名理论化学家和一个糟糕的业余爱好者,我所知道的一切都是自学的,没有任何专业背景(这反过来也是我向更有知识的人寻求帮助的原因)。不过,我确实知道我在软件方面的方式。任何关于软件的事情,我会在足够的时间里弄清楚。另外,我是德国人,所以请原谅偶尔的语法缺陷。