iamseer 发表于 2022-11-14 14:27:35

求推荐一个可以实时控制的步进控制卡或者是固件

本帖最后由 iamseer 于 2022-11-14 14:28 编辑

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

leijiayou 发表于 2022-11-14 16:37:54

PC ---- 控制卡 ---- 步进驱动 ---- 电机          数据流是这样吗

thepresent 发表于 2022-11-14 16:51:51

雷赛的Ethercat主站总线控制的板卡可以实现,不过步进电机驱动器要使用Ethercat从站的驱动器。像DMC-E3032这款。

colinzhao 发表于 2022-11-14 20:54:08

只要画圆,用单片机写个积分器很难吗

colinzhao 发表于 2022-11-14 20:55:37

thepresent 发表于 2022-11-14 16:51
雷赛的Ethercat主站总线控制的板卡可以实现,不过步进电机驱动器要使用Ethercat从站的驱动器。像DMC-E3032 ...
(引用自3楼)

说实话,比较不喜欢这种梯形加速度,S三次加速才好

thepresent 发表于 2022-11-14 21:08:54

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

手册中说可以用S曲线加减速。

iamseer 发表于 2022-11-15 11:13:22

colinzhao 发表于 2022-11-14 20:54
只要画圆,用单片机写个积分器很难吗
(引用自4楼)

是要画图不是画圆。

leijiayou 发表于 2022-11-15 11:38:33

把需求明确一点      我可以给你测试验证一下

iamseer 发表于 2022-11-15 11:39:02

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:31

leijiayou 发表于 2022-11-15 11:38
把需求明确一点      我可以给你测试验证一下
(引用自8楼)

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

大概是trinamic里这种功能。

dukelec 发表于 2022-11-15 13:28:50

本帖最后由 dukelec 于 2022-11-15 14:49 编辑

我写的这个默认就是支持实时修改位置、速度等参数的模式:
https://github.com/dukelec/stepper_motor_controller

colinzhao 发表于 2022-11-15 13:59:02

iamseer 发表于 2022-11-15 11:13
是要画图不是画圆。
(引用自7楼)

sorry,草率了

leijiayou 发表于 2022-11-16 09:29:03

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

简单测试了下         中途改变目标位置

thepresent 发表于 2022-11-16 10:21:41

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:44

thepresent 发表于 2022-11-16 10:21
要改变方向的话不停止,怎么走?从0到100的过程中实时把目标位置改成200的话,可以更新参数不用停顿。但 ...
(引用自14楼)

你要求突然返0,从接收到指令开始,它肯定还要向前过冲,速度降下来,才会换向。不可能原地返回的。

iamseer 发表于 2022-11-16 10:43:05

thepresent 发表于 2022-11-16 10:21
要改变方向的话不停止,怎么走?从0到100的过程中实时把目标位置改成200的话,可以更新参数不用停顿。但 ...
(引用自14楼)

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

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