优秀网页翻译:一个智能旋钮:DIY haptic input knob: BLDC motor + round LCD

原文链接:
https://github.com/scottbez1/smartknob

智能旋钮

SmartKnob 是一种开源输入设备,具有软件可配置的止动装置和虚拟定位器。
无刷云台电机与磁性编码器配对,提供闭环扭矩反馈控制,可以动态创建和调整止动和止动的感觉。

硬件

设计

智能旋钮视图

高级智能旋钮体验。正在积极开发中。
不推荐用于一般用途(计划进行机械和电气修订)。
需要先进的焊接经验来构建 - 需要回流和/或小间距表面贴装焊接,并且组装非常耗时且精细。

特征:

  • 240x240 圆形 LCD,由转子上的 39.5 毫米表玻璃保护
  • 低成本 BLDC 万向节电机,带有用于机械和电气连接 LCD 的空心轴
  • 由 ESP32-PICO-V3-02 (Lilygo TMicro32 Plus 模块) 供电
  • 用于压力检测的 PCB 弯曲和应变计(通过电机提供的触觉反馈)
  • 8 个侧面发光的 RGB LED (SK6812-SIDE-A) 照明环环绕旋钮
  • USB-C (2.0) 连接器,用于 5V 电源和串行数据/编程 (CH340)
  • VEML7700 环境光传感器,用于自动背光和 LED 强度调节
  • 用于安装的多功能背板 - 使用 4 个螺钉或 2 个 3M 中号命令条(带有用于在安装后访问拆卸标签的切口)
  • 前盖卡扣,方便接触 PCB
演示视频

在这里插入图片描述
https://www.youtube.com/watch?v=ip641WmY4pA

3D CAD

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHG12dWw-1648008861509)(doc/img/explodedv145.gif)]
最新的 Fusion 360 模型:https://a360.co/3BzkU0n

建立一个你自己的?

更多关于 BOM 的文档以及您需要订购的部件将在未来提供 - 非常感谢您的关注!在 Twitter 上关注我,了解有关此项目和其他项目的最新更新。

查看最新的自动生成(未经测试)[Base PCB Interactive BOM](https://smartknob-artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-ibom.html)和Screen PCB交互式 BOM(或组合的 [BOM csv](https://smartknob- artifacts.s3.us-west-1.amazonaws.com/master/electronics/view_base-bom.csv)) 用于电子/硬件零件清单。 ⚠️ 这些是从 GitHub 上最新的未经测试的版本自动生成的。对于经过测试/稳定/推荐的工件,请改用 release

在此期间还有一些其他注意事项:

  • 尽可能使用经过良好调整的打印机进行 FDM 3D 打印的,但视频/照片中显示的部件是用尼龙 MJF 打印的,以实现严格的公差和更好的表面光洁度
  • 如果您想要更简单的构建,您可以省略 LCD,只需将模型中的旋钮 + 玻璃合并到单个 STL 中即可获得封闭式旋钮
  • LCD 支架内部的接线空间有限,需要 8 根电线穿过中心的孔。我使用了 30 AWG 绕线线。漆包线可能也可以。
  • 应变片是 BF350-3AA,并用 CA 胶粘在适当的位置(我将在未来包含这个过程的视频,但基本上我使用 kapton 胶带拿起应变片并在固化过程中将其固定到位)。这必须在回流焊接后完成,并且在出现错误的情况下很难移除/修复,因此在尝试在 PCB 上之前,请务必练习将应变计粘合到其他物品上!
  • TMC6300 非常小并且有底部焊盘,所以我会认真考虑与 PCB 订单一起获得模板。即使使用模板,我也需要在之后手动清理一些桥接;我强烈推荐 Chip Quik NC191 凝胶助焊剂,可在 Amazon 上购买(或使用此 [非附属链接](https://www.amazon.com/Smooth-Flow- No-Clean-syringe-plunger/dp/B08KJPG3NZ))或从您选择的电子产品经销商处购买。将 LCD 带状电缆焊接到屏幕 PCB 时,助焊剂也非常有用。
  • 对于面包板原型设计,TMC6300-BOB 非常棒,而且比裸芯片更容易使用想玩低电流 BLDC 电机
  • 对于速卖通购买:我强烈建议使用速卖通标准运输(在美国购买)。我有多次购买需要几个月的时间,或者在使用菜鸟或其他低成本运输方式购买时从未送达,而 AliExpress Standard 非常可靠,并且根据我的经验通常更快。
  • 确保检查 open issues - 这个设计还不是“稳定的”,所以要注意一切可能不会顺利。在 stable release v1.0 里程碑 完成之前,我不建议您自己订购这些部件,因为有

当前版本中的一些机械干扰问题。

未来的计划:

  • 考虑切换到使用 ESP32-S3-MINI-1 模块(一旦 Arduino 核心支持完成),因为这将允许直接 USB HID 支持(用于计算机的操纵杆/宏垫类型输入)
  • 配置 wifi 并正常工作(可能是 MQTT?)。目前内存是完整显示帧缓冲区精灵的问题。 PSRAM 可能会解决这个问题(需要更新的 ESP-IDF 和未发布的 Arduino 内核,并且通过简短的测试,我在启用 PSRAM 的情况下得到了可怕的性能),或者下一项可能有助于减少内存:
  • 迁移到 LVGL,以获得更好的显示渲染和对菜单等的轻松支持。不需要内存中的完整 240x240x24b 帧缓冲区,释放一些用于 wifi 等。
  • 为结构化串行数据集成 nanopb(例如,参见 splitflap protobuf 协议
  • 家庭助理集成,或其他现实世界的应用程序
  • ???
  • 利润 😉
基础PCB

在这里插入图片描述在这里插入图片描述

订购说明:使用白色阻焊层,用于反射旋钮周围 RGB LED 环的光。应该是 1.2 毫米厚(不是“标准”1.6 毫米)。

最新的自动生成(未经测试且可能损坏!)工件⚠️:

示意图

交互式 BOM

PCB包

Gerbers

⚠️ 对于经过测试/稳定/推荐的工件,请改用 release

屏幕PCB

在这里插入图片描述在这里插入图片描述
订购说明:每个机械设计的厚度必须为 1.2 毫米(非“标准”1.6 毫米)。

最新的自动生成(未经测试且可能损坏!)工件⚠️:

示意图

交互式 BOM

PCB 数据包

Gerbers

⚠️ 对于经过测试/稳定/推荐的工件,请改用 release

手持式智能旋钮

对小型手持设备的探索。正在积极开发中。

在这里插入图片描述

智能旋钮迷你

为未来计划。

组件信息

磁性编码器

MT6701 (MagnTek)

价格合理的优秀传感器 - 强烈推荐。比 TLV493D 噪音更小,使用 SSI 时响应更快(控制回路更稳定)。

  • 许多 IO 选项 - SSI、I2C 和 ABZ - 应该提供良好的响应延迟
  • SSI 包括用于验证数据的 CRC
  • 没有断电或低功耗选项 - 可能不适合电池供电的设备
  • 不适用于美国分销商(Mouser、Digi-Key)

数据表

订购 (LCSC)

TLV493D(英飞凌)

中规中矩的选择。使用 Adafruit 的 QWIIC 分线板 可轻松进行原型制作。

在我的测试中,它有点嘈杂,需要过滤/平滑,这会减慢响应速度,损害控制回路的稳定性。或者,通过较少的过滤,噪声
PID 电机转矩控制器中的微分元件可以很容易地“放大”,从而引起可听(和可触知)的嗡嗡声/嗡嗡声。

也出现了一个已知的芯片问题会导致内部 ADC 有时完全锁定,需要完全复位和重新配置。见部分
[用户手册]中的5.6(https://www.infineon.com/dgdl/Infineon-TLV493D-A1B6_3DMagnetic-UM-v01_03-EN.pdf?fileId=5546d46261d5e6820161e75721903ddd)

在主控模式 (MCM) 或快速模式 (FM) 中,ADC 转换可能会挂起。挂机可以
被检测到:
 - 帧计数器 (FRM) 计数器卡住并且不再增加。

根据我测试 4 种不同的 Adafruit 分线板的经验,其中 2 种 (50%) 在使用后的一两分钟内经常表现出这种锁定行为。可以检测和自动重置(项目中有代码可以这样做),但速度很慢,如果传感器经常锁定,可能会导致不希望的跳跃/延迟。

数据表

AS5600 (AMS)

中规中矩的选择。便宜的分线板很容易买到。

在我的测试中,它相当嘈杂(据说,比 TLV493d 更嘈杂),需要过滤/平滑会减慢响应速度,损害控制回路的稳定性。此外,与我测试的其他传感器相比,它在较低的磁场强度下饱和,当与 Radial Magnets 8995 等强钕直径磁铁一起使用时,需要很大的气隙 (8-10mm) /en/products/detail/radial-magnets-inc/8995/5126077)。

数据表

电机驱动器

TMC6300-LA

这是一个相对较新的 IC,它是一个完美的匹配!本项目中使用的低压小电流电机一般没有其他驱动(带集成场效应管)满足要求(DRV8316可能工作,但未测试)。

强调:

  • 2-11V 直流电机电源输入
  • 高达 1.2A RMS
  • 微型(3x3mm QFN)

数据表

产品页面

电机

32mm 转子,空心轴,直径磁铁

在这里插入图片描述在这里插入图片描述

  • 32mm 转子
  • 15mm 总高度(包括磁铁),12.75mm 高度 w/o 磁铁,9mm 转子高度
  • 低/零齿槽效应 - 非常适合完全平滑的输入
  • 5.9mm 空心轴
  • 编码器内置直径磁铁
  • 久经考验的选择

总的来说,这是最容易上手的电机。低齿槽效应和内置直径磁铁非常棒!

速卖通

如果上面的速卖通列表缺货,这个其他列表 看起来是相同的,但我目前正在等待交货确认它实际上是一样的,所以购买要谨慎。

即将推出:我已经订购了十几种不同的 BLDC 电机进行测试,并将概述哪些电机适合这种触觉反馈用例。

固件

TODO:记录这个

还有 TODO:实现更多的固件

常见问题 (FAQ)

它要多少钱?

我希望我现在可以告诉你,但我实际上并不知道。请稍后再回来查看 - 到目前为止,我只建造了 1 个,这是在很长一段时间内进行大量修补和原型设计的结果,所以我还没有计算所有费用。零件肯定不到 200 美元,也许接近 100 美元?

它适用于 XYZ 吗?

还没有。到目前为止,我只为视频中显示的演示实现了足够的固件,因此您实际上还不能将它用于任何有生产力的事情。基本的制动器配置 API 就在那里,但其他的不多。许多固件工作仍有待完成。如果您构建一个,我希望您能帮助添加对 XYZ 的支持!

我可以购买一个作为套件还是已经组装好?

可能不是?或者至少,我自己没有立即出售它们的计划。并不是我不希望你快乐,而是硬件是一项艰巨的工作,我只是在空闲时间从事这些工作。

虽然它是开源的,但具有相当宽松的许可证,因此理论上任何人都可以开始提供套件/组件。如果有人确实走上了销售他们的路线,请注意归因是
required(如果你有奉献的心情,我不会拒绝 royalties/tips/thanks 🙂)。

致谢

该项目受到 Jesse Schoch 的视频“触觉纹理和虚拟定位”和
相应的 SimpleFOC 社区中的讨论。说真的,如果没有那个视频,这个项目就不会存在 - 谢谢你,杰西!

License

该项目在 Apache v2(软件、电子、文档)和知识共享署名 4.0(硬件/机械)下获得许可(参见 LICENSE.txt 和 [Creative Commons](https://creativecommons.org/ 许可证/by/4.0/))。

 版权所有 2022 斯科特·贝泽克

 根据 Apache 许可证 2.0 版(“许可证”)获得许可;
 除非遵守许可,否则您不得使用此文件。
 您可以在以下网址获取许可证的副本

     http://www.apache.org/licenses/LICENSE-2.0

 除非适用法律要求或书面同意,否则软件
 根据许可分发是在“原样”基础上分发的,
 没有任何明示或暗示的保证或条件。
 请参阅许可证以了解特定语言的管理权限和
 许可证下的限制。
  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果您想要在 iOS 应用程序中使用 iPhone 12 Pro Max 的 Taptic Engine 马达,您可以通过使用 Core Haptics 框架来实现。Core Haptics 是苹果公司在 iOS 13 中引入的一个新框架,它允许开发者创建和管理高级触感体验。 以下是一个简单的示例代码,可以在 Swift 中使用 Core Haptics 框架来触发 Taptic Engine 马达: ```swift import CoreHaptics class ViewController: UIViewController { // 创建 haptic 引擎实例 var engine: CHHapticEngine? override func viewDidLoad() { super.viewDidLoad() // 检查设备是否支持 haptic 引擎 guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return } do { // 创建 haptic 引擎实例 engine = try CHHapticEngine() try engine?.start() } catch { print("Failed to start the engine: \(error.localizedDescription)") } } // 触发 haptic 反馈效果 func triggerHaptic() { guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return } // 创建 haptic 反馈事件 let sharpness = CHHapticEventParameter(parameterID: .hapticSharpness, value: 1) let intensity = CHHapticEventParameter(parameterID: .hapticIntensity, value: 1) let event = CHHapticEvent(eventType: .hapticContinuous, parameters: [intensity, sharpness], relativeTime: 0, duration: 1) // 创建 haptic 反馈模式 let pattern = try! CHHapticPattern(events: [event], parameters: []) // 创建 haptic 反馈模式播放对象 let player = try! engine?.makePlayer(with: pattern) try! player?.start(atTime: 0) } } ``` 在上面的代码中,我们首先创建了一个 CHHapticEngine 引擎实例,并且在视图加载时启动了引擎。然后,我们定义了一个 triggerHaptic 方法来触发 Taptic Engine 马达反馈。在方法中,我们使用 CHHapticEventParameter 和 CHHapticEvent 类来创建一个 haptic 反馈事件,然后使用 CHHapticPattern 类来创建一个 haptic 反馈模式。最后,我们使用 CHHapticEngine 的 makePlayer 方法来创建一个 haptic 反馈模式播放对象,并在需要时调用其 start 方法来触发 haptic 反馈效果。 请注意,上面的代码仅供参考,实际使用时需要根据具体的需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值