amobbs.com 阿莫电子技术论坛

标题: 求推荐一个可以实时控制的步进控制卡或者是固件 [打印本页]

作者: iamseer    时间: 2022-11-14 14:27
标题: 求推荐一个可以实时控制的步进控制卡或者是固件
本帖最后由 iamseer 于 2022-11-14 14:28 编辑

我现在有这样一个需求,我希望能够实时控制步进电机来画图(2轴),但是希望能够在步进电机移动到一半时发指令改变移动的目标位置。简单来说,就是想要指哪步进电机移动到哪。
我看主流的步进控制卡都是给3D打印机用的。我仔细研究过Marlin的手册,发现这种用Gcode控制的方式实现不了这个目的。要么一点点小步移动,中间会不停的加减速,要么发指令强制停止,还是要停下来再重新加速。
我希望能在改变移动的目标位置时控制器能重新计算加减速,以能够平稳移动到新位置。
没有量产需求,能买块卡解决问题就很好,只是电机比较大,希望电流能大一些。另外如果是开源固件自己配步进驱动器也可以。
希望有经验的坛友能推荐一下,谢谢。

作者: leijiayou    时间: 2022-11-14 16:37
PC ---- 控制卡 ---- 步进驱动 ---- 电机          数据流是这样吗
作者: thepresent    时间: 2022-11-14 16:51
雷赛的Ethercat主站总线控制的板卡可以实现,不过步进电机驱动器要使用Ethercat从站的驱动器。像DMC-E3032这款。
[attach]601861[/attach]
作者: colinzhao    时间: 2022-11-14 20:54
只要画圆,用单片机写个积分器很难吗
作者: colinzhao    时间: 2022-11-14 20:55
thepresent 发表于 2022-11-14 16:51
雷赛的Ethercat主站总线控制的板卡可以实现,不过步进电机驱动器要使用Ethercat从站的驱动器。像DMC-E3032 ...
(引用自3楼)

说实话,比较不喜欢这种梯形加速度,S三次加速才好
作者: thepresent    时间: 2022-11-14 21:08
colinzhao 发表于 2022-11-14 20:55
说实话,比较不喜欢这种梯形加速度,S三次加速才好
(引用自5楼)

手册中说可以用S曲线加减速。
作者: iamseer    时间: 2022-11-15 11:13
colinzhao 发表于 2022-11-14 20:54
只要画圆,用单片机写个积分器很难吗
(引用自4楼)

是要画图不是画圆。
作者: leijiayou    时间: 2022-11-15 11:38
把需求明确一点        我可以给你测试验证一下
作者: iamseer    时间: 2022-11-15 11:39
thepresent 发表于 2022-11-14 16:51
雷赛的Ethercat主站总线控制的板卡可以实现,不过步进电机驱动器要使用Ethercat从站的驱动器。像DMC-E3032 ...
(引用自3楼)

非常感谢提供信息。我用你截图里的关键字搜了一下,似乎trinamic家带 Motion Control 的芯片全都可以。能用全集成的驱动芯片用SPI直推步进电机,也有转换芯片能把SPI换成DIR/STEP信号。这样接树莓派之类就连单片机都省了。

另外我找到AccelStepper库支持这种功能,但是通讯部分没有要自己写。
作者: iamseer    时间: 2022-11-15 11:46
leijiayou 发表于 2022-11-15 11:38
把需求明确一点        我可以给你测试验证一下
(引用自8楼)

举这个例子:
现在两轴位置在0,0。我发个指令让他跑到100,100。步进开始往目标位置跑。
步进还没跑到100,100,我再发个指令让他跑到100,0。我理想情况应该是驱动器重新计算加速度并改变方向往100,0跑。不要先跑到100,100再跑100,0,也不要急停下来再跑。

大概是trinamic里这种功能。
[attach]601932[/attach]
作者: dukelec    时间: 2022-11-15 13:28
本帖最后由 dukelec 于 2022-11-15 14:49 编辑

我写的这个默认就是支持实时修改位置、速度等参数的模式:
https://github.com/dukelec/stepper_motor_controller
作者: colinzhao    时间: 2022-11-15 13:59
iamseer 发表于 2022-11-15 11:13
是要画图不是画圆。
(引用自7楼)

sorry,草率了
作者: leijiayou    时间: 2022-11-16 09:29
iamseer 发表于 2022-11-15 11:46
举这个例子:
现在两轴位置在0,0。我发个指令让他跑到100,100。步进开始往目标位置跑。
步进还没跑到100, ...
(引用自10楼)

简单测试了下           中途改变目标位置
作者: thepresent    时间: 2022-11-16 10:21
iamseer 发表于 2022-11-15 11:46
举这个例子:
现在两轴位置在0,0。我发个指令让他跑到100,100。步进开始往目标位置跑。
步进还没跑到100, ...

(引用自10楼)

要改变方向的话不停止,怎么走?从0到100的过程中实时把目标位置改成200的话,可以更新参数不用停顿。但是从0走到100的过程中突然要返回0,如果电机速度不降到零,直接切换方向会不会失步?
作者: kyq_linux    时间: 2022-11-16 10:37
thepresent 发表于 2022-11-16 10:21
要改变方向的话不停止,怎么走?从0到100的过程中实时把目标位置改成200的话,可以更新参数不用停顿。但 ...
(引用自14楼)

你要求突然返0,从接收到指令开始,它肯定还要向前过冲,速度降下来,才会换向。不可能原地返回的。
作者: iamseer    时间: 2022-11-16 10:43
thepresent 发表于 2022-11-16 10:21
要改变方向的话不停止,怎么走?从0到100的过程中实时把目标位置改成200的话,可以更新参数不用停顿。但 ...
(引用自14楼)

不好意思可能没说清楚。如果是marlin或者是grbl这类控制卡,要么等到上一条指令执行完,要么得发急停指令打断,彻底停下来再走。这样的话就不太好。

您提到:“从0到100的过程中实时把目标位置改成200的话,可以更新参数不用停顿”,这就是我需要的功能。我看到常见的控制卡固件都不支持。至于要求反向时过充以及速度降到零再反向,这些当然无可避免。




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