MakerLab创客实验室 — Let's Make something.
现在注册
已注册用户请 登入
sanse large avatar
MakerLab创客实验室  ›  问题解答

移植DELTA到STM32上时,运动时抖动

By sanse at 3 个月前 , 203 次浏览

求助个问题:过去的一年时间一直在将开源MARLIN移植到STM32平台,一直delta时遇到一个运动抖动的问题,找了几个星期了还是没有找到问题,希望大家都帮我看看!下面我把问题和调试过程详细的介绍下:
1.delta和xyz的主要差别在prepare_move(void);里在获取世界绝对坐标值后需要先转换为三轴电机运动的参数。在此我的移植检查了无数遍也没有发现问题
2.其中为了减少浮点预算量,采用直线插值法,将获取的一段目标运动转换成若干个小的运动段来分段执行。说到这,移植到STM32,以STM32的运算能力即使不用直线插值法,也能运算的过来。我的抖动问题就是出现在这些分段的过程中,按理说没个分段的结束速度和下一个分段的开始速度应该一样,这样才不会抖动,通过仿真我发现这两个速度是有一定差别的。
3.然后我也试了不使用直线插值的方法,而是不用分段直接一段运行,这时候运动虽然不抖动了,但是平移运动变成一个凹下去的弧形,我知道半径设置和机器实际半径设置不同会出现运动弧形,可是我无论怎么调节半径大小都没法使运动在不分段的情况下水平移动,相反在分段抖动移动的情况下就不会出现弧形运动
4.我还怀疑是因为这样将一段运动分段会导致每一段运动都很小,我定义的block大小为32个,也就是最多只能填充32条运动,所以我起初担心是系统中某些显示执行时间过长,在执行显示的过程中,32各blcok通过终端执行完毕,而又没有及时获取新的block,可是我把其他的程序执行都关掉,值留下分段填充和运动,运动过程还是有抖动

2 回复
sanse medium avatar
#1 - 3 个月前
sanse

纠错一下,不好意思写了错别字,最后一条中 32个block通过中断执行完毕

百川诚为 medium avatar
#2 - 5 天前
百川诚为

我猜是加速度和速度的问题!