开源改变世界

不良加速/减速和噪音 #4

推推 grbl 3年前 (2023-02-10) 174次浏览
关闭
darklarcel 打开了这个问题 2018 年 6 月 10 日 · 7条评论
关闭

不良加速/减速和噪音#4

darklarcel 打开了这个问题 2018 年 6 月 10 日 · 7条评论

评论

不良加速/减速和噪音 #4

又是你好!,
我又在测试你的端口(这几天很忙),
解决了加工速度慢的问题后,我在用激光cnc做测试,当超过F:10000的速度时加速和减速时出现阻塞和丢失步骤,我使用 X 光栅作为雕刻技术,而且与 arduino 相比,噪音增加了很多。
我的设置是:

$0=15(步进脉冲时间)
$1=20(步进空闲延迟)
$2=0(步进脉冲反转)
$3=0(步进方向反转)
$4=0(反转步进使能引脚)
$5=0(反转限制引脚)
$6 =0(反转探针)
$10=1(状态报告选项)
$11=0.010(连接偏差)
$12=0.002(电弧公差)
$13=0(以英寸为单位报告)
$20=0(启用软限制)
$21=0(硬限制)限制启用)
$22=0(归位循环启用)
$23=0(归位方向反转)
$24=10000.000(归位定位进给率)
$25=10000.000(归位搜索搜索率)
$26=250(归位开关去抖动延迟)
$27=1.000(归位开关拉断距离)
$30=1000(最大主轴速度)
$31=0(最小主轴速度)
$32=1(激光模式启用)
$100=20.000(X 轴行程分辨率)
$101=20.000(Y 轴行程分辨率)
$102=1203.000(Z -轴行程分辨率)
$110=8000.000(X 轴最大速率)
$111=10000.000(Y 轴最大速率)
$112=1200.000(Z 轴最大速率)
$120=700.000(X 轴加速度)
$121=6000.000(Y-轴加速度)
$122=80.000(Z 轴加速度)
$130=70.000(X 轴最大行程)
$131=300.000(Y 轴最大行程)
$132=200.000(Z 轴最大行程)

使用 gt2 皮带和 16 齿皮带轮,驱动器设置为 1/4

Arduino 在相同配置下完美运行(但无法快速处理大数据负载)。
我一直在 Arduino 和 STM32 NUCLEO 之间交替比较,差异很明显,arduino 光栅运动平滑、安静和精确,而使用 STM32 Nucleo 时噪音增加很多,只有在加速和减速时总是在同一点(只是在开始/结束之前)他突然刹车然后继续。
我已经修改了 config.h,用 ACCELERATION_TICKS_PER_SECOND 和其他参数做了几次测试但没有成功,我检查了配置并将其与我的 arduino(默认为 grbl)的配置相匹配,但我也没有任何运气。
这些问题仅在超过 F:10000 的速度时发生,既不会降低加速度,问题也会消失。我认为这是频率(因为噪音)或加速算法的问题。
我希望你能帮助我,谢谢!

不良加速/减速和噪音 #4

接下来几天我会调查一下。也许这是溢出变量等的问题。

但是你确定你的设置是正确的吗?您的最高进给率(Y 轴)为 10000,因此应忽略上述所有值。

制造商

不良加速/减速和噪音 #4
作者

解决了!,在 stepper.c 中,计算加速度的级别 (AMASS_LEVEL) 的值为 24000000HZ,我已将其更改为变量 F_CPU 的值 (96000000UL),现在可以完美运行,没有噪音,也没有阻塞加速。这是更改后的代码:

#define MAX_AMASS_LEVEL 3
// AMASS_LEVEL0:正常操作。没有积累。无上限截止频率。从 LEVEL1 截止频率开始。
#define AMASS_LEVEL1 (F_CPU/8000) // 过度驱动 ISR (x2)。定义为 F_CPU/(以 Hz 为单位的截止频率)
#define AMASS_LEVEL2 (F_CPU/4000) // 过度驱动 ISR (x4)
#define AMASS_LEVEL3 (F_CPU/2000) // 过度驱动 ISR (x8)

#if MAX_AMASS_LEVEL <= 0
错误“AMASS 必须有 1 个或多个级别才能正确运行。”
#万一

#ifdef MAX_STEP_RATE_HZ
#define STEP_TIMER_MIN (uint16_t)(F_CPU / MAX_STEP_RATE_HZ)
#else
#define STEP_TIMER_MIN (uint16_t)(50000)
#endif

不良加速/减速和噪音 #4
所有者
希尔德克鲁特 评论了 2018 年 6 月 10 日  

奇怪的。我将它设置为 24000000,因为步进计时器以 24 MHz 运行。

您能否也将util.h中的TICKS_PER_MICROSECOND更改为 96,因为这将是您当前配置的正确值,看看它是否有效?24 将是 24 MHz 计时器的正确值。我忘记在时钟树更改后更改它,因此对于 20 MHz 定时器它仍然设置为 20。

再次感谢您的测试。不幸的是,我没有一台机器来测试如此高的进给率。

制造商

不良加速/减速和噪音 #4

好的,我发现了错误。我忘记为溢出事件启用寄存器预加载,这导致定时器在某些情况下计数到其最大寄存器值而不是设置值。
请查看最新的更改提交并测试它是否适合你
bef526b

制造商