搜索
bottom↓
回复: 12

我想用ST控制3或4个电机运动,有细分驱动器了,对定位有...

[复制链接]

出0入0汤圆

发表于 2016-4-8 13:03:14 | 显示全部楼层 |阅读模式
我想用ST控制3或4个电机运动,有细分驱动器了,对定位有一定要求,并可以通过触摸屏控制电机运转,我思路是这样:已知给驱动器发送2000个脉冲电机轴会转一圈,那换算成行程就可以知道一个脉冲走多少距离,然后通过发送脉冲数控制行程,从而实现准确定位,发送的脉冲数需要可控可调。
有说PWM不好精确控制步数,建议直接用脉冲,还有一种DMA方式。
直接用脉冲可以吗?高电平-延时-低电平 这就是一个脉冲吧?那这个延时时间是不很关键?需要非常精准?
如果DMA方式,那驱动器的脉冲端口是接ST一个定时器的TIM3_CH1 /CH2 CH3三个通道还是接三个定时器TIM1  TIM2  TIM3?

出0入0汤圆

发表于 2016-4-8 13:03:15 | 显示全部楼层
本帖最后由 RAMILE 于 2016-4-9 08:53 编辑

分享一个技巧,
定时器设定为连续自由计数,从0000~FFFF,
定时器比较通道CH1的CCR设定为,“相等输出反转,且相等触发DMA加载CCR”,
对应的DMA通道指向一个64字的数组,并且设置循环发送,设置半数发送完成中断,和全完成中断
DMA指向的64字数组是这样的,{10,20,30,40,50,60,70,80,.......630},这样的话输出的是宽度为10个timer-tick的方波,如果设成倒数等差的话,就是梯形加减速脉冲了
这个64字的数组在启动发脉冲时候计算好,在DMA半数完成中断时候计算前面一半32个个数值,在DMA全完成中断时候计算后面一半数值

这种动态脚本方式是我想到的生成变周期序列的最佳方式,每若干脉冲中断一次在中断中有足够时间(需要验证)计算下一步的脚本。
另外,这种方式输出脉冲通道的数量是由DMA通道数决定的,一般来说只使用一个定时器就可以输出3路脉冲,每路脉冲和每个脉冲都是由动态脚本决定,好不好控制脉冲步数就看你怎么演算脚本了


DMA脚本方式可能面临的问题有,脚本生产速度跟不上,两个DMA同时发生的请求面临的优先次序问题,不过脉冲频率不高的环境下,这些都不是事,一个103C8完全胜任
实际上还是用FPGA做脉冲好点,频率高脉冲步进更细,会用FPGA做DDS生产脉冲,就应该会做这种加减速脉冲

出0入8汤圆

发表于 2016-4-8 13:55:18 | 显示全部楼层
一个定时器足够了

出0入0汤圆

发表于 2016-4-8 14:54:03 | 显示全部楼层
DMA脚本方式可能面临的问题有,脚本生产速度跟不上,两个DMA同时发生的请求面临的优先次序问题,不过脉冲频率不高的环境下,这些都不是事,一个103C8完全胜任

实际上还是用FPGA做脉冲好点,频率高脉冲步进更细,会用FPGA做DDS生产脉冲,就应该会做这种加减速脉冲

出0入0汤圆

发表于 2016-4-8 16:26:34 | 显示全部楼层
ST的吗?
上L6470。

出0入0汤圆

发表于 2016-4-8 16:50:58 | 显示全部楼层
卖L6470开发板

到手即转,80一片,这就是成本价

出0入0汤圆

发表于 2016-4-9 08:56:35 | 显示全部楼层
LZ 你代码写出了给我看看,我懒得写

我已经准备L6480了

出0入0汤圆

发表于 2016-4-10 16:59:36 | 显示全部楼层
RAMILE 发表于 2016-4-8 13:03
分享一个技巧,
定时器设定为连续自由计数,从0000~FFFF,
定时器比较通道CH1的CCR设定为,“相等输出反转 ...


一个定时器,加3或者4路DMA做脉冲。

这里有个问题,
变频: 因为频率是16位定时器,变频是不是限制? 因为PLC变都是1~100K
启停: 如果3路,4路不是同时启停,这个怎么处理?

一个timer+一个DMA的 很容易变频,用预分频就可以,启停也互不干扰。
关于您说的DMA和计算的问题,这些您可以再增加一个TIMER, 例如500us, 可以每500us查一下,是否有问题。
另外加大BUFFER的尺寸,可以更换循环尺寸等。

现在很想用您的一个timer 做3-4路的办法。
因为高速计数A,B相,一路就要一个。还没好的办法。4路就要4个。
剩下的没几个了。

出0入0汤圆

发表于 2016-4-11 08:58:16 | 显示全部楼层
本帖最后由 RAMILE 于 2016-4-11 09:28 编辑
gpfrank 发表于 2016-4-10 16:59
一个定时器,加3或者4路DMA做脉冲。

这里有个问题,



这里有个问题,
变频: 因为频率是16位定时器,变频是不是限制? 因为PLC变都是1~100K


低频率这个问题,可能需要更高技巧的跳周期方式,启动外加的软件周期中断,叫CCR寄存器躲过CNT计数,从而在这次65536个计数中不产生反转,这样可以在高速时钟36MHz输入情况下,获得比较低的输出翻转频率,并且扩展定时精度,躲过255次计数反转,等于将定时器扩展成了24bit

启停: 如果3路,4路不是同时启停,这个怎么处理?

这个看你的C语言程序设计能力了,我编程能力比较渣 。脚本计算模块是这个程序的核心,其中要面对多种工作状态,对不同的脉冲策略进行调度
脉冲停止比较容易处理,可以用上面说的躲过计数的方法,无限躲过计数。脉冲同步启动也比较好处理,把定时器时钟关掉,然后设定脚本开始起跑

现在想着比较麻烦的是,X轴跑一半的,Y轴半路随机启动。这种是类似于按键对刀那种情况,不是路径已经规划好的。这时候只能牺牲响应速度,强制在CNT TIM_UP ISR中
进行命令通信,别的方法暂时没想到

可以在X轴的DMA中断中进行Y轴的脚本启动操作,如果脚本循环节长度是64的话,可以把Y轴响应时间缩短到32个时间片内,我觉得对于随机命令响应这样就足够了
也可以在外部中断中查询X轴DMA的指针计数器,和当前指针指向的数值,这样可以把随机按键响应,缩短到一个中断响应+两个X轴时间片

出0入0汤圆

发表于 2016-10-31 22:59:08 | 显示全部楼层
还是要留个爪子的

出0入0汤圆

发表于 2016-11-2 16:07:46 | 显示全部楼层
我靠好高深的样子啊。

出0入0汤圆

发表于 2016-11-4 14:01:05 | 显示全部楼层
Mark ST控制电机

出0入0汤圆

发表于 2016-12-28 13:36:29 | 显示全部楼层
第一次听说这种功能的芯片
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 19:53

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

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