OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13872|回复: 19

步进电机的加减速曲线

[复制链接]

11

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
461
金钱
461
注册时间
2014-11-23
在线时间
192 小时
发表于 2016-1-23 17:54:37 | 显示全部楼层 |阅读模式
s加减速曲线我之前在做项目的时候用过,具体公式为:Y=(K-C)/(1+E^(-A(X-B)))+C,其中K为曲线的最高频率,C为起始频率,E为自然数,A为斜率(我一般取的值为1,值越大,曲线坡度越抖),X为变化量(我一般用0.5),B为常数 (5、10、15都可以,数值越大,曲线坡度越抖),通过以上公式就可以得出Y;按照我的想法:先建个excel表格,X从0开始变化,每次+0.5,然后算出Y,一直到Y接近最大频率,(比如说当X为50的时候到最大频率,就是经过100次加速,每一次都有一个对应频率Y值,假如要得到频率从0到2000的曲线,细分100次,就是说每20就改一次频率), 我是单片机菜鸟,刚搞了1年,之前搞PLC思路是这样!
                     

曲线图

曲线图
            

公式

公式
QQ图片20160123174143.jpg                                      这是我回复的一个帖子,那个回复不知道怎么搞,加不了图片,上传不了文件!怕说不清楚,毁了我一世英名,就贴个图片!其实我也上传不了文件,公司电脑excel加密了!就贴个图片,一切都在图片中!

另外我也求助下,哪位大哥可以提供个控制步进电机的代码(方向+脉冲控制),真心搞不出来呀,发我邮箱也可以qq 281340955,放在论坛上也可以!!!

关于步进电机加速曲线,先做个excel表(每阶段对应脉冲频率表,在excel里面算非常方便),我的思路是个数组,这个数组立存放每阶段的脉冲频率值,在中断函数里改频率,也就是那个ARR好像。当然数组里面的数据越多控制越精准!

大家见笑哈,第一次分享帖子好像,因为我实在太菜了,一直都是来这上面学习
菜鸟不可怕,就怕菜鸟不愿飞 | | | -===+=====_/(T)\_=====+===- | |/.\| | `-|\_/|-'
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-1-23 18:48:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

7

主题

64

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-11-28
在线时间
30 小时
发表于 2016-1-23 19:30:05 | 显示全部楼层
看到你回复的帖子了,你也是很厉害的
回复 支持 反对

使用道具 举报

11

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
461
金钱
461
注册时间
2014-11-23
在线时间
192 小时
 楼主| 发表于 2016-1-25 21:18:43 | 显示全部楼层

原子哥你好,最近还在研究单片机驱动步进电机(方向信号+脉冲控制)的问题,有如下疑问:   1,如果用计数器更新中断计数的话,岂不是进入中断很频繁,假如说脉冲频率为10K,也就是每100us就要执行一次中断函数?F407是否能处理得了?
2,后来又想到高级定时器的重复计数功能,加速曲线的时候每100个脉冲更改一次频率(假如),这样的话我把重复计数寄存器改为100次进一次中断就可以解决了频繁进中断的问题,假如我需要10000个脉冲只计数100次,进100次中断,但是问题来了,假如我需要10011个脉冲,就有11个脉冲无法计数了,这就要更改重复计数寄存器的值,问题是重复计数寄存器的值是否可以在中断函数里面更改,查遍了所有资料都没看到,请教原子哥!!!
菜鸟不可怕,就怕菜鸟不愿飞 | | | -===+=====_/(T)\_=====+===- | |/.\| | `-|\_/|-'
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2015-10-6
在线时间
26 小时
发表于 2016-6-2 15:41:02 | 显示全部楼层
“ 就是说每20就改一次频率 ” 楼主,你这意思是发20个脉冲之后再查表,改频率值,再发20个脉冲。。。之后循环?
回复 支持 反对

使用道具 举报

12

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-9-6
在线时间
25 小时
发表于 2016-6-24 11:36:59 | 显示全部楼层
我是一步改变一次频率,测试效果还是不错的,请问你测试效果怎么样?加速时间效果怎么样,有具体数据么,我们可以相互交换一下看看?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-8-27
在线时间
0 小时
发表于 2016-8-27 17:02:30 | 显示全部楼层
小米已被注册 发表于 2016-6-24 11:36
我是一步改变一次频率,测试效果还是不错的,请问你测试效果怎么样?加速时间效果怎么样,有具体数据么,我 ...

你好,能分享下你写的步进电机的程序吗? 谢谢!
回复 支持 反对

使用道具 举报

29

主题

492

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2016-4-7
在线时间
123 小时
发表于 2016-8-28 11:52:11 | 显示全部楼层
定时器调用数组产生中断控制CLK脉冲,然后中断次数到达后数组进阶,
回复 支持 反对

使用道具 举报

29

主题

492

帖子

0

精华

高级会员

Rank: 4

积分
810
金钱
810
注册时间
2016-4-7
在线时间
123 小时
发表于 2016-8-28 11:57:23 | 显示全部楼层
hxyqq87 发表于 2016-1-25 21:18
原子哥你好,最近还在研究单片机驱动步进电机(方向信号+脉冲控制)的问题,有如下疑问:   1,如果用计 ...

100us一次中断就算能成功步进估计跑起来问题也很大,只听到步进的尖啸声而看不到它动,你要设置很大一段加速度才能加速到100us的恒速度,1/2细分我估计一圈400步,你要设置150步加速度,不然估计丢步也很严重,
回复 支持 反对

使用道具 举报

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
发表于 2016-11-27 15:40:50 | 显示全部楼层
谢谢分享!!!
回复 支持 反对

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2016-11-28 11:30:21 | 显示全部楼层
加速度,加加速度 ,这样可以灵活得设定,步进电机的应用场景不同加减速度也要相应变化,打点打死了,这个不方便调,考虑a和a一撇基本就能平滑控制了
回复 支持 反对

使用道具 举报

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
发表于 2016-12-7 22:03:25 | 显示全部楼层
谢谢分享!!!赞
回复 支持 反对

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-8-13
在线时间
14 小时
发表于 2016-12-8 00:26:29 | 显示全部楼层
谢谢楼主分享~!
回复 支持 反对

使用道具 举报

lgm11000 该用户已被删除
发表于 2017-1-27 20:57:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

王大大强 该用户已被删除
发表于 2017-2-20 21:09:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

6

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
293
金钱
293
注册时间
2016-1-7
在线时间
54 小时
发表于 2018-3-29 17:37:58 | 显示全部楼层
如果有5个轴,5个轴起始和最大速度不一样,加减速时间要可调。你这就要把RAM用完了
回复 支持 反对

使用道具 举报

11

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
461
金钱
461
注册时间
2014-11-23
在线时间
192 小时
 楼主| 发表于 2018-3-30 14:31:23 | 显示全部楼层
落尘浅羽 发表于 2018-3-29 17:37
如果有5个轴,5个轴起始和最大速度不一样,加减速时间要可调。你这就要把RAM用完了

这个方法依实际情况而定
菜鸟不可怕,就怕菜鸟不愿飞 | | | -===+=====_/(T)\_=====+===- | |/.\| | `-|\_/|-'
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2016-10-26
在线时间
35 小时
发表于 2018-4-1 14:19:05 | 显示全部楼层
本帖最后由 unli 于 2018-4-1 15:28 编辑
hxyqq87 发表于 2018-3-30 14:31
这个方法依实际情况而定

我用Matlab运算出 S曲线(T曲线也采用这种算法)的1000个节点速度位置数据。然后根据实际需要的速度加速度参数对曲线变形,取点。获得一个等时间变速的曲线波形。
四轴的混合运算带电流控制总的输出能有182k左右,这是我的帖子地址
http://www.openedv.com/forum.php ... =1&extra=#pid820401算法在完善中,全部完成再开源
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2016-10-26
在线时间
35 小时
发表于 2018-4-1 14:20:01 | 显示全部楼层
本帖最后由 unli 于 2018-4-1 15:28 编辑
落尘浅羽 发表于 2018-3-29 17:37
如果有5个轴,5个轴起始和最大速度不一样,加减速时间要可调。你这就要把RAM用完了


我用Matlab运算出 S曲线(T曲线也采用这
算法)的1000个节点速度位置数据。然后根据实际需要的速度加速度参数对曲线变形,取点。获得一个等时间变速的曲线波形。
四轴的混合运算带电流控制总的输出能有182k左右,这是我的帖子地址

http://www.openedv.com/forum.php ... =1&extra=#pid820401算法在完善中,全部完成再开源

回复 支持 反对

使用道具 举报

38

主题

116

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2016-2-24
在线时间
84 小时
发表于 2018-10-19 22:06:39 | 显示全部楼层
落尘浅羽 发表于 2018-3-29 17:37
如果有5个轴,5个轴起始和最大速度不一样,加减速时间要可调。你这就要把RAM用完了

那该怎么做能? 表是比较耗RAM的,5轴难道做5张表然后外加flash,把5张表都写到flash?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 22:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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