Contact me: hankecnc@gmail.com

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

推推 grbl 3年前 (2023-01-22) 170次浏览

关闭
J-Dunn 打开了这个问题 2015 年 9 月 8 日 · 16条评论
关闭

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

J-Dunn 打开了这个问题 2015 年 9 月 8 日 · 16条评论

注释

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

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

似乎当前位置被解释为采用新的步长单位,而不是保持在真实距离( mm 或 inch )中。

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

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

如果 $100 & co.,似乎电机步骤中的位置计数器需要缩放。被改变了。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我不需要内部 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 会逐步跟踪位置,所以我认为您必须缩放位置并可能偏移以动态更改步长/mm

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

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

是的,从我报告的内容来看,很明显 GRBL 正在计算“步进”脉冲(对于电机来说可以是微步),而不是毫米或英寸。

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

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

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

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

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

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

例如,我设想的是切换到整步模式以进行大的 G00 移动,但以 step_by_4 切割。

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

似乎默认配置切换得太快,在实践中无法使用。我已经放慢了它的速度,但在连续移动大约一分钟后它仍然会变热。我还发现了一个 ST 人的评论,建议某些配置可能不稳定和振荡。您是否有任何关于不会过热的可靠配置的信息?或者更好的是如何设计一个合适的配置而不是用糟糕的’n’看到解决方案进行黑客攻击。

谢谢。

如果步进模式改变,位置丢失 #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 AI 可以从 Polulu 获得它!

谢谢。

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

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

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

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

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

在默认 TON_MIN=TOFF_MIN=21us 和假设 100us 脉冲步长的情况下,每个步长周期内将有几个 TON_MIN TOFF_MIN 周期,一旦达到目标电流,TON_MIN 将被 PWM 切换以将目标电流保持在 TVAL 的 RMS 左右。低电感 cct 会在 TVAL 的导通电流下提供接近 50% 的占空比。

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

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

我四处摸索,得到了一个配置,可以为电机提供更多的功率(更少的失速),但即使在 TVAL 为 3A 时,它仍然会在连续运动约 20 秒后抛出 TH_WRN。

给出的功耗为 22 C/W,但所描述的散热远远超过 EasySpin 板上提供的散热:
2. 安装在 EVAL6474PD Rev 1.0 板上的 POWERSO36:四层 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 之下。

我会尝试你的强制通风建议,我有一个 40mm GPU 小风扇。…

用风扇达到 2.7A。我认为是时候使用胶水散热器了。

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

喜欢 (0)