Questions tagged «real-time»

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