用于区分钉板上不同类型钉子的传感器

电器工程 传感器
2022-01-17 01:33:01

我有一个项目,它本质上是一个带有 4 种不同类型的钉子的钉板。每个钉子都适合每个孔,但是当插入一个钉子时,我想以数字方式记录它的类型和位置。共有120个钉子,每种类型30个。板子本身是方格,孔间距最多为40mm。钉子和孔的尺寸和设计尚未确定。

我能想到的最简单和最便宜的想法是在每个孔的底部都有一个开关和一个单独的输入法来声明类型:例如。侧面某处有 4 个按钮,您可以在之后按下这些按钮来告诉系统 A 型刚刚插入。这对用户界面有很大的影响,我想避免这种影响。

我可以将孔设计为不对称的,将 4 根电线切换到底部,并让每个钉子有 4 个插脚,其中一个比其他的长。不过,这意味着将许多非常微小的东西焊接在一起,并得到更精致的最终产品。

成本也是一个问题,因为它是一个爱好项目。

有什么传感器可以用来做这个吗?

编辑补充说:我可能一开始就应该这么说,但我试图稍微概括这个问题以使其更有用:该项目是一个棋盘游戏。这个想法是让多达 4 名玩家在棋盘上占领领土,并让棋盘本身实时处理所有必要的簿记。

4个回答

使用多极插头。

在此处输入图像描述

图 1. Wish.com 的随机 4 极 3.5 毫米插头。

示意图

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

图 2. 插头可以通过以二进制代码模式将尖端、环 1、环 2 与套筒引脚短路来进行编码。

您不能使用代码 0,因为这与未插入插头相同。这给您留下了七种可能性,而您只需要四种。对插头进行颜色编码以指示其数值对我来说似乎是个好主意。

示意图

模拟这个电路

图 3. 防止交叉馈送。1N4148 二极管应该足够小,可以将两个插入一个插头。

正如@AIBreveleri 所指出的,在插头中添加二极管允许使用键盘扫描解决方案。在这种类型的布置中,当按下多个键时,二极管可以防止交叉馈电。同样的安排在这里也适用。

在此处输入图像描述

图 4. 键盘矩阵示例。图片来源:金门网

有关说明,请参阅链接文章。

使用双触点插头,如 3.5 毫米单声道 TR(尖端环),或 6.5 毫米(如果您有空间并且更喜欢更易于操作的挂钩)。在每个插头的尖端和环之间连接不同的电阻值,并设置通过钉板中每个插孔的分压器,通过多路复用器连接到 MCU 的 ADC 引脚。

例如,在分压器中使用固定的 10K 电阻器,在插头中使用 0 ohm、5.1K ohm、15K ohm 和 91K ohm 选项,您将获得大约 0.0、0.3、0.6 或 0.9 的参考电压。 ADC 引脚,应该便于 MCU 区分。

与机械和光学解决方案不同,这不需要插头的任何特定方向。您可以使用现成的插头和插孔。不利的一面是,插入和拔出插头需要相当大的力。

最大的挑战是设计多路复用电路以允许从单个控制器扫描所有插孔。

grahamj42 建议:

在插头中串联1-4个二极管并检测电压降如何?然后,您可以取消矩阵中的二极管。

这也可以。使用 3.3V 参考 ADC 和 0.7V 压降的二极管,您会看到 2.6、1.9、1.2 和 0.5V,每一步接近满量程的 20%。不过,即使包括矩阵中的节省,总零件也会更多:300 个二极管而不是 150 个电阻 + 120 个二极管(假设板上有 120 个孔。)

我预计最便宜的选择是将您已经拥有的手机指向板上并使用彩色钉子以及编写一些图像处理软件。

由于手机是一个“传感器”,我认为这个解决方案符合规范。

以下是一个建议,使用下面的智能钉板作为示例说明:

智能钉板

(1) “加载” 4 种不同重量的钉子,例如,类型 1 钉子 = 10 克,类型 2 = 20 克,

(2) 购买 102 个便宜的重量传感器(5 个 5 美元,更多详情见下文附录 A),

压力传感器

(3)将每个传感器放在孔的底部,并与一个定值电阻连接,形成一个分压器。

(4) 现在,当插入钉子时,重量会改变重量传感器的电阻,从而改变分压器的电压,

(5) Arduino ADC 引脚可用于测量电压,从而知道插入了哪种类型的钉子。

(6) 确定挂钩位置的方法有很多种,简述如下:

(6.1) 按下或释放按键的矩阵键盘

常用的方法是使用 12 x 12 GPIO 引脚作为矩阵接线。只要按下一个键,就会通知 Arduino。Arduino 将逐行“扫描”按键,如果按下按键的行,Arduino 将扫描按键。

(6.2) 带有不同压力等级的按键的矩阵键盘

该方法类似于上面的数字开/关键盘。但现在 Arduino 使用其 ADC(模数转换)引脚来测量按键的压力水平。

(7) 矩阵键盘和多路复用 ADC 器件的组合

由于 Arduino 或 Raspberry 没有足够的 GPIO/ADC 引脚可供使用,我们可以使用 16 通道 GPIO 扩展器。两个 MCP23017 可以组成一个 16 x 16 矩阵,因此可以扫描多达 256 个按键。

Arduino 的 ADC 引脚只有 8 位分辨率。如果使用 10/12/16/24 位分辨率 ADC(一个 10 位 ADC 可以检测 2^10 = 1024 个值或 0.1%),很容易区分只有小于 1 克差异的钉子。因此,如果 120 个钉子的重量差异很小,人类无法察觉,那么 Arduino 实际上可以分辨出 120 个孔/钉子中的哪一个被插入(但在这种情况下,当然是哪个孔,而不是我们需要知道哪个钉子。

(8) ADC 和模拟多路复用器的组合。

流行但便宜的 10/12/16 位 ADC,例如 MCP3008、MCP3208、ADS1115,有 8 个通道。还有单向/双向模拟多路复用器,使矩阵布线大大简化


参考

(1)高精度电阻式称重/压力传感器 - 3.15 美元(5 件)

(2)未来派钉板,将无聊的康复变成游戏 - Rapael,2018 年 1 月 17 日

(3)智能钉板视频 - Rapael,2018 年 1 月 17 日

(4)带有 24 个彩色圆柱钉和可拆卸内钉的钉板有助于儿童感知运动发展和手指灵活性。

(5) Haljia 5Pcs BX120-3AA 高精度电阻应变计 Strain Gauge GAGE 全桥用于压力称重传感器

(6) Adafruit TCS34725 RGB 传感器演示 - 2018mar25

(7) Adafruit 颜色传感器

(8)速卖通霍尔效应 IC 和模块目录(A3144E、SS49E 等)

(9)速卖通小磁铁目录

(10) SS49e 磁阻线性霍尔效应传感器数据表 - 霍尼韦尔

(11) Allegro A3144 数据表

(12) TCS230 TCS3200 颜色识别模块 颜色传感器模块 - US$4.6

(13) MCP3008/MCP3208 10/12 位 ADC 测试和编程 - EESE, tlfong01


附录

附录 A - 压力传感器规格

HALJIA 5Pcs BX120-3AA 高精度电阻应变计 Strain Gauge GAGE 全桥用于压力称重传感器

压力传感器

价格:6.99 英镑(1.40 英镑/件)

康铜箔制成,全封闭结构。

可同时实现温度自补偿和蠕变自补偿。

应变片附着在被测物上,使其随着被测物的应变而膨胀,从而使应变片内部的金属箔随着应变而延伸或缩短。

许多金属的电阻在机械拉长或缩短时会发生变化。应变片是通过测量电阻的变化来测量应变的。

一般来说,应变片的敏感栅板由铜铬合金制成,其电阻变化率是恒定的,与应变成正比。

商品规格 品牌名称 HALJIA 商品重量 5.00 克

特征:

康铜箔制成,全封闭结构。

可同时实现温度自补偿和蠕变自补偿。

应变片附着在被测物上,使其随着被测物的应变而膨胀,从而使应变片内部的金属箔随着应变而延伸或缩短。

许多金属的电阻在机械拉长或缩短时会发生变化。应变片是通过测量电阻的变化来测量应变的。

一般来说,应变片的敏感栅板由铜铬合金制成,其电阻变化率是恒定的,与应变成正比。

电阻值(Ω):1002Ω±0.1

灵敏度系数:2.0±1%

底座尺寸:7.3mm x 4mm x 1mm

线栅尺寸:3*3.1mm

室温应变极限:20000um/m

室温绝缘电阻:10000MΩ

背衬材料:改性酚醛树脂


附录 B - 霍尔效应传感器和小磁铁规范

(1) AliExpress 霍尔效应 IC 和模块目录(A3144E、SS49E 等)

(2) AliExpress Tiny Magnets 目录

a3144 1

ss49e


附录 C - 使用 MCP3008/MCP3201/MCP3208 ADC 测量重量传感器和磁传感器输出

MCP3008/MCP3208 10/12 位 ADC 测试和编程 - EESE, tlfong01

Arduino 的 8 位 ADC 引脚可能无法准确地进行 ADC。Rpi 没有 ADC 引脚。因此,无论哪种方式,您都需要使用 ADC 芯片/模块。

对于这个项目的重量和磁传感器,我认为 10/12 位分辨率 (< 0.1%) 绰绰有余。对于新手,我通常推荐MCP3008/MCP3208,它非常流行,你可以找到通孔芯片来玩面包板。

您可能想阅读上面链接的我的答案,以大致了解 ADC 的工作原理,如果您对 python 没问题,请尝试我的演示程序,完全调试,只需复制、粘贴和运行,无需使用任何库. 或者您可以搜索适合您计算机的驱动程序。