开源改变世界

PWM 输出:2ms 周期而不是 1ms #553

推推 grbl 2年前 (2023-01-22) 124次浏览

打开
斯塔维尔 打开了这个问题 2018 年 11 月 10 日 · 4条评论
打开

PWM 输出:2ms 周期而不是 1ms#553

斯塔维尔 打开了这个问题 2018 年 11 月 10 日 · 4条评论

注释

PWM 输出:2ms 周期而不是 1ms #553

您好,
我目前正在尝试解决在我的 A3 专业雕刻机上对图像进行光栅化处理时遇到的一些问题。
我已经将逻辑分析仪连接到步进电机驱动器输入和 PWM 输出,以查看
我遇到的问题是与软件还是硬件相关,并且我编写了一个非常简单的脚本来可视化工作流程,
如果有人感兴趣的话:
https //github.com/stawel/grbl_output_analyzer/tree/master

我还没有解决我的主要问题,但我可能在 grbl 固件中发现了一个错误:
看起来 PWM 输出偶尔会过载(在开始新的光栅部分时,它有时“打开”的时间超过 1 毫秒,有时是 1.2 毫秒,1.9 毫秒或 2 毫秒长),
示例(黄线代表 PWM 占空比,以全分辨率查看): 图片上有短而亮的黄线,它们不应该出现在这些地方。
PWM 输出:2ms 周期而不是 1ms #553

这是我的逻辑分析仪的截图:
PWM 输出:2ms 周期而不是 1ms #553
PWM 输出:2ms 周期而不是 1ms #553

gcode:
https://github.com/stawel/grbl_output_analyzer/blob/master/example/gcode.gcode

最好的问候,
帕维尔

PWM 输出:2ms 周期而不是 1ms #553

我的 grbl 配置:

 $0=10
 $1=255
 $2=0
 $3=0
 $4=0
 $5=0
 $6=0
 $10=3
 $11=0.010
 $12=0.002
 $13=0
 $20=0
 $21=0
 $22=0
 $23=0
 $24=25.000
 $25=500.000
 $26=250
 $27=1.000
 $30=1000
 $31=0
 $32=1
 $100=80.000
 $101=80.000
 $102=80.000
 $110=10000.000
 $111=10000.000
 $112=5000.000
 $120=500.000
 $121=500.000
 $122=200.000
 $130=5000.000
 $131=5000.000
 $132=5000.000
PWM 输出:2ms 周期而不是 1ms #553

我添加了一个解决此问题的拉取请求:
#554

主要问题是 OC2A 输出(PWM 输出)在最后一个光栅部分后没有被清除,即使在黑暗中,新部分偶尔也会显示高 PWM 占空比。

应用补丁后我得到了这个结果(查看全分辨率):
PWM 输出:2ms 周期而不是 1ms #553

PWM 输出:2ms 周期而不是 1ms #553
贡献者

谢谢。我怀疑这是定时器计数器。有一个类似的突出问题。我认为您的解决方案同时解决了这两个问题。我会在可能的时候检查一下。我现在忙得不可开交。

PWM 输出:2ms 周期而不是 1ms #553

我又做了两个测试:
案例 1:我只将 TCNT2 设置为 0,而没有清除 OC2A

inline void disable_PWM()
{
     SPINDLE_TCCRB_REGISTER = 0;                       // Disable Timer (disable clock)
     SPINDLE_TCCRA_REGISTER = 0;                       // Disable PWM output.
     TCNT2 = 0;                                        // Reset Timer counter (ensures PWM synchronization)
}

情况 2:我将 TCNT2 设置为 0xff 并清除 OC2A(当前处于拉取请求中,之前 TCNT2 设置为 0)

在这两种情况下,我得到不同的结果:
1。
PWM 输出:2ms 周期而不是 1ms #553

PWM 输出:2ms 周期而不是 1ms #553

令我惊讶的是,案例 1 没有沿 X 轴同步(每隔一行),
它可能与以下内容有关:
All CPU write operations to the TCNT2 Register will block any compare match that occurs in the next timer clock cycle, even when the timer is stopped.(atmega328p 数据表第 193 页)。

我的结论是案例 2 是最好的解决方案(或类似的东西),缺点是同步会有点延迟(将延迟 1/255 PWM 周期,可能可以忽略不计)

我会在可能的时候检查一下。我现在忙得不可开交。

慢慢来,我很高兴能提供帮助,
最好的问候,
Paweł

喜欢 (0)