开源改变世界

如果步进模式更改,则位置丢失 #796

推推 grbl 3年前 (2022-10-31) 324次浏览 0个评论
关闭
J-Dunn 打开了这个问题 on 8 Sep 2015 · 16 条评论
关闭

如果步进模式改变,位置丢失第796章

J-Dunn 打开了这个问题 on 8 Sep 2015 · 16 条评论

注释

如果步进模式更改,则位置丢失 #796

如果我在使用半步时将 X 轴发送一定距离,然后使用四分之一步返回零,
但将 100 美元翻倍以确保正确缩放 GRBL 会丢失它的位置并仅返回一半距离。

似乎当前位置被解释为新的步长单位,而不是保持在真实距离(毫米或英寸)中。

g20
$100=80
g0X22
(将电机改为 step_by_4 微步)
$100=160
g0X0

在使用具有固定(如果可选)步进模式的硬件时,这可能不是问题。
然而,使用可编程驱动芯片,它就变成了一个错误。

如果 100 美元起,似乎需要对电机步数中的位置计数器进行缩放。被改变。

如果步进模式更改,则位置丢失 #796
作者

J-邓恩 评论 on 8 Sep 2015

此外,如果我在新的“零”处切换回半步(轴的一半)并正确发送 G0X0,它不会移动,而是随后移动到负位置(试图返回真正的零)全速运行到缓冲区,并且似乎继续运行直到重置。

在前面的示例中:它在 x=11 处停止,就好像它为零一样。如果我回到原来的步进,即使 g0x-5.5 也会进入缓冲区并且似乎不会停止。(我等了 3 秒,它跳过终点站)。

如果步进模式更改,则位置丢失 #796
成员

尚尼特 评论 on 9 Sep 2015

@J-Dunn: Grbl 不是为非固定步进模式设计的。更改步进模式时,建议仅在队列中和作业之间没有动作时才这样做。

如果步进模式更改,则位置丢失 #796
作者

J-邓恩 评论 on 9 Sep 2015

我意识到它不是为满足这一点而设计的,如#1中所述

然而,即使这是在作业之间完成的,它仍然会丢失它所在的位置,并且需要一个新的归位周期。当更改 $100…$102 时,我没有看到任何警告需要这样做。如果还没有,那可能应该记录下来。

我在想,当在小微步上运行机器以提高准确性时,这可能对大动作很有用。在 gcode 中切换到全步模式以更快地到达那里。

需要解决什么问题来解决这个问题?似乎需要将一个简单的比率应用于位置计数器并重新计算缓冲区中已经存在的任何移动。由于其他原因,可能已经有一种方法可以触发它。

如果你能给我一些指示,我可能会看看添加这个。

如果步进模式更改,则位置丢失 #796

我假设您仍在使用 l6474,要更改步进模式,必须禁用输出并且内部状态将被重置,因此您不能只更改模式而不冒丢失步骤的风险

如果步进模式更改,则位置丢失 #796
作者

J-邓恩 评论 2015 年 9 月 9 日

我不需要内部 ABS_POS 计数器,因为保持位置的是 grbl,而不是芯片。
确实,当机器处于空闲状态时,我一直在手动进行测试并更改步进模式,即缓冲区为空且输出在 st_go_idle() 中设置为 HiZ 状态。
同样改变 $100 .. 102 只有在 idle o’w “[not idle]” 输出时才会被接受。

如果这不会破坏位置计数器,那仍然会很好。如果这只是一个 mult 和一个 div ,那么开销似乎很小。

当前可以在机器空闲时设置这些变量。如果在设置这些变量时位置丢失,可能应该通过输出 [axis posn. 丢失] ,或类似的。如果它可以通过简单的乘法来处理,那似乎比警告更好。

注意到要更改 100 美元,机器必须处于空闲状态并且缓冲区将是空的,这似乎微不足道,除非我正在寻找一些东西。你看到任何并发症吗?

如果步进模式更改,则位置丢失 #796

不仅是 abs_pos 计数被重置,它也是内部状态,即如果您处于 1/16 模式
,则 0-15 计数被重置。

afaict grbl 会逐步跟踪位置,因此我认为您必须缩放位置和可能的偏移量才能动态更改步数/毫米

或者如果可以即时完成的话,可以做一些类似于在毫米/英寸之间切换的诡计

如果步进模式更改,则位置丢失 #796
作者

J-邓恩 评论 2015 年 9 月 9 日

是的,从我的报告中可以明显看出,GRBL 正在计算“STEP”脉冲(可以是电机的微步),而不是毫米或英寸。

L6474 没有单独的微步计数器,abs-pos 以微步为单位,这就是为什么更改后计数变得毫无意义的原因。这实际上与我在 GRBL 中报告的情况相同。

我没有考虑过偏移量也需要检查。感谢您指出了这一点。

如果步进模式更改,则位置丢失 #796

我所说的内部状态的意思是,当微步进时,它会通过电流正弦表计数以设置位置,当您更改步进模式时,它总是从零步开始,即表中的第一个位置。因此,当您更改时,取决于您在表格中的哪个象限和步骤,您会丢失步骤

如果步进模式更改,则位置丢失 #796

您对正弦表的看法是正确的,但是如果机器没有空闲,GRBL 将拒绝对 $100…102 的任何更改,因此这不是真正的问题。显然,在电机运行时更改步进模式或步数/mm 可能会导致错过步数和位置不准确。

例如,我设想的是切换到大 G00 移动但在 step_by_4 处切削的全步模式。

顺便说一句,我在他们的 X-NUCLEO-IHM01A1 演示板上遇到了 L6474 过热的问题,

似乎默认配置切换得太快并且在实践中无法使用。我已经放慢了速度,但是在连续移动大约一分钟后它仍然变热。我还发现一个 ST 家伙的评论表明某些配置可能不稳定和振荡。你有关于不会过热的可靠配置的任何信息吗?或者更好的是如何设计一个合适的配置,而不是用“看不到”的解决方案来解决问题。

谢谢。

如果步进模式更改,则位置丢失 #796

查看数据表中的图 6,如果在更改步进模式时电机不在复位位置,它将在不同的位置上电。

我不相信 IHM01A1 的散热性能非常好,或者 ST 只是夸大了驱动程序的功能,为了在我的 3 个堆叠上做 2A,我放了一个风扇,一个 40x40mm 非常适合吹过板之间空间的切口.

在工作中,我们在自己的板上使用 l6474,PCB 背面用螺栓固定在铝块上,它运行 3A 没有问题

我从未见过有关如何确定配置的任何信息

如果步进模式更改,则位置丢失 #796

感谢您的输入。

这就是我得出的结论,得到确认很有用。像 IHM01A1 这样的小型 PCB 只能从芯片散热。它真正摆脱它的能力是有限的。强制对流可能是持续使用所必需的,除非可以显着减少芯片中的耗散。

看起来电机在大约 3.5kHz 脉冲频率以上无法可靠地工作,所以我真的不需要芯片那么快地斩波。它只需要保持超音速。原则上,如果我能获得较慢的斩波频率。耗散可能会显着下降。

问题是它是一个相当复杂的专利算法,很少了解如何配置它,并且建议某些配置不稳定。从工程的角度来看,“一目了然”的设计很糟糕。

st.com 上的支持论坛软件目前一团糟,所以希望不大。

以 3A 运行的板是否使用默认配置?

如果我错了,请纠正我,但默认 TON_MIN=TOFF_MIN=21us 的 3A 的 TVAL 会产生大约 1.5 的 RMS 人工智能可以从 Polulu 获得!

谢谢。

如果步进模式更改,则位置丢失 #796

我会纠正你 ;) TON_MIN 是最短时间,它会一直开启,直到达到设定电流
并且你不能从占空比中推断出 RMS 电流,当开启时,电流将以取决于电源电压的速率上升和电机电感,当关闭时,电流将根据电机电感以及使用快衰减还是慢衰减而衰减。

从中您还可以看到,您不能只选择斩波频率,这取决于速度、电压和电机电感以及可以承受的电流纹波

如果步进模式更改,则位置丢失 #796

显然,在感应电路和复杂的控制算法中,响应并非微不足道,但我没有看到第 7 节建议在 TOFF_MIN 期间出现快/慢衰减周期之类的东西。该制度适用于受控 ON 状态和改变目标当前值的阶跃变化。TOFF_MIN 是不受控制的关闭状态。

在默认 TON_MIN=TOFF_MIN=21us 和 100us 脉冲步进的情况下,在每个步进周期期间将有几个 TON_MIN TOFF_MIN 周期,一旦达到,TON_MIN 被 PWM 切换以将目标电流保持在 TVAL 的 RMS 附近。低电感 cct 将提供接近 50% 的占空比,且来自 TVAL 的电流。

电感越高,上升和下降都会变慢。仍然大约 50% 的占空比。

所以设置 TVAL=3A 会更像 1.5A RMS。这大概就是该芯片允许大约 6A 的最大 TVAL 的原因

我摆弄了一下,得到了一个配置,它可以为电机提供更多的动力(更少的失速),但即使在 3A 的 TVAL 下,它在大约 20 秒的连续运动后仍然会抛出 TH_WRN。

功耗为 22 C/W,但所描述的散热远远超过 EasySpin 板上提供的:
2. POWERSO36 安装在 EVAL6474PD Rev 1.0 板上:四层 FR4 PCB,每层散热铜
表面约为 40 cm2 IC下方有22个通孔。

我失去了从这些演示板中获得更多东西的希望,而不是从 Polulu 中获得的东西。我有几个,所以我可以安装测试电路进行比较。

获得一个允许受控停止的先发制人的 TH_WRN 信号很好,而且它似乎与 GRBL 配合得很好。我稍等片刻,然后松开保持,它继续移动的其余部分而不会失去位置。但除此之外,我看不到任何优势。

如果步进模式更改,则位置丢失 #796

从第 7.1 节开始:在 OFF 状态期间,可以执行慢速和快速衰减;自动选择更好的衰减组合

它的工作原理类似于降压转换器,因此占空比将主要取决于电源电压与以
一定速度达到电机直流电阻中的电流所需的电压之间的比率,电源电压将被反电动势抵消

查看开关的导通电阻,它们与其他驱动器非常相似,在 3A 时输出约为 5W,这需要 ~20C/W

如果步进模式更改,则位置丢失 #796

谢谢,但是如果您查看 7.1,它指的是 TON 期间 PWM 的关闭状态以及从一个步进级别到另一个级别的转换,而不是未调节的 TOFF_MIN 状态。

与所有 FET 驱动器一样,问题不在于导通状态,而在于开关瞬态。这就是为什么时间参数在 1 到 20us 范围内的快速切换会导致发热问题。TON 期间的 PWM 将在 100kHz 范围内。

现在可能有一些巧妙的方式来配置 TFAST &co。减少它,但除非 ST 产生一些指导说明,否则这将是很多工作。我怀疑改进将是有限的。

从他们提供的 gerber 文件来看,它是两层 35 微米的铜。管脚里面的主要面积大约是25cm^2,芯片下面是一堆过孔。

PS,我刚刚通过打印每个芯片的状态字节意识到,过热的是静态轴,而不是我来回运行的轴。X 和 Z 处于零位置,当 GRBL 启用它们时,它们在一个相位上获得稳定的 TVAL。

我需要将这些轴的 TVAL 降低到大约 1.5A 以防止出现热警告。

如果步进模式更改,则位置丢失 #796

如果步进模式更改,则位置丢失 #796
好的,我在示波器上得到了这个恒定的保持扭矩,它的切换非常快速和干净,所以你的计算应该是正确的。35 微米铜 (1oz) 每平方英寸提供 43C/W。因此,如果电路板布局良好,应该就足够了。

TVAL=64 (2A) 抛出 TH_WRN 但似乎稳定在 TH_SD 之下。

我会试试你关于强制通风的建议,我有一个 40 毫米的小型 GPU 风扇。…

用风扇可以达到2.7A。我想,是时候粘上散热器了。

[更新] 贴在散热器上加上 40 毫米鼓风机解决了散热问题;)

如果步进模式更改,则位置丢失 #796
喜欢 (0)

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