搜索
bottom↓
回复: 17

多步进电机同时运行的问题

[复制链接]

出0入0汤圆

发表于 2017-12-15 11:45:40 | 显示全部楼层 |阅读模式
本帖最后由 small_star 于 2017-12-15 11:48 编辑

需求:多个步进电机,只需要做点位控制,精度要高,至少要支持2个电机同时运行(同时启动,同时停止)

问题:
         现在在stm32f103的定时器中断中进行加减速控制,如果每个电机1个定时器,那么如果2电机同时运行,定时器中断会不会有冲突?

         若有,能否用1个定时器,里面加上直线插补逻辑?  
       
       

       

出40入42汤圆

发表于 2017-12-15 12:00:39 | 显示全部楼层
描述再详细点吧,速度要求?插补采用的是时间分割,还是DDA?之类的

坛里有些很好的讨论这些方面的帖子:https://www.amobbs.com/thread-5582426-1-1.html

出100入85汤圆

发表于 2017-12-15 12:37:15 来自手机 | 显示全部楼层
如果能改硬件就很容易。需要同步的电机脉冲口来自同一定时器的不同通道。

出0入0汤圆

 楼主| 发表于 2017-12-15 13:22:36 | 显示全部楼层
whatcanitbe 发表于 2017-12-15 12:37
如果能改硬件就很容易。需要同步的电机脉冲口来自同一定时器的不同通道。 ...

可能我描述的有问题,两个电机虽然是同时的,但是步调是不一致的,走的步数是不同的。

出0入0汤圆

 楼主| 发表于 2017-12-15 14:18:58 | 显示全部楼层
本帖最后由 small_star 于 2017-12-15 14:21 编辑
落叶知秋 发表于 2017-12-15 12:00
描述再详细点吧,速度要求?插补采用的是时间分割,还是DDA?之类的

坛里有些很好的讨论这些方面的帖子:h ...


谢谢,我看了你说的帖子,学习了。。。

他的方案好像需要将两个定时器输出通道相与然后输出,是要改硬件吗?  另外,同样的问题,4路同时100K,定时器之间不会干扰吗?
还有如果我每一步都需要判断是否到达限位点,不知道在他的基础上怎么实现?

出0入0汤圆

发表于 2017-12-15 15:38:37 | 显示全部楼层
回答你一下:1. 两个定时器,每个定时器进行一个轴的加减速控制,可能会冲突,可能不会冲突,这个要看你定时器里处理的程序量。如果定时器里的程序运行的时间远小于定时器时基,则可以认为不冲突,否则就要考虑优化。2可以用1个定时器来实现直线插补逻辑,最初的单步逼近法直线插补就是用一个定时器来实现。

出0入0汤圆

发表于 2017-12-15 15:48:27 | 显示全部楼层
不好意思,刚看了你后面的问题补充,发现给你的回答会给你造成判断失误。
你想要做到最高速时4路同时100k的速度输出,用定时器做IO反转,是比较困难的,你可以试试用1个定时器定时5us,控制IO高速反转,你会发现无法输出100k的波形出来。
如果是你这么个高速的输出性能要求,建议你要用PWM模块的引脚来做输出,有点时间分割的思想(当然由于时间分割和PWM周期不成整数倍,可能会涉及补偿的问题,这这个需要你自己考虑实现),而且,速度能达到这么高,也不建议你每一步都去判断是否到达限位点,每一步都判断应该是对资源的浪费。

出40入42汤圆

发表于 2017-12-15 16:20:30 | 显示全部楼层
small_star 发表于 2017-12-15 14:18
谢谢,我看了你说的帖子,学习了。。。

他的方案好像需要将两个定时器输出通道相与然后输出,是要改硬件 ...

不需要与门,那个帖子的发高速脉冲的主要思想是:采用两个定时器来级联

T1设定频率硬件发生脉冲,T2进行脉冲捕捉,当T2捕捉到的脉冲是设定的数量时中断,中断里停止T1

这样就可以得到想要的脉冲个数了,而且T2的捕捉中断里只关T1,是不怎么耗时的

如果多路脉冲一起发生,还是有可能发生冲突的,看T2中断的处理时间和脉冲频率吧,一般不多的话,都不会冲突

出40入42汤圆

发表于 2017-12-15 16:31:46 | 显示全部楼层
另外,采用DDA的方式进行多轴插补,使用2个定时器,就可以进行多轴脉冲发生

但这种方式是对MCU的主频有要求的,如果想要高速脉冲的话。如果想要了解这种方式的话,去了解开源项目“GRBL”

出0入0汤圆

发表于 2017-12-15 21:24:14 来自手机 | 显示全部楼层
落叶知秋 发表于 2017-12-15 16:20
不需要与门,那个帖子的发高速脉冲的主要思想是:采用两个定时器来级联

T1设定频率硬件发生脉冲,T2进行 ...

与门是必须的。。。。

出40入42汤圆

发表于 2017-12-15 21:32:00 | 显示全部楼层
hmd420304805 发表于 2017-12-15 21:24
与门是必须的。。。。

哈哈,没想到原帖作者来了。。

按照你那帖子的方法是必须的,但我在那楼说的方法就不需要

出0入0汤圆

发表于 2017-12-15 21:48:53 来自手机 | 显示全部楼层
用软中断来结束处理,来不及

出40入42汤圆

发表于 2017-12-15 22:48:04 | 显示全部楼层
hmd420304805 发表于 2017-12-15 21:48
用软中断来结束处理,来不及

的确,用你的那种方法是纯硬件触发的,频率可以做得很高

出0入0汤圆

发表于 2017-12-17 20:27:51 | 显示全部楼层
可以的,只需要计算你需要的速度,再看看MCU的主频能否胜任。

出0入0汤圆

发表于 2017-12-18 21:24:29 来自手机 | 显示全部楼层
落叶知秋 发表于 2017-12-15 16:31
另外,采用DDA的方式进行多轴插补,使用2个定时器,就可以进行多轴脉冲发生

但这种方式是对MCU的主频有要 ...

请问GRBL中是使用DDA算法吗?

出40入42汤圆

发表于 2017-12-19 09:06:00 | 显示全部楼层
advarx21ic 发表于 2017-12-18 21:24
请问GRBL中是使用DDA算法吗?

是的,看stepper.c里面的代码,定时器中断里面有具体的算法实现,当然还要看之前的运动段的计算方式才更清楚。

出0入0汤圆

发表于 2017-12-19 09:50:00 | 显示全部楼层
落叶知秋 发表于 2017-12-19 09:06
是的,看stepper.c里面的代码,定时器中断里面有具体的算法实现,当然还要看之前的运动段的计算方式才更 ...

感觉DDA算法出来的脉冲是不平滑的,不适合步进电机高速下用

出40入42汤圆

发表于 2017-12-19 11:06:09 | 显示全部楼层
liurangzhou 发表于 2017-12-19 09:50
感觉DDA算法出来的脉冲是不平滑的,不适合步进电机高速下用

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

本版积分规则

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

GMT+8, 2024-5-6 02:02

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

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