amobbs.com 阿莫电子技术论坛

标题: 基于STM32的4轴步进电机加减速控制全套工程源码 [打印本页]

作者: gongjun98    时间: 2013-4-18 11:56
标题: 基于STM32的4轴步进电机加减速控制全套工程源码
基于STM32的4轴步进电机加减速控制全套工程源码,共有两套;
一套是STM32F103的,另外一套是STM32F405的;
可以同时控制4轴步进电机进行加减速;
速率可以达到100K以上;

源码算法是基于《AVR446: Linear speed control of stepper motor》;
详细见附件压缩包中的文档,已经在实际工程中得到应用;

欢迎大家讨论并提出改进意见。



作者: semonpic    时间: 2013-4-18 12:01
好东西要订
作者: dxf5200    时间: 2013-4-18 12:02
mark                  
作者: pulan    时间: 2013-4-18 12:04
好东西要mark
作者: xxoo14    时间: 2013-4-18 12:10
好东西,加速算法是线性的,有非线性的吗?
作者: chaoyue0376    时间: 2013-4-18 12:11
mark一下
作者: touch_mcu    时间: 2013-4-18 12:13
好东西要mark
作者: qzwx741    时间: 2013-4-18 12:16
mark,学习了
作者: stely    时间: 2013-4-18 12:18
必须得顶。配上电路图更好。
作者: lyg407    时间: 2013-4-18 12:20
谢谢分享。。。

作者: gallop020142    时间: 2013-4-18 12:20
mark
作者: jiaxinhui    时间: 2013-4-18 12:23
好资料一定要顶
作者: dmxfeng    时间: 2013-4-18 12:23
楼主好人
作者: lans0625    时间: 2013-4-18 12:25
谢谢分享,正到处找这方面资料……
作者: bruce_helen    时间: 2013-4-18 12:36
好东西。我们下面准备用STM32F207系列做电机驱动。但是我没做过电机相关的驱动。我们的设备上有5个直流电机,需要同时驱动。不知道这个移植到直流电机上行不行?
作者: buxinshan    时间: 2013-4-18 12:43
好资料,必须顶!!!!
作者: kxm2008    时间: 2013-4-18 12:43
谢谢分享
作者: wsws1057    时间: 2013-4-18 12:49

作者: vcprograme    时间: 2013-4-18 12:59
谢谢共享!!!!!!!
作者: bbs2009    时间: 2013-4-18 13:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: wallacer    时间: 2013-4-18 13:12
记得之前做医疗仪器时候也是用的这个算法来控制步进电机的,真心不错!
作者: mage99    时间: 2013-4-18 13:33
好东西要顶~
作者: lanyuye    时间: 2013-4-18 13:37
4轴应用是什么设备啊?
作者: Elec_Ramble    时间: 2013-4-18 13:48
Mark,顶…
来自:amoBBS 阿莫电子论坛 Windows Phone 7 客户端
作者: GUOHUDONG    时间: 2013-4-18 13:53
谢谢分享
作者: daya    时间: 2013-4-18 14:44
good~~~
正准备做,参考一下~~~
作者: im叶飞    时间: 2013-4-18 14:58
如果能把   数据处理  不放中断里 速度 能 更快的 ..
作者: 丅輩孑_变壊    时间: 2013-4-18 14:59
火速先顶,在下,,,,
作者: z421868436    时间: 2013-4-18 14:59
MARK
以后慢慢学习
作者: 苹果520    时间: 2013-4-18 16:29
里面有编码器的读取吗?
作者: qujingqi    时间: 2013-4-18 16:43
谢谢你的发表!
作者: hellolinux    时间: 2013-4-18 16:49
配上电路图更好。
作者: Bicycle    时间: 2013-4-18 17:41
配上电路图更好。

+1
作者: vc8fans    时间: 2013-4-18 17:53
太强大了,,
作者: newhz    时间: 2013-4-18 17:57
好东西,顶下
作者: genhao2    时间: 2013-4-18 18:04
学习一下
作者: cdlxzlp    时间: 2013-4-18 18:55
坚决 顶起来啊
作者: ap0705307    时间: 2013-4-18 19:09
那文档我看过!但未能成功移植!希望可以参考你的...
作者: ap0705307    时间: 2013-4-18 19:20
还有这个貌似是给定固定的步数,然后算出一条加减速曲线的。过程是加速》减速...
我想问能不能上次给的位置还没到达的时候,给出新的位置然后平滑过渡到新的位置?
作者: wuguoyan    时间: 2013-4-18 19:26
不懂,但是感谢楼主的分享。。
作者: wind2100    时间: 2013-4-18 19:26
我觉得应该将单片机的配置和步进电机的驱动程序分开写(各一个C文件) 这样更容易移植。
可读性更强
作者: lwg998    时间: 2013-4-18 20:40
学习了,谢谢楼主
作者: lcmdw    时间: 2013-4-18 21:49
学习学习

作者: 130300dong    时间: 2013-4-18 22:40
不是太懂 但是应该不错
作者: pingsiu    时间: 2013-4-18 23:14
Thank
作者: 桂电小手    时间: 2013-4-19 01:03
谢谢分享
作者: dalianlwd    时间: 2013-4-19 07:37
太好了,非常感谢楼主的奉献,很有价值。
作者: pipi516    时间: 2013-4-19 08:41
mark 步进电机!
作者: cqfeiyuxmj    时间: 2013-4-19 08:57
这个必须顶,真是及时雨呀,多谢楼主.
作者: fayuanye    时间: 2013-4-19 09:18
谢谢分享!!
作者: xiaocool    时间: 2013-4-19 12:07
谢谢楼主分享
作者: wzhscj    时间: 2013-4-19 12:16
不顶一下,太对不起楼主了
作者: myqiang1990    时间: 2013-4-19 14:54
本帖最后由 myqiang1990 于 2013-4-19 14:58 编辑

楼主如果能做到更具目标位置动态加减速就更好了,而不是设定多少步然后就加减速直到走完这些为止,然后才能响应新的位置。跟39楼描述那要,
这份文档我研究过,而且还有AVR的源码。感觉不适合做更具目标位置进行动态加减速。

[attach]105675[/attach]


作者: KSAYY    时间: 2013-4-19 16:33
谢谢分享。。。
作者: yanmaishuilei    时间: 2013-4-19 18:36
谢谢分享,下来参考。
作者: dtdzlujian    时间: 2013-4-19 18:58
很强大啊!支持
作者: hmd420304805    时间: 2013-4-19 19:34
同学,这个在中断里处理的,就4个轴同时到100k的速度?400k的中断速度,加上通讯中断,加上系统中断,加上外部中断,全是中断啊!cpu还能做什么?楼主发代码前请三思!
作者: lwg998    时间: 2013-4-20 09:52
谢谢楼主分享,学习中
作者: wenunit    时间: 2013-4-20 15:33
精彩,好东西.
作者: kaif_w    时间: 2013-4-21 11:47
好东西,谢楼主分享。
作者: xmdesign    时间: 2013-4-21 12:03
好东西学习了,谢谢!
作者: YS126    时间: 2013-4-21 13:22
步进电机控制的好,不太容易啊。
作者: 兜里有糖    时间: 2013-4-21 13:57
谢谢楼主分享~
作者: mcu5i51    时间: 2013-4-21 14:25
难得的好东西呀,
作者: zzz123456    时间: 2013-4-22 00:04
记号,收藏
作者: hongyao    时间: 2013-4-22 09:32
好资料,必须顶!!!!
作者: dory_m    时间: 2013-4-22 14:10
学习,谢谢!!!
作者: zndz410    时间: 2013-4-22 14:41
好东西,果断mark。
作者: f8023m    时间: 2013-4-24 17:06
下来看看,应该不错
作者: Phonse    时间: 2013-4-24 17:10
下载备用。。后期可能要用到的
作者: gallop020142    时间: 2013-5-7 16:31
myqiang1990 发表于 2013-4-19 14:54
楼主如果能做到更具目标位置动态加减速就更好了,而不是设定多少步然后就加减速直到走完这些为止,然后才能 ...


同学,看过你之前的几个帖子,可以清楚地看到你在步进电机控制这方面的进展,

请问怎么才能够在楼主的基础上实现动态地调速呢?即:从一个速度-->加速/减速-->另一个速度呢?

我尝试着改了一下,发现加速还好改一点,但是减速过程比较麻烦,不知道你有没有这方面的经验呢?谢谢
作者: lanyuye    时间: 2013-5-7 16:34
当在加减速最高速时,其他任务会不会比较难执行
作者: myqiang1990    时间: 2013-5-7 18:37
gallop020142 发表于 2013-5-7 16:31
同学,看过你之前的几个帖子,可以清楚地看到你在步进电机控制这方面的进展,

请问怎么才能够在楼主的 ...

这份代码我没有用,不过看过一下,我也没有改过,我觉得如果做成自动跟踪目标来调速很麻烦~~~暂时没时间研究~~~你研究出来说一下思路呀!!!
作者: myqiang1990    时间: 2013-5-7 18:39
lanyuye 发表于 2013-5-7 16:34
当在加减速最高速时,其他任务会不会比较难执行

楼主大的代码应该是固定8细分的,8细分做高速,对其他任务影响不是很大~~如果高细分就会~~~所以最好做成变细分~~高速低细分,低速高细分,但是我觉得如果用变细分,要在这份代码上修改, 我觉得很困难哦~~有哪位大大改出来了~~
作者: xxoo14    时间: 2013-5-7 19:21
ap0705307 发表于 2013-4-18 19:20 还有这个貌似是给定固定的步数,然后算出一条加减速曲线的。过程是加速》减速... 我想问能不能上次给的位置 ...

速度时时调整已经做好了,位置与速度时时调整正在进行中。
作者: xxoo14    时间: 2013-5-7 19:28
myqiang1990 发表于 2013-4-19 14:54 楼主如果能做到更具目标位置动态加减速就更好了,而不是设定多少步然后就加减速直到走完这些为止,然后才能 ...

根据目标位置?不知道是不是这样理解的:给定一个位置,加速时间,中间通过加速,匀速,减速到达位置后。然后再给类似的目标位置
作者: xxoo14    时间: 2013-5-7 19:31
gallop020142 发表于 2013-5-7 16:31 同学,看过你之前的几个帖子,可以清楚地看到你在步进电机控制这方面的进展, 请问怎么才能够在楼主的 ...

只要动态改变速度?
作者: myqiang1990    时间: 2013-5-7 19:53
xxoo14 发表于 2013-5-7 19:28
根据目标位置?不知道是不是这样理解的:给定一个位置,加速时间,中间通过加速,匀速,减速到达位置后。 ...

不是,而是不到目标位置,电机还在运动的时候目标位置已经改变,但是电机必须实时响应最新位置。。看这个链接的视频。。。电机要能这样反应。。。

http://www.amobbs.com/forum.php? ... =%E4%BA%91%E5%8F%B0
作者: ddcour    时间: 2013-5-7 20:16
顶,                     
作者: gallop020142    时间: 2013-5-7 21:40
xxoo14 发表于 2013-5-7 19:31
只要动态改变速度?


对,我现在只想速度实时平稳地改变就行,

现在不知道怎么在楼主的基础上实现动态速度调整,我之前弄了一下,加速好像还好实现一点,但是减速的话就比较麻烦呢
作者: AllEle    时间: 2013-5-7 21:48
ms好东西
作者: xxoo14    时间: 2013-5-7 22:41
gallop020142 发表于 2013-5-7 21:40
对,我现在只想速度实时平稳地改变就行,

现在不知道怎么在楼主的基础上实现动态速度调整,我之前弄了 ...

我的加减速都是需要时才计算好,计算的是加速过程的数据,然后就在pwm或者定时器中断里面查表改变频率,加速顺序查,加速就逆向。时时改变只是需要判断当前速度与你下一步需求的目标速度的大小关系了。
作者: sergeserge    时间: 2013-5-7 22:45

作者: Flyback    时间: 2013-5-7 22:49
TIM-DMA才是王道
作者: xxoo14    时间: 2013-5-7 22:59
myqiang1990 发表于 2013-5-7 19:53
不是,而是不到目标位置,电机还在运动的时候目标位置已经改变,但是电机必须实时响应最新位置。。看这个 ...

时时响应应该不可能,如果要反向的话就是先最短时间减速然后最短时间加速到目标位置,时间很短,也算是个时时吧。

作者: gallop020142    时间: 2013-5-7 23:03
xxoo14 发表于 2013-5-7 22:41
我的加减速都是需要时才计算好,计算的是加速过程的数据,然后就在pwm或者定时器中断里面查表改变频率, ...

我有点明白你的意思了,但是这样计算来得及吗?特别是减速的时候,得提前算好多的数,而加速时是递推的,就这还担心算不过来呢
作者: xxoo14    时间: 2013-5-7 23:13
gallop020142 发表于 2013-5-7 23:03
我有点明白你的意思了,但是这样计算来得及吗?特别是减速的时候,得提前算好多的数,而加速时是递推的, ...

可以的,我用的是m0 22m的速度,如果用m3 72m的速度话估计位置也可以处理了
作者: Keller    时间: 2013-5-8 17:20
正在学习,遇到众多问题啊 ,AVR里面好多固定数值不理解是什么含义,移植到STM32里不知道需不需要变,我看了楼主的STM32版的,变了好多,而且不知道为什么变成这个数值。
作者: lixingling    时间: 2013-5-9 19:34
有没有原理图
作者: deeplly    时间: 2013-5-9 21:20
顶起来!!!
作者: champtech    时间: 2013-5-10 14:52
这个速度比较快,之前我最高速只有20K
作者: lcmdw    时间: 2013-5-10 15:17
好东西,顶起!
作者: liming    时间: 2013-5-10 17:27
好资料一定要顶起来
作者: robin林    时间: 2013-5-11 10:58
谢谢!     
作者: vickyphan    时间: 2013-5-11 15:14
mark  一下
作者: pipi516    时间: 2013-5-11 15:29
mark

作者: pipi516    时间: 2013-5-11 15:30
mark

作者: xh2008email    时间: 2013-5-19 12:36
LZ的代码不能点动(就是一个按钮,按下去,某轴转动,松开轴停下来)?
作者: 小黑鱼1148    时间: 2013-5-19 12:41
谢谢分享
作者: xh2008email    时间: 2013-5-19 14:38
有人做过点动的步进电机驱动吗?




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4