请教tinyg的加减速实现原理

2020-01-04 18:59发布

之前论坛有人详细分析了grbl的代码,但是grbl使用的是T型加减速,而tinyg和tinyg2则使用S加速和更高阶的平滑曲线,但是没有弄懂代码,它有一个DDA timer,但是固定频率的,怎么输出平滑的脉冲?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
14条回答
落叶知秋
2020-01-05 14:38
liurangzhou 发表于 2019-7-2 19:27
高手来了,步进电机在高速的时候如果脉冲不平滑,很容易卡死堵转,tinyg中的DDA定时器是个固定时基,不知 ...

TinyG也是DDA的方法,固定时基只不过是固定了最大的脉冲输出频率

如果那个轴的脉冲需要变更输出频率,重新计算那个轴的substep_increment值就好了

具体可以看dda_timer和_load_move里面的处理
就是每次进dda_timer溢出中断后,每个运动轴的accumulator(步数累加器)就会增加固定值,
然后如果符合DDA方法条件就会置位脉冲脚,否则根据每个轴的substep_increment来累加accumulator

每轴的substep_increment是在加减速的时候进行计算的,根据DDA方法计算参考轴和其他轴的行程步数

至于楼主关心的“平滑脉冲”问题是存在的,最多偏差了一个固定时基的时间吧,看默认设置是大概20us
比如TinyG的轴最大能输出50KHz的脉冲频率,但实际运行时要输出49KHz的频率,那么如果对比这两串脉冲,
可能会看到49KHz的那串脉冲大部分跟50KHz是一样的,但在某一个地方的脉冲会比50KHz的多输出了一个20us的高电平
这个时间估计对步进电机影响是很微小的

一周热门 更多>