搜索
bottom↓
回复: 33

步进电机控制器方案目前的进展和问题请教

[复制链接]

出0入0汤圆

发表于 2014-8-13 09:43:07 | 显示全部楼层 |阅读模式
大家好,我刚开始接触stm32系列的芯片,目前有个项目需求是要控制20个步进电机用在公司的一款医疗设备上,目前用stm32f107做了4轴的控制器,带梯形的加减速,参考的avr的加减速方案资料,以前看过网友的方案,大致有2种,一种是在定时器溢出中断里面反转电平并计算加减速和当前轴位置,另一种是用定时器级联方式来做,说说这两种方案的弊端。

定时器中断方式来做固然简单但是缺点是频繁中断,浪费CPU的资源,若频率高的话会丢步,何况这么多个步进电机同时运作,取消。
级联方式简单,完全硬件来实现,但是计算加减速不方便,而且输出脉冲数大于65535不方便,而且中途若想变速或者反向的话不方便,取消。

DMA的原理就是开辟2个DMA缓冲器,每个3000 short,把加减速的delay计算出来填入到dma buffer中,用dma来传输,传输完3000个数据,dma才会中断,这时候选用另一个buffer,dma和tim继续跑,同时计算新的buffer中的delay,这样的话大大减少了CPU的负担,因为项目最多用60k的速度,我试了下,3轴同时输出60k不丢步。


目前的方案是买现成的驱动器,有没有网友做驱动器有经验,设备需要3个52系列电机,15个42系列电机,3个35系列电机。

还有就是stm32f107的timer最多可以有6个可用,也就是最多可以同时6个步进电机工作,我在想换成stm32f407,主频高,有17个tim可用。

请朋友们提供意见。

谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2014-8-13 09:51:40 | 显示全部楼层
定时器中断方案不行,我们公司以前试过,CPU开销太大,吃不消。

出0入0汤圆

发表于 2014-8-13 09:58:53 | 显示全部楼层
目前在用第一种方法,已经感觉到mcu频繁中断带来的压力了,尤其是在大细分下,速度不敢太快,还好我带的电机不多。

出0入0汤圆

发表于 2014-8-13 10:05:57 | 显示全部楼层
表示关注

出0入0汤圆

发表于 2014-8-13 10:06:15 | 显示全部楼层
这么多电机,完美配合好,那就很不错了,不懂这一行,帮顶

出0入17汤圆

发表于 2014-8-13 10:17:40 | 显示全部楼层
把运动控制功能集成到驱动器里面去吧。
主CPU通过一定的总线协议,发送运动命令到驱动器,这样比较可行

出0入0汤圆

发表于 2014-8-13 10:49:18 | 显示全部楼层
本帖最后由 zf12862177 于 2014-8-13 10:53 编辑

两种方案:

1:定制驱动器,不需要你控制器进行加减速控制,有很多行业用驱动器发脉冲是直接引出编码器,像这种根本就没有加减速的控制。但是有的步进电机驱动器自带加减速,可以帮你完成加减速。

2:用带总线的驱动器,直接RS232或者Can发送驱动命令,走多少步,多少速度都没问题。当然前提是选的电机有足够的推力

最后做一点生意,我就是做电机控制的,我的驱动器能满足你的应用。你的1个主控芯片,直接发脉冲就行了,不需要加减速控制,能发多少路脉冲,方向信号,就能控制多少路电机驱动器,总线,脉冲都可以。(不过目前我们总线只支持RS232)如果量大可以定制can版。

出0入0汤圆

发表于 2014-8-13 11:02:59 | 显示全部楼层
前几天去赛格买  L297 ,拆机片都给你报价¥15,,,,神马世道了,,,,

出10入46汤圆

发表于 2014-8-13 11:47:26 | 显示全部楼层
配合CPLD应该可行吧!

出0入0汤圆

发表于 2014-8-13 12:42:39 | 显示全部楼层
用TI的8824Q1,具有片上 1/32 微步进分度器(步进/方向控制)的汽车类 1.6A 双极步进电机驱动器

出0入0汤圆

发表于 2014-8-13 15:05:48 | 显示全部楼层
另外,求一份定时器级联方式驱动步进电机的例程

出0入0汤圆

 楼主| 发表于 2014-8-13 15:35:25 | 显示全部楼层
回复7楼,你的建议不错,不过我还是想做成通用的,这样的话成本会低很多,若是用stm32f407做的话可以同时控制15个电机,并且满足要求的话就碉堡了

出0入0汤圆

发表于 2014-8-13 16:25:29 | 显示全部楼层
这么多电机是独立运行的么?没有任何关联么?

出0入0汤圆

发表于 2014-8-13 16:52:25 | 显示全部楼层
基于你的电机很多且用于医疗设备,讲下我的经验。最好分模块设计,每个模块里包含1个或几个电机,这样便于后续生产和现场维护,因为现场维护人员通常是做板级维护的,不要搞成某个电机驱动有故障得将整块主板换掉。每个模块有单独的控制器。各个模块的控制器通过总线和主控制器通信。

出0入0汤圆

 楼主| 发表于 2014-8-13 17:20:58 | 显示全部楼层
14楼说得对,我也是考虑每块主控控制4个步进电机,然后有个中央控制芯片与5个主控通信,这样利于维护和接线。

出0入0汤圆

发表于 2014-8-14 08:52:51 | 显示全部楼层
步进电机的驱动频率一般都不超过2K,你搞60K有多大的意义?

出0入0汤圆

 楼主| 发表于 2014-8-14 08:55:20 | 显示全部楼层
dongfangjian 发表于 2014-8-14 08:52
步进电机的驱动频率一般都不超过2K,你搞60K有多大的意义?

脉冲外接 驱动器,驱动器调成64细分的话,最大的速度能用到40k

出0入0汤圆

发表于 2014-8-14 09:02:39 | 显示全部楼层
原理你都整理出来了嘛,挺不错的,你的电机都是小电机啊,不需要通用驱动器的,莫大用过A3977就可以了,要便宜的话rohm有款BD63860efv,基本兼容,价格更加便宜去看看吧

出0入0汤圆

 楼主| 发表于 2014-8-14 11:12:21 | 显示全部楼层
myxiaonia 发表于 2014-8-14 09:02
原理你都整理出来了嘛,挺不错的,你的电机都是小电机啊,不需要通用驱动器的,莫大用过A3977就可以了,要 ...

这个支持细分吗,没有细分的话电机噪音很大

出0入0汤圆

发表于 2014-8-14 11:16:46 | 显示全部楼层
guoxiong1986 发表于 2014-8-14 11:12
这个支持细分吗,没有细分的话电机噪音很大

就这么小的电机噪声也不会太大,最大8细分,网上找找看呗

出0入0汤圆

 楼主| 发表于 2014-8-14 15:15:05 | 显示全部楼层
myxiaonia 发表于 2014-8-14 11:16
就这么小的电机噪声也不会太大,最大8细分,网上找找看呗

我试过,发热好严重,电机有点烫,64细分,不转也发烫

出0入0汤圆

发表于 2014-8-17 11:13:22 | 显示全部楼层
楼主,计算新的buffer值是在dma中断里计算的吗?

出0入0汤圆

发表于 2014-8-26 14:37:00 | 显示全部楼层
我刚做完个类似的项目,不过我的是用linux ARM9+fpga的方式的。测试后还是很稳定的。

出0入16汤圆

发表于 2014-8-26 14:59:10 来自手机 | 显示全部楼层
用一STM32F103R8搞定20个步进电机毫无压力的飘过

出0入16汤圆

发表于 2014-8-26 15:00:08 来自手机 | 显示全部楼层
每个电机独立控制,64细分

出0入0汤圆

发表于 2014-8-26 15:28:02 | 显示全部楼层
本帖最后由 hellolinux 于 2014-8-26 15:30 编辑

定时中断为什么不可以?
相对于步进电机步进时间而言,定时器绰绰有余。
定时器+细分驱动板我觉得可以
每个电机定义一个结构体
motoa.switch
motoa.direction
motoa.clock

motob.switch
motob.direction
motob.clock
......
在定时中断中只要做比较就可以
        motoa_clock++;
        if{motoa.switch==ON}
        {
                if(motoa.direction==AAA)
                        \\设置驱动正转
                else
                        \\设置驱动反转
                       
                if(motoa_clock>motoa.clock)
                {
                        \\给驱动一个CLOCK
                        motoa_clock = 0;
                }
        }



另觉得14楼建议不错

出0入0汤圆

发表于 2014-8-27 10:52:08 | 显示全部楼层
看到一个淘宝店,里面是STM32+THB6128的,可以参考下
http://item.taobao.com/item.htm? ... 240&ns=1#detail

出0入0汤圆

 楼主| 发表于 2014-9-1 15:40:08 | 显示全部楼层
要控制20个步进电机, 我在网上找到一个PCI转8串口卡,可以用每个串口和每个主控芯片直接通信,每个芯片控制4个轴,这样的话也方便更换,不需要一个主控控制5个从控,然后主控和PC通信了,大家觉得呢?

出0入0汤圆

发表于 2014-9-7 09:24:21 | 显示全部楼层
AVR_USER 发表于 2014-8-26 14:59
用一STM32F103R8搞定20个步进电机毫无压力的飘过

大哥,能否给点思路??!!

出0入0汤圆

发表于 2014-10-28 16:20:11 | 显示全部楼层
AVR_USER 发表于 2014-8-26 14:59
用一STM32F103R8搞定20个步进电机毫无压力的飘过

大神的节奏。。

出0入0汤圆

发表于 2018-2-15 11:38:00 | 显示全部楼层
还是用fpga合理

出0入0汤圆

发表于 2018-2-15 23:46:18 | 显示全部楼层
我也在玩步进电机。顶一下。。。。。

出0入0汤圆

发表于 2018-3-19 14:37:16 | 显示全部楼层
我也在做

出0入0汤圆

发表于 2018-4-1 00:30:53 | 显示全部楼层
也在头疼这个多个步进电机的是,我们涉及的是12个步进电机,要有加减速度。哎,有没有比较牛的mcu,发PWM脉冲,同时能自动记录脉冲数的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 06:19

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

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