求助:stm32同时控制16路步进电机的思路
问题是这样的,我想要同时控制16路步进电机,要能指定每一路的旋转角度和速度(比如第一路以每秒一圈的速度转360度然后再转回去,第二路以一秒两圈的速度转360度然后再转回去,这个速度 和这个360度 是可以通过串口设置的),还需要启动的时候带加减速,这个加减速可以固定在程序中不需要更改,。。总共有16路,需要用串口通信发指令控制每一路的速度和圈数,请问这样的要求用一个stm32芯片能实现吗?如果可以的话愿意有老师教教我吗?。。。。我好想找个人带带我啊{:cry:} 如果速度不是很高,可以用定时器+IO实现 估计难,因为要精确计算脉冲数定位,假设电机每秒一圈3200脉冲,16个电机,平均1/(3200*16)秒也就是19.5us就有一个脉冲计数中断。你还有串口通信中断,好有显示,按键扫描, mcu5i51 发表于 2019-11-16 17:40如果速度不是很高,可以用定时器+IO实现
您能详细讲讲吗 。。定时器确定一个时基,然后在中断里去翻转io,那我怎么确定哪些需要翻转哪些不需要呢。。。如果需要不同的时基就使用不同的定时器,那么这样子各种中断不断到来 我还能串口通信吗。。我不太会。。也不知我说的对不对。。请您费心多说点吧 jyrpxj 发表于 2019-11-16 17:55
估计难,因为要精确计算脉冲数定位,假设电机每秒一圈3200脉冲,16个电机,平均1/(3200*16)秒也就是19.5us ...
没有显示 只有通信。。和需要回原点的传感器。。。。 jyrpxj 发表于 2019-11-16 17:55
估计难,因为要精确计算脉冲数定位,假设电机每秒一圈3200脉冲,16个电机,平均1/(3200*16)秒也就是19.5us ...
我可以多用些stm32的,每个最多可以控制多少个电机呀?。。。如果速度不超过每秒5圈的话 我看到了这个 我好想知道这个是怎么做的呀。。。哪怕我一个芯片能控制4个 或者8个电机也行呀速度每秒5圈以内 这样能行吗 老师们 求帮助呀 16个同时不同速度工作STM32够呛的
ST有步进驱动芯片SPI接口的,发指令运行可以 这个 要是用FPGA配合MCU来实现,160路都没有问题吧。 向北 发表于 2019-11-16 18:04
我看到了这个 我好想知道这个是怎么做的呀。。。哪怕我一个芯片能控制4个 或者8个电机也行呀速度每秒5圈 ...
这个好像是FPGA做的 flash3g 发表于 2019-11-16 18:48
16个同时不同速度工作STM32够呛的
ST有步进驱动芯片SPI接口的,发指令运行可以 ...
您可以告诉我一下型号吗 。。我刚才找了 只找到驱动器上用的,。。。 advantech 发表于 2019-11-16 18:53
这个 要是用FPGA配合MCU来实现,160路都没有问题吧。
不会FPGA。。{:sad:} 上总线,主控只负责发指令。 1.485总线就行,配上支持485的步进驱动 步进电机每圈脉冲数调低,选主频高的型号,不过要考虑好io数量和总驱动能力
要不就一主多从,缺点是数据交换麻烦,不利于实时控制
本帖最后由 ilan2003 于 2019-11-16 20:46 编辑
用CAN通讯吧 ;现在更加先进的是用EtherCat
感谢各位老师,现在已经有两个方向了,1总线驱动,2多个芯片或者spi专用芯片,我看一下价格再决定。再次谢谢给位老师 谢谢论坛 如果不是高速的情况下做16个软定时器问题不大的。
现实情况下高主频单片机定时器中断100k不影响其他功能的。 向北 发表于 2019-11-16 17:57
您能详细讲讲吗 。。定时器确定一个时基,然后在中断里去翻转io,那我怎么确定哪些需要翻转哪些不需要呢 ...
你可以看看3D打印机原码文件,基本上和C语言差不多;
实现方法就是在定时中断中处理几个计数变量,如果为0就改变对应的IO,并设置新的数值后继续处理,几路时多数芯片可以到10K左右吧,16路STM32中就要看优化程度了 看你用什么驱动器,PWM类型的驱动器就超级简单啊,只要PWM够,100路电机我都能控制,如果是脉冲+DIR方式的驱动,有点困难 数量多的话可以考虑FPGA
页:
[1]