MakerLab创客实验室 — Let's Make something.
现在注册
已注册用户请 登入
收藏此话题的成员
LCH2HK mini avatar dbtet mini avatar
10 回复
Andy medium avatar
#1 - 2 年前
Andy

能说清楚你要做什么吗?speed_lookuptable_fast和speed_lookuptable_slow是用来根据速度(feedrate)来计算timer值的。如果你只是想调整打印速度,直接在切片软件中设定不同的速度就可以,不需要了解这两个表格

Bello medium avatar
#2 - 2 年前
Bello

我是想研究下Marlin固件里面的代码,然后想把它移植到其他的单片机平台上。现在基本与硬件相关的程序都改得差不多了,Marlin核心的部分都没动。但实际在运行的时候发现步进电机的速度和原板子上的慢了好多,所以就想着是不是速度表要重新生成,但现在又不清楚那个速度表和时间计算是怎么来做的。具体的数学公式是什么样子。

Andy medium avatar
#3 - 2 年前
Andy

@Bello 能透露什么单片机吗?如果是32位arm的话,就不要用这两个表了。可以直接计算的方式来获得,可以参考我的在stm32单片机上的方法:https://github.com/MakerLabMe/Marlin_STM32/blob/STM32/Marlin/stepper.cpp#L277 。如果是其它8位单片机,可能需要重新计算这些值,具体计算方式和含义你可以分析一下代码和create_speed_lookuptable.py中的代码。

Bello medium avatar
#4 - 2 年前
Bello

@Andy 谢谢您的耐心回复,用的是Nios ii的CPU软核,是32位的RISC处理器。不知道 这个也是不是可以不用那个表,直接计算得来。

Andy medium avatar
#5 - 2 年前
Andy

@Bello 嗯,那应该是很牛的处理器了,直接计算就可以。成功了不要忘了上来分享一下

Bello medium avatar
#6 - 2 年前
Bello

@Andy 移植成功了肯定会上来分享下的。真的很感谢您的耐心回复。之前的速度的计算问题,直接用公式计算是可以了。但现在又出现了新的问题:步进电机细分驱动器如采用1细分,Feedrate采用默认1500,速度可以达到很快,但若用16细分,也就是原固件里面的细分方法,feedrate用默认的1500,感觉上速度会比原来的慢很多。不知道这个细分数和运行速度有没相关的关系,或是一个公式什么的。请问您当时移植到stm32时,板子上的步进电机细分驱动器用的是几细分呢?

Bello medium avatar
#7 - 2 年前
Bello

@Andy 问题解决了:feedrate的计算速度的理论值和实际是一样的。细分的值和#define DEFAULT_AXIS_STEPS_PER_UNIT {78.7402*16, 78.7402*16,1070,865.88} 是有倍数关系的,也和速度成反比。顺带着也解决了步进电机在减速时程序卡死的问题,是我在写乘法器时指针溢出了导致。真的很感谢您的解答,给了我方向。

Andy medium avatar
#8 - 2 年前
Andy

@Bello 恭喜,看来你的功能比较全面,我的板子细分是固定的,DEFAULT_AXIS_STEPS_PER_UNIT 参数计算时就把细分考虑进去了,所以不需要板子自己计算了。

飘落的叶子 medium avatar
#9 - 一年前
飘落的叶子

这个根据速度(feedrate)来计算timer的这个时间,比如是加速段进中断的时间,这个是改变的什么啊,是脉冲频率还是脉宽啊?这个表有两列,第一列是timer counter ,为什么还要有第二列啊

victor_yang medium avatar
#10 - 一个月前
victor_yang

你好,请问为什么我的打印机在cura里面设置的是200或者400的速度,而拿到机器上打印时速度都是很慢,最多就到80不到,这是用0.6层厚时的情况。但是我用0.3的层厚时,打印时的速度就是我在cura里面所设置的速度了,很快。很郁闷,不知道是什么原因导致的,请指教,谢谢