搜索
bottom↓
回复: 27

STM32控制步进电机的脉冲大家用什么方法来产生的?

[复制链接]

出0入0汤圆

发表于 2019-3-24 18:01:03 | 显示全部楼层 |阅读模式
STM32控制步进电机的脉冲大家用什么方法来产生的?
有2种方法可以产生,1:由定时器产生,通过IO改变电平来驱动,2:通过硬件产生pwm来输出电平。
想请教一下大家一般用什么方法来做的,在改变电机的速度时,也就是改变脉冲的周期,是在每个脉冲后修改周期呢,还是在一定的时间内来修改周期呢?
如果是以输出几个脉冲后修改周期,那么这个PWM的输出个数是如何获取到的,是在PWM输出脚接到一个IO,挂在一个定时器上计数来获取吗?
谢谢!

出0入213汤圆

发表于 2019-3-24 19:17:58 | 显示全部楼层
定时器PWM输出啊, 计数的话,可以设为每个PWM周期中断一下来计数。 改变速度可以用另一个定时器来间隔多长时间来改一下PWM输出周期。

出0入0汤圆

 楼主| 发表于 2019-3-24 19:29:48 | 显示全部楼层
jyrpxj 发表于 2019-3-24 19:17
定时器PWM输出啊, 计数的话,可以设为每个PWM周期中断一下来计数。 改变速度可以用另一个定时器来间隔多长 ...

是的,PWM输出是比较好的。你说的PWM周期中断一下来计数,是需要加个IO口连接吧。
很多的s曲线加速,或者是梯形加速都是需要获取到输出了几个脉冲的。
一般的这样的加速曲线,都是以定长时间内来改变一次周期吗?我之前的加速都是这样做的

出0入213汤圆

发表于 2019-3-24 19:32:18 | 显示全部楼层
PWM周期中断, 用定时器周期中断就可,每中断一次,进入中断,脉冲计数变量增1 。没必有将PWM输出信号又引入另一个输入引脚。

出40入42汤圆

发表于 2019-3-24 20:52:20 来自手机 | 显示全部楼层
定时器翻转电平用dda法,硬件pwm需要进行反馈计数用时间分割法

出0入0汤圆

发表于 2019-3-25 00:27:35 | 显示全部楼层
PWM有中斷,每完成一次脈波計算步進數。要調整脈波週期就改變timer的ARR暫存器就可以。

出0入0汤圆

发表于 2019-3-25 09:12:07 | 显示全部楼层
网上有例程,用两个定时器,主从,可以输出固定脉冲数

出0入0汤圆

发表于 2019-3-25 09:14:24 来自手机 | 显示全部楼层
频繁启停

出0入0汤圆

发表于 2019-3-25 09:15:53 来自手机 | 显示全部楼层
频繁启停如何保证不失步

出90入0汤圆

发表于 2019-3-25 09:24:23 | 显示全部楼层
3轴,4轴,联动,更加麻烦。

出0入20汤圆

发表于 2019-3-25 09:43:51 | 显示全部楼层
各种奇淫巧计都试过,最后老老实实用定时器中断翻IO实现。
其他的方法限制还是太大,特别是真的需要频繁启停,需要跑高速的情况下,不做各种加减速算法是没法用的,电机受不了。

至于CPU负载么无所谓的,现在单片机这么便宜103不够就上405,405不够就上42X~,再不济还有H7和F7呢~

出0入4汤圆

发表于 2019-3-25 10:21:04 | 显示全部楼层
jaky80000 发表于 2019-3-24 19:29
是的,PWM输出是比较好的。你说的PWM周期中断一下来计数,是需要加个IO口连接吧。
很多的s曲线加速,或者 ...

四轴联动怎么搞?同步问题,有一个周单独要加速了,另一个要减速停止了

出40入42汤圆

发表于 2019-3-25 11:27:49 | 显示全部楼层
ZL_electric 发表于 2019-3-25 10:21
四轴联动怎么搞?同步问题,有一个周单独要加速了,另一个要减速停止了 ...

1个PWM模块控制1个轴就可以了,虽然很浪费资源

出0入4汤圆

发表于 2019-3-25 12:58:24 | 显示全部楼层
落叶知秋 发表于 2019-3-25 11:27
1个PWM模块控制1个轴就可以了,虽然很浪费资源

这样单轴控制,具体动作听从G代码,4轴需要8个定时器,我开始搞过两个定时器脉冲方案,发现这个问题就OVER了

出0入0汤圆

发表于 2019-3-25 13:13:01 | 显示全部楼层
ZL_electric 发表于 2019-3-25 10:21
四轴联动怎么搞?同步问题,有一个周单独要加速了,另一个要减速停止了 ...

  四轴联动可以用PWM模式中的一种,开PWM中断实现。我是在考虑马达跟随编码器动作时走一个规定的位移怎么实现,如果同向的话,可以两个同时发脉冲,如果反向,我预计会有问题,因为频繁切换方向可能实际情况会有异常。

出0入0汤圆

发表于 2019-3-25 13:46:58 | 显示全部楼层
直接使用IO翻转就可以了,可以使用一种算法(其实都有现成的参考)同时多少轴都可以!

出40入42汤圆

发表于 2019-3-25 14:38:33 | 显示全部楼层
ZL_electric 发表于 2019-3-25 12:58
这样单轴控制,具体动作听从G代码,4轴需要8个定时器,我开始搞过两个定时器脉冲方案,发现这个问题就OVE ...

8个定时器对STM32这种定时器资源丰富的片子来说不是问题吧?当然,如果你说要做什么16/32/64轴的另说

出0入4汤圆

发表于 2019-3-25 14:41:09 | 显示全部楼层
落叶知秋 发表于 2019-3-25 14:38
8个定时器对STM32这种定时器资源丰富的片子来说不是问题吧?当然,如果你说要做什么16/32/64轴的另说 ...

我当时用的LPC1768,搞了一个轴发现日狗了

出40入42汤圆

发表于 2019-3-25 15:03:47 | 显示全部楼层
ZL_electric 发表于 2019-3-25 14:41
我当时用的LPC1768,搞了一个轴发现日狗了

LPC系列的定时器资源都不算丰富,如果是驱动步进的话,用IO翻转的办法吧

出100入85汤圆

发表于 2019-3-25 21:53:18 来自手机 | 显示全部楼层
落叶知秋 发表于 2019-3-24 20:52
定时器翻转电平用dda法,硬件pwm需要进行反馈计数用时间分割法

能否再详细一点

出0入0汤圆

 楼主| 发表于 2019-3-25 22:12:41 | 显示全部楼层
jyrpxj 发表于 2019-3-24 19:32
PWM周期中断, 用定时器周期中断就可,每中断一次,进入中断,脉冲计数变量增1 。没必有将PWM输出信号又引 ...

还有定时器中断这一个呀,我去看看。
比如在s曲线加速时,有段加速非常快,这段时间的加速会不会是比如输出了几个脉冲后进行速度改变呢,那这样会不会曲线就变成了有阶梯的加速了,会不会不平滑。
然后如果加速太快的话,会导致频繁的中断,cpu都没法做其他事情了。
这就是说的用IO翻转来控制,有些场合无法满足的原因了,有些还要搞个128细分,IO翻转没法搞呀

出0入0汤圆

发表于 2019-3-25 22:24:10 | 显示全部楼层
第一种。

出0入0汤圆

发表于 2019-3-26 08:02:38 | 显示全部楼层
定时模拟12路,挺好用的

出40入42汤圆

发表于 2019-3-26 08:55:00 | 显示全部楼层

DDA就是数字微分分析(Digital Differential Analyzer),其实更准确来说是一种直线画图的方法,
在运控里一般被用作直线插补方法,主要是以像素,运控里就是换成脉冲来拟合成直线轨迹,
一般是根据脉冲周期来调整定时器周期翻转脉冲脚电平,开源项目的grbl里就是这种方法

时间分割法就是以规定的时间周期内输出不同个数的脉冲来拟合轨迹,一般定时器的周期固定了,
然后每个周期里使用硬件发脉冲,这种方法需要用到硬件脉冲机制,优点是脉冲速度能做到很快,
且不会像IO翻转那样定时器周期动态变化,可能影响系统性能;缺点是计算量相对来说更大些,控制精度也稍微差些。

出0入0汤圆

发表于 2019-3-26 09:21:02 | 显示全部楼层
  绝大多数的应用,没那么矫情,,,就梯形了事。

出100入85汤圆

发表于 2019-3-26 10:02:11 来自手机 | 显示全部楼层
落叶知秋 发表于 2019-3-26 08:55
DDA就是数字微分分析(Digital Differential Analyzer),其实更准确来说是一种直线画图的方法,
在运控 ...

谢谢分享

时间分割是不是需要fpga或者cpld参与?

出40入42汤圆

发表于 2019-3-26 10:55:27 | 显示全部楼层
whatcanitbe 发表于 2019-3-26 10:02
谢谢分享

时间分割是不是需要fpga或者cpld参与?

最好是用FPGA或是CPLD这种精度高的逻辑器件来实现,但也可以直接用MCU的PWM模块来实现,只不过有可能精度不够的话,脉冲会有一小段不连续的情况出现

出0入0汤圆

 楼主| 发表于 2019-3-26 22:32:33 | 显示全部楼层
gonggu8181 发表于 2019-3-26 08:02
定时模拟12路,挺好用的

高速时,吃不消的,会丢步,如果速度低,一个脉冲周期比较长的,定时器是最有利于代码控制的。
如果用上高细分,到128细分的话,控制周期真要到100K,甚至更高,没法用定时器了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-6 11:47

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

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