开源改变世界!!

下一次修订的想法 #6

推推 grbl 2年前 (2023-02-07) 211次浏览
关闭
MitchBradley 打开了这个问题 2020 年 6 月 5 日 · 30条评论
关闭

下一次修订的想法#6

MitchBradley 打开了这个问题 2020 年 6 月 5 日 · 30条评论

评论

下一次修订的想法 #6
米奇布拉德利 评论了 2020 年 6 月 5 日  

  • 限位和探头输入上的施密特触发器可实现更好的抗噪性。例如 74AHC14(6 个通道 – 需要其中 2 个,LCSC 一个 12 美分)或 NL27WZ17(双通道,需要 4 个;LCSC 以低于 6 美分的价格购买)。无论哪种方式,它大约是 25 美分。
  • 和/或输入端的光耦合器使电路板“防弹”(<-电路板名称的想法)。
  • 以 0.1″ 或 2.5mm 间距添加 4 个与接线端子平行的焊盘,因此可以选择填充 JST XH 2.5 连接器或杜邦引脚,从而允许轻松插入 NEMA 17 电机上常见的连接器。如果你不想让电路板变大,垫子可以在底部用于 SMT 连接器。当你试图连接一堆电缆时,小并不总是更好……
  • ESP32 5V 输入附近的大容量去耦电容。
  • 将所有排针连接器布置在全局 0.1″ 网格上,以便跨越连接器的屏蔽可以由原型板制成。例如,从多个 pololu 插座拾取 step/dir/ena 以及从输入模块插座输入的 DB25 接口屏蔽。
  • 向移位寄存器输出添加串联电阻,例如 50R,以在输出直接(通过 pololu 插座桥接适配器)到外部线路时降低边沿速率。可以将电阻器放在适配器上,但它们不仅仅是电线。
下一次修订的想法 #6
所有者

谢谢

2 面 SMT 仅对于一组零件来说会非常昂贵。我可以将图案放在接线端子前面(未焊接)。如果您安装了连接器,您仍然可以仅在垂直模式下使用接线盒。

下一次修订的想法 #6
作者
米奇布拉德利 评论了 2020 年 6 月 6 日  

无论哪种方式。对于底部安装的 SMT 东西,我认为它不会被填充,只有焊盘,以便用户可以根据需要进行手工焊接。
附录:SMT 版本的 PCB 布局从板边缘延伸到 11 毫米,因此如果没有更多空间,底部安装的想法将行不通。您需要额外增加 4 毫米,以便为接线端子孔留出空间。

下一次修订的想法 #6

在我的打印机板上,0.1 焊盘位于步进模块和接线端子之间,但这种布置需要一些额外的空间。我最近对两台带有 RAMPSy 板的 3D 打印机进行了翻新,因此对紧密包装的板的印象不如以前。摸索所有间隔很近的连接器变得乏味。使控制板尽可能小对于 DIY 机器来说似乎并没有那么大的价值,因为它不太可能在每个可能的维度上都针对空间进行优化。

下一次修订的想法 #6
所有者

您有 SMT 零件号吗?我想看看FP。

下一次修订的想法 #6

JST 部件是 S4B-XH-SM4-TB DigiKey PN 是 455-2262-1-ND

下一次修订的想法 #6

光耦输入?PC817 opto 是 5 美分。

下一次修订的想法 #6
所有者

@MitchBradley 这是我在另一个控制器上使用的电路。你认为有办法消除诊断跳线吗?也许使用在线电阻器来保护任何战斗输出。

下一次修订的想法 #6

下一次修订的想法 #6

你用这些跳线做什么,你甚至需要它们吗?如果我对 Diag 的理解是正确的,它也会将 3V3 接地。我的意思是当你有一个外部传感器时,唯一的问题可能会发生。然后他们两个都可以给 ua 停止或错误,但这不是更好吗?是否可以通过软件停用 Stallguard?
顺便提一句。为什么你不使用 EL847 或类似的 4 输入和输出。
你能告诉我 i2c 什么时候准备好了吗?我设计了一个 pcb,但我要等到软件完成。

下一次修订的想法 #6

此外,我会建议您在 esp32 前面的 5v 导轨中安装一个大电容器,因为 esp32 在 wifi 上吸收高达 200ma 的电流,甚至可以在短时间内达到 400ma,这会导致 esp32 失败/重启。我不确定您的电路板是否发生过这种情况。从这个页面得到它(德语):https ://arduino-hannover.de/2018/07/25/die-tuecken-der-esp32-stromversorgung/

下一次修订的想法 #6
  1. @KingMo5h正确的是,可以将来自 TMC2130 或 TMC5160 的 DIAG0 或 DIAG1 输出直接连接到光耦合器输出端,因为 DIAG0/1 默认为漏极开路操作,错误时低电平有效。TMC2209 不能以这种方式使用,因为它的 DIAG 是图腾柱,高电平有效。参考资料:
    TMC2130 数据表第 16 节第 72 页
    TMC5160 数据表 第 16 节第 97 页
    TMC2209 数据表第 15.4 节第 66 页
    要在没有跳线的情况下使用 TMC2209,需要在 DIAG 输出和光耦晶体管输出。
  2. 4 通道光隔离器当然可以。当我检查各个分销商的定价时,单通道光学器件更具成本效益——大约是 x4 光学器件每通道价格的一半。它是成本和电路板空间以及电路板布局和组装成本之间的权衡。
  3. ESP32 5V 输入附近的大容量去耦电容确实是个好主意。我不知道是否@bdring经历过任何引用的引导失败,但有一个很好的工程实践。
  4. 关于“i2c 什么时候准备好”:你是说 I2S 而不是 I2C?I2S 代码现在运行良好,对于 Beta 测试来说肯定足够好了。它在“i2s”分支中。我们希望在下周左右将其提升到 Devt 阶段——但“希望”与“将会”不同。在 PR#358 中还有一些使用 I2C 输入设备的工作代码。
下一次修订的想法 #6
所有者

我担心虐待。就像 TMC 开得很高并且开关闭合一样。

下一次修订的想法 #6

TMC2130/5160 默认是正确的 – 漏极开路 – 因此它驱动高电平的唯一方法是通过将 1 写入 GCONF 寄存器的位 12 或 13 来主动将 DIAGn 输出重新配置为推挽。很明显,它被设计为线或连接 – 似乎他们在 TMC2209 上弄错了,然后修复了它。

下一次修订的想法 #6

感谢您澄清这一点,我认为它们具有相同的诊断布局。@MitchBradley
我还建议终点站至少使用 12v,因为他们中的大多数至少需要 12v 直流电。我说的是感应式或电容式。您可以在 opto 的一侧使用 12v,在另一侧使用普通的 3v3 来向 esp 发送信号。

@bdring关于 stallguard 跳线的问题,您可以使用与门,因此如果两者之一处于低状态,则 esp 的输出也很低。但这仍然不适用于 tmc2209,因为它在故障时驱动很高。

下一次修订的想法 #6
所有者
培养 评论了 2020 年 6 月 13 日  

接近传感器

目前该电路使用隔离的5v电源。它需要找到一个便宜的隔离 12v。要么从 5v 或 12v 到 24v。电阻应移至接地侧。

这些是 3 线传感器,所以我需要添加更多端子。我不确定对于少数使用它们的人来说,增加成本和尺寸是否值得。

下一次修订的想法 #6
所有者

我想知道在概念上类似于主轴模块的输入模块概念是否是个好主意。它可以允许不同类型的传感器、电压和连接类型。

下一次修订的想法 #6

听起来不错,但在我看来,如果模块更通用就更好了。所以你可以把任何模块放在任何插槽中。但我想这太矫枉过正了。我在谈论主轴模块。
我假设它更容易为输入模块通用,因为它们只需要 I0 引脚。
你想把电源放在模块pcb上吗?

下一次修订的想法 #6

或者你的插槽是通用的吗?

下一次修订的想法 #6

让我们研究一下输入模块和通用模块的分支。我认为它可以工作。这将需要将更多信号路由到模块区域。连接器需要更多的引脚,但如果有用的话,模块可以只与部分引脚匹配。

另一种可能性是使用 I2C I/O 扩展器或 I2S 输入扩展器。我们已经有了前者的代码;后者需要更多的软件工作。

下一次修订的想法 #6
所有者

尺寸可能与主轴模块不同。我会尝试一些想法,看看会发生什么。

我认为输入模块可以设计为每个大约 4 个输入。这样一个 3 轴可能会使用一个而一个 6 轴会使用 2 个。

我认为它们应该可以在没有 I2C 的情况下使用。如果您想将 I2C 或 ADC 放在输入模块上,只要使用的 4 个 I/O 可以支持它们即可。

任何功能都应该放在模块上,包括光电、电源、滤波器等。

下一次修订的想法 #6
作者
米奇布拉德利 评论了 2020 年 6 月 15 日  

I2C 只需要 2 个引脚,一个仅输出,一个双向。然后使用第三个中断。MCP23017 可为您提供 16 个任意组合的外部输入/输出,受连接器空间和信号调理支持电路的限制。良好的 I2C ADC 也很容易获得。或者通过 I2C 与 ATTiny 交谈,并在同一部分获得 GPIO 和 ADC。

下一次修订的想法 #6

MCP23017 声称具有施密特触发器输入 – 参考http://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf第 1.1 节。这将提供一些抗噪能力来解决 ESP32 输入基本上很糟糕的问题。

下一次修订的想法 #6

我不知道你的 wifi 在这块板上有多好,但我读到 wifi 连接的一些问题,如果天线在板侧而不是在板边缘。这里也推荐(https://www.espressif.com/sites/default/files/documentation/esp32_hardware_design_guidelines_en.pdf,第10页)。

下一次修订的想法 #6
所有者

这主要针对模块而不是开发套件板。您不想将天线直接放在铜上。开发套件安装在电路板上方约 11 毫米处。

我通常会在天线伸出的地方购买官方的 Esprissif 模块。

下一次修订的想法 #6

有些不延长天线,但可能不在那里放铜。

下一次修订的想法 #6

您也可以购买外部天线版本。

下一次修订的想法 #6

下一次修订的想法 #6
布莱普科技 评论了 2020 年 6 月 30 日  

I/O 扩展思想..

既然 ESP32 模块上的 I2S0 已经被用来提供 32 个数字输出,为什么不反转 I2S1 上的过程呢?
这将提供 32 个数字输入和 32 个数字输出,同时仅使用 6 个 I/O 线。

4 – 74HC165s 和 CD4050 应提供 32 个输入并处理 3.3V<>5V 电平转换。这将需要 3.3V 和 5V
电源轨,但这些已经在您的模块规格中。

通过在每条输入线上添加一个 220ohm 电阻器和一个 3.6V 齐纳二极管,可以使输入耐受
24V。Chip_Select 在这里显示为断开,但它可以简单地连接到高电平。

下一次修订的想法 #6

RTFM 3 次,你可能只会被点燃一次..

下一次修订的想法 #6
作者
米奇布拉德利 评论了 2020 年 6 月 30 日  

I2S 输入绝对是可能的,我们选择了 I2SO 命名约定以允许 I2SI 作为一个选项。74xx597 是 ‘165 的替代品。’597 的优点是输入是边沿触发的,而 ‘165 是锁存的。边沿触发更兼容 I2S 成帧方案。另一方面,至少有一个带有施密特触发器输入的 ‘165 (Nexperia 74LV165)。与 I2C 相比,I2S 输入支持电平变化中断有点困难,但可以做到。

我认为 I2SO 和 I2S1 可以使用相同的时钟和帧线,从而将额外 GPIO 的数量减少到 1 个。

下一次修订的想法 #6

这是我正在探索的另一种可能性,即重新使用 I2S0_WS 和 I2S0_BCK。但我认为
在代码中可靠地同步 I2S0 和 I2S1 之间的信号可能会成为一个主要问题。

下一次修订的想法 #6
作者
米奇布拉德利 评论了 2020 年 6 月 30 日  

我没有足够详细地研究 ESP32 I2S 接口的这方面,无法确定。在我对 I2S 音频编解码器进行了大量工作的另一个 SoC 上,可以选择使用公共时钟进行输入和输出。我只是猜测这是一个足够常见的用例,ESP32 可能会支持它。

也就是说,我计划围绕 STM32 微处理器制作一个非常灵活的输入模块。它们价格低廉,并且可以做很多真正有用的事情,例如,除了裸 I/O 之外,还可以卸载显示、编码器处理和菜单系统等功能。我发现这些可能性如此引人注目,以至于我认为这比走 I2SI 路线更能节省时间。

下一次修订的想法 #6
布莱普科技 评论了 2020 年 6 月 30 日  

我曾考虑过将输入卸载到另一个微控制器,但我不喜欢引入另一个
可能挂起、崩溃或只是将垃圾数据馈送到控制激光、旋转切割机或其他突然疼痛源的系统的 MCU 的想法。

[在这里插入血淋淋的图片]

非关键的事情,如显示、铃声、口哨声等没有问题,但任何 MCU 必须与
关键系统中的另一个 MCU 通信的地方都会引入另一个可能的故障点。

使用 TTL IC,可以轻松使用 320kHz [通过 I2S 端口最大 40MHz] 的 BCK,这将导致每个输入的采样率为 10kHz
,然后它馈送到控制驱动器输出的同一 MCU。

x4xx165s 被选为负载锁存器,因为输入“现在”上的数据是我想要的,因为我认为即使我
缺乏代码,我也可以将整体延迟保持在 <0.005 秒。

Bleeptech 对牛顿第二定律的推论:质量 * 速度 = “哎哟!真他妈疼!”

编辑以处理丢弃的小数位..

下一次修订的想法 #6

如果时钟与输出时钟相同,则比特率为 8 MHz,帧速率(采样率)为 250 kHz。然后您可以选择中断处理器查看数据的频率。

我不明白你说的闩锁是什么意思。’597 还具有与移位级分开的输入触发器。不同之处在于控制信号排序的细节。

我认为延迟可以在 100 us 范围内,前提是会有 CPU 负载来持续轮询它。

关于其他 MCU 论点,我可能无话可说;很难反驳 FUD(恐惧、不确定、怀疑)立场。

下一次修订的想法 #6
作者
米奇布拉德利 评论了 2020 年 6 月 30 日  

让我们考虑一个使用具有 15 个 GPIO 的 STM32F030($1)的 14 位 I/O 扩展器的具体示例。使用一个 GPIO 作为 TxD 连接到 ESP32 UART RxD,波特率为 1 MHz。STM32上的代码本质上是

uint16_t port_data = 0;
while (1) {
   uint16_t new_port_data = IN(PORTA);
   if (new_port_data != port_data) {
      port_data = new_port_data();
      UART_OUT(port_data & 0x7f);
      UART_OUT((port_data >> 7) & 0x7f | 0x80);
   }
}

ESP32 代码在字符可用时中断并更新端口掩码。只有当值发生变化时才会发生这种情况,因此中断不频繁、及时且非常容易处理。延迟在 1 MHz 时约为 20 位时间,因此为 20 uS。

使类似的东西可靠比我们使 I2S 输出正确工作所经历的要容易得多。在 I2SO 案例中,这种努力是值得的,因为该方案的属性与步进完美匹配。输入不是这种情况。

我选择 14 位是因为它很适合廉价的微型计算机。扩展到更多位是微不足道的,但需要具有更多引脚的部件,并且 I/O 模块格式很快就会耗尽连接器空间。可以通过更快地运行 UART 来减少延迟;它可能至少会达到 2 Mhz 甚至 4,但这似乎不值得。