搜索
bottom↓
回复: 15

请问用PWM驱动步进电机,如何实现加减速?

[复制链接]

出0入0汤圆

发表于 2020-8-8 07:38:20 | 显示全部楼层 |阅读模式
以前我驱动步进电机,用定时器来产生脉冲,每一步都进定时器中断,然后在中断中通过修改定时器重载值来实现加减速。现在想试着用STM32的硬件PWM来驱动,但没想明白如何实现加减速,是不是也是需要每一步都进定时器中断呢?那这样好像用硬件PWM也没太大意义了啊?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2020-8-8 08:46:48 来自手机 | 显示全部楼层
一般都用比较输出模式吧。

出20入25汤圆

发表于 2020-8-8 08:55:51 来自手机 | 显示全部楼层
定时器串接

出0入0汤圆

发表于 2020-8-8 09:23:52 | 显示全部楼层
本帖最后由 codefish 于 2020-8-8 09:25 编辑

占空比固定,加速时脉冲周期由大到小,减速时脉冲周期由小到大; 在非匀速段,每一个中断中改变脉冲周期

出0入0汤圆

发表于 2020-8-8 10:02:50 | 显示全部楼层
定时更改PWM周期

出0入20汤圆

发表于 2020-8-8 10:17:05 | 显示全部楼层
准备好变速曲线放内存里面,通过DMA自动搬运.
硬件脉冲控制在速度控制上从来都不麻烦,麻烦的是怎么精确计数~

出40入42汤圆

发表于 2020-8-8 10:18:37 | 显示全部楼层
一般用时间分割的方法,把行程根据速度分割成不同大小的段,每一段对应的时间周期是固定的,那么硬件PWM固定一个中断周期(或DMA)修改脉冲频率就OK了

出0入0汤圆

 楼主| 发表于 2020-8-8 20:54:50 | 显示全部楼层

不太明白,可否再说细一点?

出0入0汤圆

 楼主| 发表于 2020-8-8 20:56:07 | 显示全部楼层
codefish 发表于 2020-8-8 09:23
占空比固定,加速时脉冲周期由大到小,减速时脉冲周期由小到大; 在非匀速段,每一个中断中改变脉冲周期 ...

您说的中断是定时器中断吗?如果是,那我直接用定时器中断产生脉冲了,不需要硬件PWM了啊

出0入0汤圆

 楼主| 发表于 2020-8-8 20:59:05 | 显示全部楼层
Error.Dan 发表于 2020-8-8 10:17
准备好变速曲线放内存里面,通过DMA自动搬运.
硬件脉冲控制在速度控制上从来都不麻烦,麻烦的是怎么精确计数~ ...

请问如何在加减速阶段准确的通过DMA送到每一步?

出0入0汤圆

 楼主| 发表于 2020-8-8 21:00:39 | 显示全部楼层
落叶知秋 发表于 2020-8-8 10:18
一般用时间分割的方法,把行程根据速度分割成不同大小的段,每一段对应的时间周期是固定的,那么硬件PWM固 ...

用时间分割,那就是要进定时器中断了对吧?加减速越平顺,就越要频繁的进定时器中断,那还不如直接用定时器中断来产生脉冲啊。

出100入101汤圆

发表于 2020-8-8 22:56:29 来自手机 | 显示全部楼层
qaya 发表于 2020-8-8 20:56
您说的中断是定时器中断吗?如果是,那我直接用定时器中断产生脉冲了,不需要硬件PWM了啊 ...

pwm是硬件方式,频率可以做高,不占用系统资源

出40入42汤圆

发表于 2020-8-8 23:44:27 来自手机 | 显示全部楼层
qaya 发表于 2020-8-8 21:00
用时间分割,那就是要进定时器中断了对吧?加减速越平顺,就越要频繁的进定时器中断,那还不如直接用定时 ...

定时中断不一定要进,但pwm的捕获中断或是dma的完成中断就必须要进;如果是靠单个定时器来开环控制多个硬件pwm的这种冒险做法,则要进定时器中断。
上面说的跟你说的每个脉冲算一个动态的时间中断的软件脉冲方式不是一样的概念

出0入20汤圆

发表于 2020-8-9 09:50:36 | 显示全部楼层
qaya 发表于 2020-8-8 20:59
请问如何在加减速阶段准确的通过DMA送到每一步?

如何送???

DMA送啊

如果要每步更新那就是通过定时器溢出来触发DMA如果是若干步触发那就是用比较器触发DMA,这样要多写一个比较器初始值而且赋值是有技巧的,但是每步都更新肯定要占用大量的内存空间,如果是提前算好的变速曲线也可以放在flash里面直接用DMA读也行.
硬件发脉冲这个事情本质上就是非常简单的数据搬运,给不同的数值实现不同的效果,所以DMA完全可以胜任,把CPU解放出来~
DMA配合定时器的玩法非常多,比如就用一个DMA数据源分时控制加减速,或者多个DMA配合做加减速+脉冲计数,有相当多的高级玩法,建议自己去多琢磨琢磨~

出0入0汤圆

 楼主| 发表于 2020-8-9 15:55:36 | 显示全部楼层
落叶知秋 发表于 2020-8-8 23:44
定时中断不一定要进,但pwm的捕获中断或是dma的完成中断就必须要进;如果是靠单个定时器来开环控制多个硬 ...

明白了,感谢您的指导

出0入0汤圆

 楼主| 发表于 2020-8-9 15:56:39 | 显示全部楼层
Error.Dan 发表于 2020-8-9 09:50
如何送???

DMA送啊

感谢,您的意思应该跟楼上的差不多,我自己再仔细研究,然后实际测试一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-8-15 08:35

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

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