开源改变世界!!

grbl TMC2130 驱动程序支持问题

推推 grbl 3年前 (2022-06-11) 425次浏览 0个评论

我正在考虑增加对 TMC2130 步进电机驱动器的支持。这些驱动程序有很多很酷的功能,但您只能通过 SPI 访问其中的大部分。

为了节省 I/O 引脚,我想知道是否可以将它们放在与 SD 卡相同的 SPI 总线上。每个 SPI 设备都需要自己的 CS 引脚,但我不需要额外的 MISO、MOSI 引脚。

只是想知道这是否可以在不破坏 SD 功能的情况下完成。驱动程序的大部分 SPI 都是在启动时完成的,也许是为了在工作完成后减少电流。

请不要建议外部 I/O 设备,这不是本次讨论的内容。

grbl TMC2130 驱动程序支持问题 bdring 添加了 问题 标签 2019 年 3 月 25 日
grbl TMC2130 驱动程序支持问题
合作者

luc-github 评论 2019 年 3 月 25 日  

我不知道这是否能回答你的问题,但这个屏幕http://www.panucatt.com/product_p/vikilcd2.htm
与 SD 卡共享 LCD Miso/Mosi/SCK SPI 引脚
所以我认为应该可以使用相同的 SPI也适用于 TMC

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 3 月 26 日

那是一个好兆头。我想我可以试试。

grbl TMC2130 驱动程序支持问题
贡献者

价格 评论 2019 年 3 月 26 日  

只要确保您对步进驱动器附近的走线有良好的屏蔽,因为步进输出可能会产生大量的电噪声。

grbl TMC2130 驱动程序支持问题

SD 卡 SPI 现在是如何工作的?根据原理图(http://www.buildlog.net/blog/wp-content/uploads/2018/10/schm_esp32_cnc_test_v3p1.pdf),CS/SCK/MOSI连接到 Spindle_dir/Spindel_enbl/Mist…. 这样做意思是使用SD卡时主轴和雾控制不可用?

也许#50是获得更多输出端口而无需解决输入端口上的中断问题的好选择。

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 3 月 26 日

是的,当您在该板上使用 SD 卡时,这些功能不可用。

grbl TMC2130 驱动程序支持问题

谢谢-然后我了解设计。

grbl TMC2130 驱动程序支持问题

是的,你可以做到。您需要更改访问 SPI 总线的代码。使用每个 SPI 设备上的 SS 引脚。这是关于在 SPI 总线上隔离设备的精彩视频。https://www.youtube.com/watch?v=_p6m2WwF2Jk&t=467s

不过,我还没有检查您是否有足够的数字引脚来执行此操作,因为每个设备上的每个 SS 引脚都需要 1 个引脚。

就个人而言,我会考虑实现另一个可以从动的轴。

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 3 月 27 日  

我有一个在我的Grbl_ESP32 开发板上工作。哇,他们沉默了!

grbl TMC2130 驱动程序支持问题

我正在使用这个。它适用于出色的 ESP32,但许多示例使用 AVR 中的计时器等需要更改为 ESP32 的寄存器。

我正在使用一些便宜的 Fysetc品牌模块。我需要修改焊接跳线以将它们置于 SPI 模式并将一些接头移动到顶部。

我还有很多关于各种模式的学习要做。我确实看到你可以菊花链驱动程序。该库不支持该功能。这将节省大量的 CS I/O 线路。

grbl TMC2130 驱动程序支持问题

我目前正在使用独立程序(不是 Grbl_ESP32)进行测试,所以我不知道它在 SD 卡上的表现如何。

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 3 月 28 日

如果使用 I/O 扩展器,最好有一个带有一点额外功能的扩展器。输入中断以及 PWM 输出。PWM 需要能够以不错的分辨率运行业余伺服系统。

grbl TMC2130 驱动程序支持问题

我一直在研究 I/O 扩展器,通常它们有 SPI 和 I2C 两种风格。你认为哪一个会是有益的?如果我们已经使用 SPI,它只会为 CS 添加一个额外的引脚 – 另一方面 – 从利用率的角度来看,它可能与 SD 卡读卡器发生冲突。I2C 很好,但是今天卡上的 I2C 引脚呢(GPIO21/22?)它们是用于其他用途还是我们可以将它们用作扩展器?

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 3 月 28 日

我可能可以使用任何一种类型。然而,另一个 SPI 可能会提出问题。我可能会尝试使用非常小的 FPGA 作为 I2C 从设备。它会增加很多灵活性。

伺服 PWM 是许多现有设备的挑战。您正在处理 50Hz 周期中的 1ms 范围。这意味着您基本上只能使用分辨率的 1/20。12 位 PWM 产生的范围小于 8 位。我想我至少想要 ESP32 提供的 16 位。

grbl TMC2130 驱动程序支持问题

I2C太慢了。SPI将是一个更好的选择。

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 3 月 29 日

希望速度不是问题,但我会看看 SPI 是否会更好。

grbl TMC2130 驱动程序支持问题

斯利克索 评论 2019 年 3 月 29 日  

@bdring

在这里查看一些好的信息。https://www.lifewire.com/selecting-between-i2c-and-spi-819003

对于快速通信,我们更喜欢 SPI 而不是 I2C。虽然,I2C 肯定有它的位置。即:带 2-4 行 LCD 显示屏。它们可以通过 I2C 库轻松更新。您还可以在 I2C 总线上运行很长的电缆。即:将多个传感器以循环方式连接在一起。

我知道你已经很精明了巴特,你会做出正确的选择:)

grbl TMC2130 驱动程序支持问题
贡献者

价格 评论 2019 年 3 月 30 日

@Slixxor我不认为速度有问题。在机器启动期间配置步进驱动程序不需要非常快。I2C 完全没问题。

Smoothieboard、MKS-SBase、Cohesion3D 等许多板都已经使用 I2C 进行步进电流配置。没问题。

grbl TMC2130 驱动程序支持问题

@cprezzi好的,然后使用 I2C :)

grbl TMC2130 驱动程序支持问题

可能需要更频繁地轮询潜在的缺失步骤。

grbl TMC2130 驱动程序支持问题

@misan

我懒得说。想象一台 1500×1500 毫米的机器,上面有一个大的半张工件。我只能想象到工作结束时零会在哪里结束;)

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 4 月 2 日

…更多测试。

我现在可以在 Grbl_ESP32 中运行 TMC2130 步进器。我现在只是初始化驱动程序,但同一 SPI 总线上的 SD 卡工作正常。

这是我现在设置的内容。我喜欢能够设置保持电流。这会在运动停止可选择的量后减小电流。这是我现在的初始化。

	TMC2130.microsteps(32);
	TMC2130.SilentStepStick2130(600); // Set stepper current to 600mA
	TMC2130.stealthChop(1); // Enable extremely quiet stepping
	TMC2130.irun(31); // 100% = 31
	TMC2130.ihold(4); // 100% = 31
	TMC2130.TPOWERDOWN(1);
	TMC2130.iholddelay(1); // hold delay approx 1 sec  = val/4
grbl TMC2130 驱动程序支持问题

@bdring:您能否详细说明此评论:#108(评论)

伺服 PWM 是许多现有设备的挑战。您正在处理 50Hz 周期中的 1ms 范围。这意味着您基本上只能使用分辨率的 1/20。12 位 PWM 产生的范围小于 8 位。我想我至少想要 ESP32 提供的 16 位。

我不确定我是否遵循对应于 8 位有效分辨率思想的 1/20。据我了解,这些 PWM 电路通常有一个内部时钟。以Adfruit 在其分线板 ( https://www.adafruit.com/product/815 ) 上推广的 PCA9585 ( https://www.mouser.se/datasheet/2/302/PCA9685-1127478.pdf ) 为例…. 根据 Adafruits 的描述,它具有“每个输出的 12 位分辨率 – 对于伺服系统,这意味着在 60Hz 更新率下的分辨率约为 4us”。我是否遗漏了一些使该芯片成为伺服驱动器的不良候选者的东西?

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 4 月 2 日  

我不确定该设备是如何工作的,但这是通用 PWM 和伺服系统的问题。

grbl TMC2130 驱动程序支持问题

信号在行程中的任何时间点大部分时间都处于 LOW 状态(图像未按比例绘制)。PWM 分辨率覆盖了整个周期,因此浪费了很多分辨率。

伺服的基本端点是 1ms 和 2ms。这意味着 1ms 是范围。在您的示例中,1ms / 4us 仅为 250。小于 8 位。

grbl TMC2130 驱动程序支持问题

好吧,现在我按照你的推理。但问题是:我们需要支持 20ms 周期吗?根据维基百科关于伺服器的说法,这似乎来自历史原因,今天的大多数伺服器都可以处理更高的频率 – 重要的是高脉冲的 1-2 毫秒。这就是 Wikipedia 关于伺服系统的说法(https://en.wikipedia.org/wiki/Servo_control):

现代 RC 伺服位置不是由 PWM 占空比(即 ON 与 OFF 时间)定义的,而是仅由脉冲宽度定义的。(这与使用的 PWM 不同,例如,在某些直流电机速度控制中)。大多数 RC 伺服系统在每 6 毫秒接收一个 1.5 毫秒脉冲(占空比为 25%)时移动到与每 25 毫秒接收一个 1.5 毫秒脉冲(占空比为 6%)时相同的位置——在这两种情况下,他们转向中心位置(中立位置)。对于许多 RC 伺服系统,只要刷新率(每秒发送多少次脉冲,即脉冲重复率)在 40 Hz 到 200 Hz 的范围内,刷新率的确切值就无关紧要了。

因此,以 200Hz 刷新率运行将产生 5ms 的循环时间。5ms的1.5ms是10-11有效位分辨率的1/3。10 位分辨率应对应于每位 0.18 度。但我在某处读到标准伺服有一个死区(https://en.wikipedia.org/wiki/Deadband0.4 度,所以任何低于该值的东西无论如何都不会产生任何影响(向后使用该计算将给出 180/0.4 = 450 =512 = 2^9。因此,最大“需要”有效分辨率为 9 位)。

……所有的保留,我的数学可以在一天中的这个时候完全关闭:)

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 4 月 3 日

我使用的大多数廉价伺服器都不是“现代”或数字的。它们是模拟的。模拟伺服系统将信号脉冲与连接到轴的电位器位置产生的内部脉冲进行比较。比较产生与位置误差成比例的模拟误差信号。该误差被放大并直接馈送到电机。这会为电机产生功率脉冲。您可以通过尝试将电机移出位置来感受这些脉冲。你可以感觉到脉搏。强度与位移成正比。我发现如果你加快信号频率,电机会运行得非常热并最终失效。

话虽如此,从模拟伺服中获得 8 位分辨率是很困难的。死区通常为 4us – 8us。死区用于防止伺服“狩猎”并耗尽电池。

数字或“现代”伺服系统不关心速率。他们使用脉冲来设定一个目标,然后一个单独的 PID 过程来移动它。如果你对数字舵机进行位移,它会感觉非常不同,并且强烈反对小位移。死区通常可以编程为低速率,甚至可以在某些情况下消除。许多伺服系统声称分辨率为 10 位。不过,这可能是底池上的 ADC 分辨率。

如果您允许用户调整占空比,12 位可能是可以的。不过,您冒着新手烧毁模拟伺服的风险。

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 4 月 12 日

更新:本周早些时候,我收到了一个定制的 PCB 来做进一步的测试。这在与 SD 卡相同的总线上使用 (2) 个处于 SPI 模式的 TMC2130 驱动程序。我希望明天能把它组装起来。

我可以用它来制作一个无声的笔式绘图仪。

grbl TMC2130 驱动程序支持问题

grbl TMC2130 驱动程序支持问题

我很高兴你选择了 SPI,享受吧!

grbl TMC2130 驱动程序支持问题

我的 2x TMC2130 已经在等这个板了!

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 5 月 7 日

这些板似乎工作得很好。我有一些额外的,我很乐意出售以帮助支持这个项目。他们每人 40 美元。完全组装,但未安装任何模块。

我可以写一个关于如何使用它们的快速说明,并在需要时通过 Slack 提供帮助。

grbl TMC2130 驱动程序支持问题

grbl TMC2130 驱动程序支持问题

伟大的。让我知道我应该如何联系你。

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 5 月 8 日

这是一个 Slack 邀请链接

DM我在那里制定细节。

grbl TMC2130 驱动程序支持问题
所有者作者

婚戒 评论 2019 年 5 月 9 日

我的TMC2130 绘图仪控制器现在有一个 GitHub 存储库。

喜欢 (0)

您必须 登录 才能发表评论!