搜索
bottom↓
回复: 13

请教tinyg的加减速实现原理

[复制链接]

出0入0汤圆

发表于 2019-7-2 10:02:27 | 显示全部楼层 |阅读模式
之前论坛有人详细分析了grbl的代码,但是grbl使用的是T型加减速,而tinyg和tinyg2则使用S加速和更高阶的平滑曲线,但是没有弄懂代码,它有一个DDA timer,但是固定频率的,怎么输出平滑的脉冲?

出0入0汤圆

发表于 2019-7-2 13:44:26 来自手机 | 显示全部楼层
我也没看懂,现在的marlin 固件也是s加减速的

出40入42汤圆

发表于 2019-7-2 15:07:54 | 显示全部楼层
TinyG其实跟GRBL差不多的原理,S型加减速也是在T型的两边做了一个高一阶的计算

发现楼主喜欢纠结“平滑脉冲”

出0入0汤圆

 楼主| 发表于 2019-7-2 19:27:00 | 显示全部楼层
落叶知秋 发表于 2019-7-2 15:07
TinyG其实跟GRBL差不多的原理,S型加减速也是在T型的两边做了一个高一阶的计算

发现楼主喜欢纠结“平滑脉 ...


高手来了,步进电机在高速的时候如果脉冲不平滑,很容易卡死堵转,tinyg中的DDA定时器是个固定时基,不知道原理

出0入0汤圆

发表于 2019-7-2 19:41:05 | 显示全部楼层
s加速分成头/中/尾3部 , 加速》巡航》减速。 然后3部各分成多个段,每个段时间是固定的然后每个段产生DDA步进脉冲。

出0入0汤圆

 楼主| 发表于 2019-7-2 21:34:46 | 显示全部楼层
iqxt88 发表于 2019-7-2 19:41
s加速分成头/中/尾3部 , 加速》巡航》减速。 然后3部各分成多个段,每个段时间是固定的然后每个段产生DDA ...

看它的DDA定时器是固定时基,怎么实现不同周期脉冲输出?

出40入42汤圆

发表于 2019-7-3 09:31:11 | 显示全部楼层
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的高电平
这个时间估计对步进电机影响是很微小的

出0入0汤圆

 楼主| 发表于 2019-7-3 11:03:14 | 显示全部楼层
落叶知秋 发表于 2019-7-3 09:31
TinyG也是DDA的方法,固定时基只不过是固定了最大的脉冲输出频率

如果那个轴的脉冲需要变更输出频率,重 ...

严格来讲,如果50K时基,要么输出25K,意思是类似:
   时基:010101010101010101010101010101010101 ,如果按照这样输出就50K
              001001001001001001001001001001001001,这样就是输出50K*2/3
   但是高速的末端最好是25K->30k->40k->45K->47k->48.5k->49k->49.3k->...

出0入0汤圆

 楼主| 发表于 2019-7-3 11:04:19 | 显示全部楼层
落叶知秋 发表于 2019-7-3 09:31
TinyG也是DDA的方法,固定时基只不过是固定了最大的脉冲输出频率

如果那个轴的脉冲需要变更输出频率,重 ...

如果步进电机驱动器带有指令滤波是没有问题的,但是一般的步进电机驱动芯片没有这个功能

出40入42汤圆

发表于 2019-7-3 12:03:40 | 显示全部楼层
liurangzhou 发表于 2019-7-3 11:03
严格来讲,如果50K时基,要么输出25K,意思是类似:
   时基:010101010101010101010101010101010101 ,如 ...

TinyG的脉冲发生部分管脚的高低电平设置都是用的同一个定时器,不过用了两个中断,溢出中断和匹配中断
时基就是算的最大脉冲的频率

另外,你确定20us的时间对于步进驱动器来说有很大影响?何况是1个脉冲?位置环电流环都没有这个高的周期吧?

出0入0汤圆

 楼主| 发表于 2019-7-3 14:54:58 | 显示全部楼层
落叶知秋 发表于 2019-7-3 12:03
TinyG的脉冲发生部分管脚的高低电平设置都是用的同一个定时器,不过用了两个中断,溢出中断和匹配中断
时 ...

意思是相当于掉了一个脉冲,就有是跳变了

出40入42汤圆

发表于 2019-7-3 14:58:19 | 显示全部楼层
liurangzhou 发表于 2019-7-3 14:54
意思是相当于掉了一个脉冲,就有是跳变了

想要脉冲非常“平滑”,没有“跳变”的话,建议用CPLD或FPGA吧,别折腾单片机了,低端的总会有不均匀的

出0入0汤圆

 楼主| 发表于 2019-7-3 17:41:02 | 显示全部楼层
落叶知秋 发表于 2019-7-3 14:58
想要脉冲非常“平滑”,没有“跳变”的话,建议用CPLD或FPGA吧,别折腾单片机了,低端的总会有不均匀的 ...

变时基是可以均匀的

出100入85汤圆

发表于 2019-7-3 21:25:32 | 显示全部楼层
liurangzhou 发表于 2019-7-3 17:41
变时基是可以均匀的

变时基怎么实现?估计做多轴比较麻烦。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 10:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表