STM32F103步进电机梯形匀加速算法

最近公司的一个项目用带驱动器的步进电机,奈何,经理让我搞个匀加速的启动和停止。以前从来没考虑过算法的我,走了很多弯路,不过最后还是解决了这个问题。

梯形加减速应该是指数加速算法和S型加速算法中最简单也最容易实现的一个算法。
在这里插入图片描述
(图画的不好见谅)
在加速阶段和减速阶段将时间分成很多等分,这样由vt关系可得,s=v*t就是单位时间内,发送给步进电机的脉冲数(我的细分数1000,也就是1000个脉冲一圈,为了方便解释,将脉冲数理解成距离,因为脉冲数也可以换算成距离,根据带动的齿轮之类的。)

在我的代码中我是将加速阶段分成了10个相等的时间段,由宏定义表示
在这里插入图片描述

硬件资源

STM32的PWM波(间接驱动驱动器),定时器外部时钟模式2(发送脉冲多少脉冲值的计数)

软件设计

要求,主板每次发送一定得脉冲让步进电机运转一定的距离,奈何启动频率过高,会让步进电机还没建立磁场下一个脉冲就来了,以至于脉冲与目标行动的距离出现误差,于是就需要匀加速。
在这里插入图片描述
这里我用了一个结构体,在代码中注释都很清楚。

那么,开始的第一步,就是计算好需要的脉冲值
(START_FT+(START_F(ADD_SPEED1)T+…+(START_F(ADD_SPEED9)T)/10002

而我们设定好一个起始的频率,和一个目标频率,还有时间段的长度,以及加速次数,就可以计算出满足加速和减速阶段的最小脉冲值。
如果不满足这个脉冲值,会造成步进电机停止的时候不是以最小的频率停止。
达到目标频率后要以目标频率去匀速运动

剩下的就是代码中对,每次加速的时刻的判断,和每次减速时刻的判断

而代码中,对目标频率,起始频率,加速时间,加速次数都可以直接修改宏定义就可以了。

源码和参考资料链接
https://download.csdn.net/download/weixin_42783751/11117775

  • 13
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值