向北 发表于 2019-11-16 17:36:41

求助:stm32同时控制16路步进电机的思路

问题是这样的,我想要同时控制16路步进电机,要能指定每一路的旋转角度和速度(比如第一路以每秒一圈的速度转360度然后再转回去,第二路以一秒两圈的速度转360度然后再转回去,这个速度 和这个360度 是可以通过串口设置的),还需要启动的时候带加减速,这个加减速可以固定在程序中不需要更改,。。总共有16路,需要用串口通信发指令控制每一路的速度和圈数,请问这样的要求用一个stm32芯片能实现吗?如果可以的话愿意有老师教教我吗?。。。。我好想找个人带带我啊{:cry:}

mcu5i51 发表于 2019-11-16 17:40:08

如果速度不是很高,可以用定时器+IO实现

jyrpxj 发表于 2019-11-16 17:55:11

估计难,因为要精确计算脉冲数定位,假设电机每秒一圈3200脉冲,16个电机,平均1/(3200*16)秒也就是19.5us就有一个脉冲计数中断。你还有串口通信中断,好有显示,按键扫描,

向北 发表于 2019-11-16 17:57:43

mcu5i51 发表于 2019-11-16 17:40
如果速度不是很高,可以用定时器+IO实现

您能详细讲讲吗 。。定时器确定一个时基,然后在中断里去翻转io,那我怎么确定哪些需要翻转哪些不需要呢。。。如果需要不同的时基就使用不同的定时器,那么这样子各种中断不断到来 我还能串口通信吗。。我不太会。。也不知我说的对不对。。请您费心多说点吧

向北 发表于 2019-11-16 17:59:00

jyrpxj 发表于 2019-11-16 17:55
估计难,因为要精确计算脉冲数定位,假设电机每秒一圈3200脉冲,16个电机,平均1/(3200*16)秒也就是19.5us ...

没有显示 只有通信。。和需要回原点的传感器。。。。

向北 发表于 2019-11-16 18:01:37

jyrpxj 发表于 2019-11-16 17:55
估计难,因为要精确计算脉冲数定位,假设电机每秒一圈3200脉冲,16个电机,平均1/(3200*16)秒也就是19.5us ...

我可以多用些stm32的,每个最多可以控制多少个电机呀?。。。如果速度不超过每秒5圈的话

向北 发表于 2019-11-16 18:04:53

我看到了这个 我好想知道这个是怎么做的呀。。。哪怕我一个芯片能控制4个 或者8个电机也行呀速度每秒5圈以内 这样能行吗 老师们 求帮助呀

flash3g 发表于 2019-11-16 18:48:29

16个同时不同速度工作STM32够呛的

ST有步进驱动芯片SPI接口的,发指令运行可以

advantech 发表于 2019-11-16 18:53:15

这个 要是用FPGA配合MCU来实现,160路都没有问题吧。

advantech 发表于 2019-11-16 18:56:48

向北 发表于 2019-11-16 18:04
我看到了这个 我好想知道这个是怎么做的呀。。。哪怕我一个芯片能控制4个 或者8个电机也行呀速度每秒5圈 ...

这个好像是FPGA做的

向北 发表于 2019-11-16 19:35:48

flash3g 发表于 2019-11-16 18:48
16个同时不同速度工作STM32够呛的

ST有步进驱动芯片SPI接口的,发指令运行可以 ...

您可以告诉我一下型号吗 。。我刚才找了 只找到驱动器上用的,。。。

向北 发表于 2019-11-16 19:36:23

advantech 发表于 2019-11-16 18:53
这个 要是用FPGA配合MCU来实现,160路都没有问题吧。

不会FPGA。。{:sad:}

HZKJ 发表于 2019-11-16 19:46:43

上总线,主控只负责发指令。

whatcanitbe 发表于 2019-11-16 20:22:08

1.485总线就行,配上支持485的步进驱动

辣条 发表于 2019-11-16 20:27:38

步进电机每圈脉冲数调低,选主频高的型号,不过要考虑好io数量和总驱动能力
要不就一主多从,缺点是数据交换麻烦,不利于实时控制

ilan2003 发表于 2019-11-16 20:45:24

本帖最后由 ilan2003 于 2019-11-16 20:46 编辑

用CAN通讯吧 ;现在更加先进的是用EtherCat

向北 发表于 2019-11-16 21:29:35

感谢各位老师,现在已经有两个方向了,1总线驱动,2多个芯片或者spi专用芯片,我看一下价格再决定。再次谢谢给位老师 谢谢论坛

Error.Dan 发表于 2019-11-16 21:30:20

如果不是高速的情况下做16个软定时器问题不大的。
现实情况下高主频单片机定时器中断100k不影响其他功能的。

mcu5i51 发表于 2019-11-17 14:01:44

向北 发表于 2019-11-16 17:57
您能详细讲讲吗 。。定时器确定一个时基,然后在中断里去翻转io,那我怎么确定哪些需要翻转哪些不需要呢 ...

你可以看看3D打印机原码文件,基本上和C语言差不多;
实现方法就是在定时中断中处理几个计数变量,如果为0就改变对应的IO,并设置新的数值后继续处理,几路时多数芯片可以到10K左右吧,16路STM32中就要看优化程度了

myqiang1990 发表于 2019-11-17 15:39:54

看你用什么驱动器,PWM类型的驱动器就超级简单啊,只要PWM够,100路电机我都能控制,如果是脉冲+DIR方式的驱动,有点困难

fdcnuaa 发表于 2019-11-17 20:13:40

数量多的话可以考虑FPGA
页: [1]
查看完整版本: 求助:stm32同时控制16路步进电机的思路