搜索
bottom↓
楼主: coleyao

步进电机S曲线加速数据计算小软件

  [复制链接]

出0入0汤圆

发表于 2012-11-27 11:49:16 | 显示全部楼层
楼主,你可以上传下,就是你这些数据导入一个软件,看来生S型的图像,然后如何使用,谢谢楼主有这么好的耐心指点我们

出0入0汤圆

 楼主| 发表于 2012-11-27 12:29:03 | 显示全部楼层
一楼。。。。。。

出0入0汤圆

发表于 2012-11-27 12:39:13 | 显示全部楼层
顶上,表示不知道在说什么@

出0入0汤圆

发表于 2012-11-27 14:01:07 | 显示全部楼层
为什么你那个软件,初始化PWM周期,8000,我改这个数,软件输出EXE,最大总是6000,我就不明白了

出0入0汤圆

 楼主| 发表于 2012-11-27 14:36:39 | 显示全部楼层
lixingling 发表于 2012-11-27 14:01
为什么你那个软件,初始化PWM周期,8000,我改这个数,软件输出EXE,最大总是6000,我就不明白了 ...

执行一次后手工将生成的数据清零后再计算,否则追加在尾部。

出0入0汤圆

发表于 2012-11-27 15:04:13 | 显示全部楼层
谢谢,还有你那个G 前面有一个62300,改变这一个数,其它的数那怎么办,改变这个数的意义是什么

出0入0汤圆

 楼主| 发表于 2012-11-27 15:12:41 | 显示全部楼层
lixingling 发表于 2012-11-27 15:04
谢谢,还有你那个G 前面有一个62300,改变这一个数,其它的数那怎么办,改变这个数的意义是什么 ...

用1楼的软件做,不要用excel生成!

出0入0汤圆

发表于 2012-11-27 15:41:12 | 显示全部楼层
62300,这个数,好象没有吧,我看了生成的都没有,最前面的,

出0入0汤圆

发表于 2012-11-27 15:43:33 | 显示全部楼层
sheet1的算法应该不可以控制加速时间..没发现又什么参数可以控制斜率的....后面的算法就是调节那个常数..也就是F列那个62300那个就可以调节加速时间了...是吧??

这个是另外一个贴,这个F 62300,

出0入0汤圆

 楼主| 发表于 2012-11-27 15:47:10 | 显示全部楼层
表格是凑出来的,没有啥道理,看源代码吧

出0入0汤圆

发表于 2012-11-27 16:00:50 | 显示全部楼层
Tpwm[LoopI]:=nT_Idea[LoopI]*DivTOsc/FreqOsc;            //pwm周期(实际时间)DivTOsc这个是指什么,如果用C语言的就好了,上位机的不是很懂

出0入0汤圆

发表于 2012-11-28 09:17:54 | 显示全部楼层
为什么我用24M的,最大周期是10000,最小是600,生成的步数,有4K步,太多了吧,保成数组相当大,你的为什么只有1K步

出0入0汤圆

 楼主| 发表于 2012-11-28 11:53:37 | 显示全部楼层
lixingling 发表于 2012-11-28 09:17
为什么我用24M的,最大周期是10000,最小是600,生成的步数,有4K步,太多了吧,保成数组相当大,你的为什 ...

24M是外部晶振频率吧,填上分频比率后(如51的6T或12T),实际时钟频率就降低了,这样步数就少了,如果还嫌多,一般定时器的时钟都是可以调整的,调低一些就好了,貌似这些都是单片机的常识,不用论坛上问吧,问问周围的同学或老师应该都知道!

出0入0汤圆

发表于 2012-11-28 15:10:34 | 显示全部楼层
楼主高才,顶一个!

出0入0汤圆

发表于 2012-11-28 17:02:15 | 显示全部楼层
分频以后是可以,但问题你降低了频率,我现在要用128细分,那频率就会很大,走的步数也多了

出0入0汤圆

发表于 2012-11-28 17:04:50 | 显示全部楼层
128细分,原来1K的频率变成了128K, 降低频率就完全达不到要的速度了

出0入0汤圆

发表于 2012-11-28 23:13:41 | 显示全部楼层
你的软件是用的是整步吗,如果128细分,分频以后不是不够,细分的应该如何做,步数多还是少有关系吗?你分频以后,还有你那个EXcel,里面的图是如何做出来的

出0入0汤圆

发表于 2012-11-28 23:33:11 | 显示全部楼层
coleyao 发表于 2012-8-20 05:59
理论上有两种办法:1)加装编码器,通过负反馈控制的方式控制加速度连续减小/增加,效果和控制方式和算 ...

nbnbnb
nb
nb

出0入0汤圆

 楼主| 发表于 2012-11-29 00:18:25 | 显示全部楼层
lixingling 发表于 2012-11-28 23:13
你的软件是用的是整步吗,如果128细分,分频以后不是不够,细分的应该如何做,步数多还是少有关系吗?你分 ...

鱼和熊掌不可兼得,细分太高了,单片机肯定忙不过来,适当降低细分吧,另外说一句,细分与否和加减速方式无关,似乎并不是S加减速拖累导致128细分不能实施的。。。。。。。。
Excel出图是利用图表功能里的XY分布图。

出0入0汤圆

发表于 2012-11-29 07:24:30 | 显示全部楼层
哎呀,太及时了。

出0入0汤圆

发表于 2012-11-29 08:17:34 | 显示全部楼层
我是想知道就算我是16细分,生成的步数也是比较多的,16细分,感觉速度的起点更高了,

出0入0汤圆

发表于 2012-11-29 11:12:20 | 显示全部楼层
coleyao ,谢谢你了,其实我是想知道如果是其它细分就是原来整步的基频上*细分数,再放入软件中生成是不,但生成的表格数,好象也不一定完全就是S型,而且细分越高,感觉步数越多

出0入0汤圆

发表于 2012-11-29 11:49:15 | 显示全部楼层
不是很明白,怎么调节软件设置,使得出来的数据更加实用

出0入0汤圆

发表于 2012-11-29 11:53:32 | 显示全部楼层
不错啊,我们又学习了

出0入0汤圆

 楼主| 发表于 2012-11-29 11:57:35 | 显示全部楼层
lixingling 发表于 2012-11-29 11:12
coleyao ,谢谢你了,其实我是想知道如果是其它细分就是原来整步的基频上*细分数,再放入软件中生成是不, ...

软件生成时有几个前提条件是预先填入的,如加速时间,而步数是不确定的,由单片机时钟、分频数等通过计算决定,所以细分与否与数据计算无关,细分影响的是步进电机初始和最大角速度。一般先确定加速时间算出数据,再根据角速度算出细分数。如果细分数有要求,如128,就要考虑单片机的时钟频率是否足够,如果单片机忙不过来,就不可能提供这么高的细分了。
另外,显然如果细分前是S加速,细分后应该还是S加速,我没法证明,也没有特意去验证,你要是觉得不对可以自己确认一下。

出0入0汤圆

发表于 2012-11-29 13:33:21 | 显示全部楼层
一般先确定加速时间算出数据,再根据角速度算出细分数。这句话不是很 明白,细分高,那相应该的频率就要求高,你一般是如何做的,如16细分,你是先算好16细分的频率再导入软件 ,还是先导入不细分的频率生成数据,再用软件处理,把相应的数填上就可以生成S型曲线了吗,但我试过了,我把数填上,生成的数据在EXECL表格中,好象不是跟你的表格的速度和加速度一样,是不是还要调整,应该如何调整

出0入0汤圆

发表于 2012-11-29 13:34:13 | 显示全部楼层
上面我的指好象不是跟你的表格的速度和加速度一样,是说曲线没有你那样标准

出0入0汤圆

发表于 2012-11-29 23:19:17 | 显示全部楼层
ColeYao,,你一般是如何调试的了,改变你软件的几个参数吗,一个一个试吗,

出0入0汤圆

 楼主| 发表于 2012-11-30 06:01:04 | 显示全部楼层
本帖最后由 coleyao 于 2012-11-30 08:06 编辑
lixingling 发表于 2012-11-29 23:19
ColeYao,,你一般是如何调试的了,改变你软件的几个参数吗,一个一个试吗, ...


估计一个加速时间如预计约0.2秒加速(时间太短了脉冲不过渡可能会不平滑,另外最大加速度也会变大),给定最大速度和最小素的是的PWM周期,算出PWM增量数组,拷贝到程序中即可(采用增量而不是直接用PWM周期值,是因为增量较小,有时用1个字节就够了,可以很大程度上节约程序空间,另外如果对pwm设置不熟,不需要多路联动的话还是直接用基本的定时器动能简单一些!)。

出0入0汤圆

发表于 2012-11-30 06:46:12 | 显示全部楼层
没用过,先试试,

出0入0汤圆

发表于 2012-11-30 08:37:50 | 显示全部楼层
我在你的EXCEL中改变加速度也就是最前面的G,发生改动这个数,会使加速度和速度都会变化,在速度和加速度图中可以明显看到,但在你那软件中改变加速度时间感觉不出明显变化,还有就是我一直不明白,如果细分你是如何做的?整步当然的要频率低,细分越高,频率就越高,生成的数的步数就越大,你能否说个例子,你是如何应该细分,
我想变细分控制那应该如何,就是在低频的时候细分高点,等跑起以后再细分低点,这样CPU定时器就可以够用了

出0入0汤圆

发表于 2012-11-30 08:57:16 | 显示全部楼层
收藏啊

出0入0汤圆

发表于 2012-11-30 10:08:48 | 显示全部楼层
再根据角速度算出细分数,不明白,软件中的角速度是定的, 如果细分每个脉冲走的角度小了,能否举例说明下,你是如何用这个软件用细分

出0入0汤圆

 楼主| 发表于 2012-11-30 20:15:30 | 显示全部楼层
lixingling 发表于 2012-11-30 08:37
我在你的EXCEL中改变加速度也就是最前面的G,发生改动这个数,会使加速度和速度都会变化,在速度和加速度图 ...

   软件作图时归一花过了,只求形状,对量上没要求,所以理论上如果是同一种加速度方式,软件作的图都是一样的,之所以提供图形,主要是起到验证的作用,防止意外时曲线变形太多,影响最终的运行效果.
   至于细分,我写的程序用的场合都是用步进电机控制器的,一般的步进电机控制器细分调好后都是不支持软件调整的,所以我根本就没有考虑过运行中调整细分的情况,也许以后我自己用步进电机控制芯片驱动步进电机的时候会考虑运行中进行细分调整!

出0入0汤圆

发表于 2012-12-1 01:12:29 | 显示全部楼层
谢谢ColeYao 耐心解答。

出0入0汤圆

发表于 2012-12-1 09:30:11 | 显示全部楼层
三角加速度斜率怎么推出来的,没明白,如果目标位置不一样,曲线是不是也不一样

出0入0汤圆

发表于 2012-12-5 22:32:07 | 显示全部楼层
想请教一下,如果我想把生成的点少一点,但是速度要上去,比如PWM周期数从1728到43,按照你原来的会生成6000多个数据。
但我不想要这么多,怎么弄好点,加速时间不能变,我试过改你软件里面的加速度,但是好像不行

出0入0汤圆

发表于 2012-12-5 22:37:26 | 显示全部楼层
jingwaner 发表于 2012-11-22 14:39
我是用EXCEL 直接用宏函数导出加速表。。。

上位机软件功力没楼主强,哈哈~~

楼主也可以把表格弄上来,大家一起学习

出0入0汤圆

发表于 2012-12-5 23:02:40 | 显示全部楼层
coleyao 发表于 2012-11-29 11:57
软件生成时有几个前提条件是预先填入的,如加速时间,而步数是不确定的,由单片机时钟、分频数等通过计算 ...

验证了,细分前后都是S型

出0入0汤圆

发表于 2012-12-5 23:03:19 | 显示全部楼层
lixingling 发表于 2012-11-29 08:17
我是想知道就算我是16细分,生成的步数也是比较多的,16细分,感觉速度的起点更高了, ...

我也在研究怎么使生成的步数少,可以交流一下

出0入0汤圆

发表于 2012-12-6 13:56:16 | 显示全部楼层
mark           

出0入0汤圆

发表于 2012-12-11 10:31:23 | 显示全部楼层
好技术!正需要!
头像被屏蔽

出0入0汤圆

发表于 2012-12-11 19:17:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-12-12 19:44:36 | 显示全部楼层
省很多事~谢谢楼主

出0入0汤圆

发表于 2012-12-18 11:53:50 | 显示全部楼层
定下

出0入0汤圆

发表于 2012-12-18 11:54:06 | 显示全部楼层
1111111

出0入0汤圆

发表于 2012-12-20 18:51:29 | 显示全部楼层
先顶了     

出0入0汤圆

发表于 2012-12-20 18:56:21 | 显示全部楼层
貌似没接触过,不懂

出0入0汤圆

发表于 2012-12-25 11:54:19 | 显示全部楼层
启动好象不够平,冲击比较大

出0入0汤圆

发表于 2012-12-25 16:17:29 | 显示全部楼层
强悍

出0入0汤圆

发表于 2013-1-5 00:20:30 | 显示全部楼层
都是高手,收藏备用了,谢谢

出0入0汤圆

发表于 2013-1-28 08:35:07 | 显示全部楼层
留个记号,研究研究

出0入0汤圆

发表于 2013-1-28 12:34:41 | 显示全部楼层
本帖最后由 cisforcer 于 2013-1-28 12:40 编辑

楼主 您好~  单片机小白 想将步进电机转速提高 不知道如何利用你的加速曲线软件计算器 算出来的数据
电机参数如下
相数:2/4
步距角:7.5° 起动频率:280pps min
定位转矩:100N.CM max
保持转矩:1.0Nm

接线方式是2相
驱动方式是 4拍 中断定时器1方式
晶振是11059200

软件中的   PWM翻转周期初始值(机器周期倍数)   6000   
           最高速PWM翻转周期 (机器周期倍数)  600  
                 6000 和  600 是就是 定时器的计数值吗 ?


通过软件计算出来的结果 PWM周期 这一列 是否就是需要 组成数组 然后根据数组,在中断函数中 取值,赋值给定时器,从而改变转速?

出0入0汤圆

发表于 2013-1-28 12:35:50 | 显示全部楼层
好东西收藏了!!!

出0入0汤圆

 楼主| 发表于 2013-1-28 14:45:35 | 显示全部楼层
cisforcer 发表于 2013-1-28 12:34
楼主 您好~  单片机小白 想将步进电机转速提高 不知道如何利用你的加速曲线软件计算器 算出来的数据
电机 ...

你说的没问题,要提高转速,关键是改加速到最后的那个600机器周期数字,其它关系不大。另外直接改定时器周期是可以实现加减速的,不过只能是一个定时器控制1路。

出0入0汤圆

发表于 2013-1-28 14:59:58 来自手机 | 显示全部楼层
coleyao 发表于 2013-1-28 14:45
你说的没问题,要提高转速,关键是改加速到最后的那个600机器周期数字,其它关系不大。另外直接改定时器 ...

感谢楼主这么快回复 晚上实验

出0入0汤圆

发表于 2013-2-2 10:27:29 | 显示全部楼层
linucos 发表于 2012-8-19 18:00
感谢分享,速度很快哦!

太感谢了
头像被屏蔽

出0入0汤圆

发表于 2013-2-2 10:53:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-3-20 10:31:58 | 显示全部楼层
coleyao 发表于 2012-11-20 12:11
原先写的时候是一鼓作气就写完了,注释没写的很详细,我以正弦加速为例把注释重新标了出来,希望对你有帮 ...

你好,能把这个用常用的公式描述一遍吗,这个代码看不太懂,

出0入0汤圆

 楼主| 发表于 2013-3-20 11:55:50 | 显示全部楼层
maimaige 发表于 2013-3-20 10:31
你好,能把这个用常用的公式描述一遍吗,这个代码看不太懂,

速度是加速度的积分形式,如果加速度曲线为余弦函数,那么速度曲线为正弦函数(减速曲线是加速曲线的反演),所以假定你的速度曲线要求已经确定,反过来求加速度曲线就好了,只是个微分问题,似乎应该不算难的!

出0入0汤圆

发表于 2013-4-12 10:52:47 | 显示全部楼层
表示只是过来看热闹的。S曲线啥的都是浮云。

出0入0汤圆

发表于 2013-4-12 20:20:31 | 显示全部楼层
好东西

出0入0汤圆

发表于 2013-4-12 21:48:20 | 显示全部楼层
单片机工控,需要机械的知识,这方面知识我还是匮乏呀

出0入0汤圆

发表于 2013-4-12 23:43:22 | 显示全部楼层
先MARK下

出0入0汤圆

发表于 2013-4-12 23:54:35 | 显示全部楼层
挺好的呀
。。。

出0入0汤圆

发表于 2013-4-16 11:58:41 | 显示全部楼层

你好,你的软件用起来不是很明白,我不懂delphi所以不了解代码,,软件输出的数据好像有问题...
数据的小PWM周期达不到设定值的啊.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-4-16 21:36:57 | 显示全部楼层
本帖最后由 coleyao 于 2013-4-16 21:39 编辑
hongwg86 发表于 2013-4-16 11:58
你好,你的软件用起来不是很明白,我不懂delphi所以不了解代码,,软件输出的数据好像有问题...
数据的小PWM周 ...


分频数设置太大了,导致计数脉冲周期较大,这样就很难在0.2秒内完成加速过程,要不将加速时间放宽,要不将分频系数降低!
或者改用正弦波加速度模式也会好得多。

出0入0汤圆

发表于 2013-4-23 11:30:35 | 显示全部楼层
coleyao 发表于 2012-8-22 05:55
是的,加速时间就是从最低速1/8000-最高速1/800的时间,至于从0-1/8000,可以直接启动(会略微带来振动, ...

如何控制生成的点数,比如我从   1000HZ  到  16000HZ ,  中间需要200个点就够了,但用你的那个生成曲线的话,会有很多的点,这个怎么解决呢?

出0入0汤圆

 楼主| 发表于 2013-4-23 11:51:21 | 显示全部楼层
lu976046395 发表于 2013-4-23 11:30
如何控制生成的点数,比如我从   1000HZ  到  16000HZ ,  中间需要200个点就够了,但用你的那个生成曲线 ...

改大机器周期分频系数,让输入定时器的计时脉冲周期变大一些就好了。

出0入0汤圆

发表于 2013-4-23 11:51:32 | 显示全部楼层
不错的东西。

出0入0汤圆

发表于 2013-4-24 00:00:29 | 显示全部楼层
先收藏了,以后说不定可以用着

出0入0汤圆

发表于 2013-6-7 09:19:13 | 显示全部楼层
软件生成的数据怎么用,有没朋友能发个例程啊

出0入0汤圆

发表于 2013-6-7 11:41:39 | 显示全部楼层
谢谢楼主

出0入0汤圆

发表于 2013-6-8 21:18:17 | 显示全部楼层
最近在做这个东西

出0入0汤圆

发表于 2013-6-9 16:19:47 | 显示全部楼层
thanks a lot

出0入0汤圆

发表于 2013-6-18 11:12:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-6-18 23:26:16 | 显示全部楼层
先收藏了,慢慢学习

出0入0汤圆

发表于 2013-6-18 23:43:49 | 显示全部楼层
不错,矢量控制利器

出0入0汤圆

发表于 2013-7-10 08:11:12 | 显示全部楼层
顶礼膜拜,学习中……

出0入0汤圆

发表于 2013-7-10 08:21:56 | 显示全部楼层

出0入0汤圆

发表于 2013-7-10 08:35:59 | 显示全部楼层
这个东西很不错,最近正在学习搞驱动电机,mark一下肯定有用!

出0入0汤圆

发表于 2013-7-15 21:28:45 | 显示全部楼层
太厉害了,如果有人把delphi翻译为C就更好了,期待分享。

出0入0汤圆

发表于 2013-8-12 21:28:25 | 显示全部楼层
不错!好东西!谢谢!

出0入0汤圆

发表于 2013-8-13 11:28:36 | 显示全部楼层
真是好东西,多谢了。

出0入0汤圆

发表于 2013-8-13 21:09:26 | 显示全部楼层
好东西,谢谢LZ

出0入0汤圆

发表于 2013-9-7 23:24:35 | 显示全部楼层
收藏备用,谢谢楼主!

出0入0汤圆

发表于 2013-9-27 21:22:16 | 显示全部楼层
啊,,这个靠谱,,呵呵,,

出0入0汤圆

发表于 2013-9-29 16:55:04 来自手机 | 显示全部楼层
收藏,备用啊~~~!

出0入0汤圆

发表于 2013-9-30 04:58:03 来自手机 | 显示全部楼层
多谢楼主,标记一下先。

出0入0汤圆

发表于 2013-9-30 07:04:08 | 显示全部楼层
正在学习步进电机,了解一下加速的优化。谢谢!

出0入0汤圆

发表于 2013-10-12 10:55:18 | 显示全部楼层

好东西,收藏一下!

出0入0汤圆

发表于 2013-10-12 17:12:20 | 显示全部楼层
很早前就听说过S曲线加速,没机会研究这个,今天在这里看到了,顶起,呵呵

出0入0汤圆

发表于 2013-10-12 17:19:09 | 显示全部楼层
ltj6111 发表于 2012-11-29 11:49
不是很明白,怎么调节软件设置,使得出来的数据更加实用

建议你把这个贴子从第一页看起,好像第一页有个地方提到过......

出0入0汤圆

发表于 2013-10-25 21:54:46 | 显示全部楼层
Mark,来学习的。

出0入0汤圆

发表于 2013-11-7 14:10:52 | 显示全部楼层
楼主很有耐心,这个话题很好,值得学习。最近在研究这个,顶一下!

出0入0汤圆

发表于 2013-11-8 16:12:57 | 显示全部楼层
一时兴起,按指数曲线做了一个S曲线在步进电机上运行,效果不错,下面这段符号是俾人做的拿出来供大家指正:
/****************************************************
按照最高速、最低速脉冲周期差值,产生指数曲线的周期序列
min_speed_time为最慢速周期值
max_speed_time为最快速周期值
***************************************************/
void Exponential_Curve_init(void)
{
        uint8_t i;
        for(i=0;i<Curve_length/2;i++)
                Exponential_Curve[i]=i*i;
        for(i=0;i<Curve_length/2;i++)
                Exponential_Curve[Curve_length/2+i]=2*Exponential_Curve[Curve_length/2-1]-Exponential_Curve[Curve_length/2-1-i];
        for(i=0;i<Curve_length;i++)
        {
                Exponential_Curve[i]=(Exponential_Curve[i]*(min_speed_time-max_speed_time))/(Exponential_Curve[Curve_length-1]);
                Exponential_Curve[i]+=max_speed_time;
        }
}

出0入76汤圆

发表于 2013-11-12 20:48:51 | 显示全部楼层
正在学习步进电机加减控制, 先Mark...

出35入0汤圆

发表于 2013-12-12 13:52:21 | 显示全部楼层
下来个看看.

出0入0汤圆

发表于 2013-12-25 21:19:27 | 显示全部楼层
楼主厉害!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-17 07:11

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

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