注释
我将在本周晚些时候看看它是否可以轻松干净地添加。 |
我想我有这个工作。我正在同时对主轴进行全面清理,因此我需要进行更多测试。 以前,如果您没有指定主轴引脚,您仍然需要定义一堆主轴值才能使其编译。现在,如果您不指定引脚,则不需要其他值。 |
好的,听起来不错,巴特。准备好后很高兴进行测试。 请参阅与主轴控制和用户自定义相关的问题#247 …如果它符合您对用户自定义的想法,它可能是对同一模块的非常简单的增强。 |
我看到了那个问题。在我查看另一个问题之前,我想要一个关于反转问题的干净的 PR。还有一个 你如何测量主轴转速? 它在负载下保持 RPM 的能力如何? |
测量速度: 所有测试均在 CNC6040 1.5kw 2 极感应电机 VFD 上卸载。VFD 控制器显示 VFD 电源频率。感应电机具有依赖于负载的转差(这是电机电流增加以满足负载要求的机制),并且我已经使用轴上的光学转速计验证了卸载的主轴速度与频率显示一致(即卸载转差非常大)低于预期)。 我认为卸载速度是目标,因为切割器在轻微切割时燃烧与接近卸载速度有关。在这种情况下,我认为负载下的速度损失是电机的一个基本特性。 这种特殊的 VFD 在低转速下卸载时不是很稳定,我预计在加载时更不稳定。速度控制存在实际限制。 我预计高速下的滑移可能很小,但在绕组电抗相对于绕组电阻较低的最低频率/速度下,滑移曲线可能不太理想。我说过速度控制有实际限制吗? 我提出的退出想法并没有将补偿限制为分段补偿,尽管我看到了保持代码路径长度较短的警告。 |
更改已上传到 devt 分支。在与主人融合之前,我会把它们留在那里一段时间。 您可以做的任何测试或您的反馈都将受到赞赏。 |
我今天应该可以做到这一点 (UTC+11)。 |
我最初在输出范围内对其进行了测试。 验证它是倒置的,但速度低于 31 美元时存在问题,我预计 PWM 为 0%(倒置),但它提供 1.56µs(我假设 PWM=1/256),我们真的希望 PWM=0 时速度低于 S31 不是吗? 如果我将速度设置为 S2000,我得到 10.15µs(反相精细),并且它们 M2 和 PWM=770ns,我们需要 0ns 来关闭电机。 我说清楚了吗? |
我没有测试那个。我从不喜欢这种工作方式。似乎它不是很坚固。 这样做的目的是确保您以最低 RPM 或最低 PWM 运行主轴吗? 我认为它应该将低于最小值的任何非零 Sxxx 更改为最小值,并通过与任何其他 S 值相同的计算发送它。否则,除非 SPINDLE_PWM_MIN_VALUE 是完美的,否则从低于最小值到最小值的过渡很奇怪。 还 我认为 S 应该在 gcode.cpp 中进行测试和修复。如果您发送 S100,它会将其更改为 S200(如果这是最小值)。现在 $G 报告和覆盖等在正确的值上工作。 |
好的,我认为系统需要在电机停止、程序停止或 Sxxxx<min 时发送 PWM 0%(根据配置非反相或反相)。它应该以可靠和一致的方式完成。 因此,对于倒置的情况,当第 1 部分中的任何条件适用时,我希望在主轴销上看到 3V 稳定。 我自己没有涉足进行更改的原因是缺乏对所有各种模块和参数(如果您愿意的话,意大利面条)的交互的了解。 很高兴在您准备好后再次测试,我会再次使用示波器。 谢谢你的努力,巴特,感激不尽。 顺便说一句,我可以接受 grbl 线性化……接受它???,它总比没有好得多,并且与我实施和测试的基本相同。 做得好! |
我可能会解释说,我认为应该在 sxxxx<rpmmin 时停止主轴的原因是,以 rpmmin 旋转“工具”可能不安全,因此它不应该是默认速度。一个示例是寻边器,它在 600rpm 以上可能不安全。 另一方面,将 sxxx 限制在 rpmmax 是有道理的。 |
如果您将 RPM 设置得太高,我不确定它如何保存寻边器。 我想如果你真的担心所有这些东西,你会正确设置它。也许我主要是不去管它。 这个怎么样… 示例: S0 = 0 PWM |
让我试着说得更清楚些。 系统应针对以下情况发送 PWM=0%(反转或未配置):- 推理:电机或驱动器命令它太慢可能不安全,因此如果用户正确配置 rpm_min ($31),代码应该在请求较低速度时保护电机。 (寻边器是题外话,过快的速度可能会损坏它或工作。所以如果我订购 s600 并且系统配置为 rpm_min=1200,发送 PWM=0%。) |
S100 = 0 脉宽调制 推理: |
我不同意。 推理: 永远不要接受 RPM 但不旋转。 这是“原始”Grbl。
备选方案是错误、停止作业、需要重置。 |
好的,我理解并接受。 我即将进行一次校准运行以提供用于分段线性化的 py 脚本。我在开发版本上运行它,空运行看起来不错。光学转速计将记录实际的主轴速度(空载)。 |
伟大的。 您认为应该添加 SPINDLE_RPM_RANGE_ERROR 吗? |
我一直在研究这个,我认为仍然存在一个问题,即当主轴应该停止时,每个 PWM 周期中都有一个非常短的 (790ns) 向下脉冲。 我发现如果我设置 sxxx>0 和 <rpmmin,我得到的 pwm 就像 rpmmin。 如果我设置 s0,则不会发生向下转换。 如果我然后点击 m2,我会看到 790ns 向下脉冲 这似乎是由我评论的行引起的: // grbl_analogWrite(SPINDLE_PWM_CHANNEL, (1<<SPINDLE_PWM_BIT_PRECISION) – 1); 这条修改后的线路问题消失了。 |
我也看到了那个问题。 |
您已经部分实施了分段补偿。 我将代码添加到 spindle_control.cpp 中:
和 cpu_map:
和配置.h:
这是基于我昨天运行的校准因素。 它适用于使用示波器观察的台架测试。 今天早上我应该可以在机器上运行(天气允许的话)。 |
我试了一下模型拟合(更改 py 文件中的参数),得到了更好的拟合。 该测试是使用 devt 分支进行的,其中包含前面显示的更改以适应其余的主轴补偿……重要的是,使用反向主轴 PWM。 补偿后: 更好的校准。 巴特,它很有用……如果你合并了其余的主轴补偿,你可以关闭它和#247。 谢谢你的工作……欧文。 |
我看不到代码中使用#define ENABLE_PIECEWISE_LINEAR_SPINDLE 的位置。 以 +/- 格式阅读该代码需要大量工作。 |
好的…看着原来的 Grbl。它围绕所有内容以创建该功能的替代版本 |
我会找到一个选项来反转主轴 PWM 输出的优势。
一些“分线板”具有板载 PWM 到需要反向 PWM 的模拟转换器。
该功能将吸引装有此类板(并行端口 BOB)的流行中国 CNC 路由器的用户,以避免使用临时硬件逆变器。
似乎 Mach3 提供了这样的选项,当然像 TX14692 这样的板及其许多变体都使用反向 PWM。