coleyao 发表于 2015-10-24 09:39:05

【分享】步进电机加减速方式探讨

本帖最后由 coleyao 于 2015-10-24 09:57 编辑

步进电机加减速效果较好的应该是S型加减速曲线加减速了,不过对于如何实现S型加减速曲线,各人有各人的方法,就我知道的,就有控制加速度曲线为梯形(三角形)、正弦波和PID调速这几种,不过这几种方式各自有什么优缺点一般就不清楚了,为此我专门改进了一个生成步进电机加减速曲线数据的小工具,可以图形方式显示各种步进电机控制方式的优劣,可用于简单的对步进电机加减速算法评估:
      一)显示加速到的最大速度和加速过程中的最大加速度,因此可比较各种方式加速到同样的速度哪种方式需要的最大加速度较小,运行较平稳;
      二)可将各种加速方式分段,以节约单片机资源或者降低加速所需的最大加速度;
   
       三)工具软件中插播了一个小广告,是我家人的淘宝小店,在意的请勿下载!

另外,该工具软件的部分源码请参考另一个帖子!http://www.amobbs.com/thread-5492742-1-1.html

gallle 发表于 2015-10-24 10:19:04

顶,支持一下!

霸气侧漏 发表于 2015-10-24 10:24:00

强力支持,赞

tiger5 发表于 2015-10-24 11:49:11

好                           

fengyunyu 发表于 2015-10-24 12:27:03

专业,学习!

RAMILE 发表于 2015-10-24 13:23:47

看着是给PLC用的

hejie126 发表于 2015-10-28 12:21:40

mark,步进电机加减速曲线

iqxt88 发表于 2015-10-28 12:29:58

顶,支持一下

yangbo18416 发表于 2015-11-5 16:00:23

强力支持,赞

xurenhui 发表于 2015-11-10 19:40:38

牛逼啊,谢谢

shangyu60104 发表于 2015-11-10 23:30:40

很棒哦!值得学习

ly8008csko 发表于 2015-11-11 16:40:21

做的不错,借鉴下

hzx1314 发表于 2015-12-8 22:34:38

学习了,收藏先。

jiangtc 发表于 2016-5-20 20:47:09

楼主,我使用你做的软件生成的表,发现电机运行一顿一顿的,还有我是4细分的,按道理发800个脉冲可以走一圈,但是我发800个脉冲只走了一点,请问楼主这可能是什么原因啊{:smile:}

coleyao 发表于 2016-5-20 21:34:18

jiangtc 发表于 2016-5-20 20:47
楼主,我使用你做的软件生成的表,发现电机运行一顿一顿的,还有我是4细分的,按道理发800个脉冲可以走一圈 ...

如果电机运行卡顿,请看下速度曲线是否足够平滑并请查询电机参数看电机最高运行速度是否符合要求,至于脉冲数量以及多少脉冲走一圈,这和加速方式无关,请确认电机是否有失步现象!

jiangtc 发表于 2016-5-20 21:51:56

coleyao 发表于 2016-5-20 21:34
如果电机运行卡顿,请看下速度曲线是否足够平滑并请查询电机参数看电机最高运行速度是否符合要求,至于脉 ...

我就是按照下图来细分的,是8细分,然后我给的PWM 3200个信号,也就是1600脉冲,按道理是应该走一圈的吧?结果走了大概45°左右

jiangtc 发表于 2016-5-20 21:54:49

coleyao 发表于 2016-5-20 21:34
如果电机运行卡顿,请看下速度曲线是否足够平滑并请查询电机参数看电机最高运行速度是否符合要求,至于脉 ...

电机我设置的转速,最高才240转每分钟,这个应该不高吧?

coleyao 发表于 2016-5-21 05:46:46

jiangtc 发表于 2016-5-20 21:54
电机我设置的转速,最高才240转每分钟,这个应该不高吧?

高不高很好验证的,自己试一下就知道了,另外两百个脉冲乘以1.8度应该是一圈,如果速度降下来还一直都是四十五度,那就拿示波器看吧!

FireHe 发表于 2016-5-21 06:47:32

coleyao 发表于 2016-5-21 05:46
高不高很好验证的,自己试一下就知道了,另外两百个脉冲乘以1.8度应该是一圈,如果速度降下来还一直都是 ...

coleyao 能说说用PID怎样控制步进电机吗?

coleyao 发表于 2016-5-21 07:37:30

本帖最后由 coleyao 于 2016-5-21 07:38 编辑

FireHe 发表于 2016-5-21 06:47
coleyao 能说说用PID怎样控制步进电机吗?

pid是一种反馈控制方式,通常它根据反馈的误差与误差的积分和微分进行线性组合作为输出,对输出进行调节。而步进电机在运行过程中,忽略每一步的延时影响的话,当前位置都是实时可知的(因为走步脉冲都是自己发的,走了几步当然自己能知道),因此误差及其积分和微分都可以实时计算,套用pid公式进行反馈控制,就可以让升速曲线和常见的pid控制曲线一致,当然振荡的曲线肯定不能用,参数合适的话,曲线是接近S型的,并且它的适应范围广,在很大的速度范围都适用,另外它不用每一个脉冲实时计算而只需要几毫秒计算(准实时)一次就可以达到不错的效果!

wq_601840968 发表于 2016-5-21 08:09:31

查表的,不能实时计算?

myxiaonia 发表于 2016-6-15 15:09:08

s曲线半周期是什么意思???

总阶段数是什么意思 为什么我默认参数生成的是874个数据

myxiaonia 发表于 2016-6-15 15:22:02

我用默认参数生成的数据,然后处理成v-t数据,excel画图看到确实是s曲线,不错不错,,,看来程序确实可以啊,非常感谢

只是参数过程还是不怎么熟悉,您能解释我上一楼提出的问题吗

coleyao 发表于 2016-6-15 15:56:20

myxiaonia 发表于 2016-6-15 15:09
s曲线半周期是什么意思???

总阶段数是什么意思 为什么我默认参数生成的是874个数据 ...

半周期是速度上升过程,下降过程是另一个半周期,总阶段数是不想有874个数据那么多,比如压缩成87个数据,但每个数据期间速度相当于10个原来数据期间上升的幅度,这样可以略简化一下程序,当然效果也要差一些!

coleyao 发表于 2016-6-15 15:59:16

myxiaonia 发表于 2016-6-15 15:22
我用默认参数生成的数据,然后处理成v-t数据,excel画图看到确实是s曲线,不错不错,,,看来程序确实可以 ...

实时计算很费资源,不过pid方式是个不错的办法,可以准实时,对资源需求少,而且最大速度和最小速度可以调整!

myxiaonia 发表于 2016-6-15 16:22:16

此程序生成数据,是pwm半周期,即脉冲宽度时间,标明为pwm周期,可能引起误导

s曲线半周期就是加减速一半时间,代表整个加速过程需要的时间

楼主前辈高山仰止

coleyao 发表于 2016-6-15 16:56:45

myxiaonia 发表于 2016-6-15 16:22
此程序生成数据,是pwm半周期,即脉冲宽度时间,标明为pwm周期,可能引起误导

s曲线半周期就是加减速一半 ...

此程序生成数据确为pwm周期,每周期变一次方向,两个pwm周期形成一个50%占空比脉冲。

gy54321 发表于 2016-6-21 14:09:09

如果要做细分的话, 这个软件生成的数据要怎么用?
比如16细分

novelcrab 发表于 2016-6-29 14:46:40

步进电机加减速控制

myxiaonia 发表于 2016-8-2 13:51:50

coleyao 发表于 2016-6-15 15:59
实时计算很费资源,不过pid方式是个不错的办法,可以准实时,对资源需求少,而且最大速度和最小速度可以 ...

请问我如果要对一个动态负载进行加减速控制,也就是你说的用pid准实时计算不同的加减速表,这个pid有什么特点

coleyao 发表于 2016-8-2 15:36:50

本帖最后由 coleyao 于 2016-8-2 15:45 编辑

myxiaonia 发表于 2016-8-2 13:51
请问我如果要对一个动态负载进行加减速控制,也就是你说的用pid准实时计算不同的加减速表,这个pid有什么 ...

1、速度的上升曲线与PID参数有关,参数不同,上升曲线形状不一样;
2、控制周期越短,曲线越精细;
3、参数调整好后对不同的最高速范围适应性好,不像查表法每变动一个最高速就要换一个表,因而较省空间,PID方式函数可以带上速度参数:
      uint8_t moveX_vnpmLH(uint16_t x_value,uint16_t Maxnpm,uint16_t Minnpm)    //参数的单位为步进电机速度:圈每分钟;
查表法就带不了: void move_xy(unsigned int x_value,unsigned int y_value) 
4、缺点是对单片机计算能力要求较高,不过现在stm32 M0的单片机不带硬件除法也应该够用了,如果用M3的单片机就更加不是问题了;
5、另外还有个缺点是PID的参数调试比较困难:a)碰运气; b)专业软件仿真; c)自己简单仿真测试一下(上面的数据生成软件自带简单的仿真功能)。

myxiaonia 发表于 2016-8-2 16:21:55

coleyao 发表于 2016-8-2 15:36
1、速度的上升曲线与PID参数有关,参数不同,上升曲线形状不一样;
2、控制周期越短,曲线越精细;
3、参 ...

你指定的这两个函数来自哪里???

我说的变负载问题是这样的,负载会越来越小,行程会越来越大,总的调整时间要在一个较小范围
负载大的时候,最大速度不能太大否则容易堵转,但是它调整行程又比较小,之后负载又小了,可以调高最大速度但是调整行程又大了

coleyao 发表于 2016-8-2 16:38:34

本帖最后由 coleyao 于 2016-8-2 16:53 编辑

myxiaonia 发表于 2016-8-2 16:21
你指定的这两个函数来自哪里???

我说的变负载问题是这样的,负载会越来越小,行程会越来越大,总的调 ...

我的函数只是运行到一个指定位置,你说的问题你可以自己定一个策略,比如分三段跑,先用低速,再中速,最后高速及减速到指定位置。
或者如果时间基本差不多的话可以调整PID参数,开始让升速缓一些(消耗掉负载大的那段时间),降速的时候用另一组参数,降速快一些就好了。

xyz2008 发表于 2016-8-3 17:22:36

楼主,你的软件怎么用啊,生成的数据都是什么意思,有什么用

zcf287 发表于 2016-8-16 15:44:07

工具不错

sw2003 发表于 2016-9-27 13:58:03

这个软件的源代码卖不卖?我qq,398087764

xyz2008 发表于 2016-11-24 14:35:15

http://blog.csdn.net/pengzhihui2012/article/details/52228822?locationNum=6,公式是不是跟这个相同

meirenai 发表于 2016-11-24 16:57:32

楼主,软件里蓝色的线是什么意思,为什么这么乱。

Traveler 发表于 2016-11-24 21:15:36

有空研究一下

hefeizdl 发表于 2017-3-1 08:18:08

学习了,有大用啊{:handshake:}

wangyj173 发表于 2019-5-20 14:37:45

不知道计算量大不大

hellokv1688 发表于 2019-5-22 10:45:26

好东西,支持一下!!!

saook 发表于 2020-2-28 16:25:40

mark一下

whyyyy 发表于 2021-3-4 19:42:50

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

fengyunyu 发表于 2021-3-4 23:48:11

好帖,不错
页: [1]
查看完整版本: 【分享】步进电机加减速方式探讨