[STM32F4] STM32控制步进电机—种S形加减速曲线的推导与实现

[复制链接]
 楼主| 有何不可0365 发表于 2022-11-10 15:26 | 显示全部楼层 |阅读模式
本帖最后由 有何不可0365 于 2022-11-10 15:28 编辑

手上有个42步进电机,可是要么龟爬要么光叫不跑,百度了才知道要有个加速过程,而各种加速中又属S形加速最棒,那我当然要一步到位啦。 以下图片可以很好的展示S形加速的特点:
48278636ca7c280604.png 17493636ca7fc6f24c.png
39852636ca7d04789d.png 10218636ca7dfac3d9.png

网图侵删。

理论分析 选择曲线 加速曲线有很多,梯形、余弦、多项式、7段S型、7段修正S型、15段S型、31段S型等。


 楼主| 有何不可0365 发表于 2022-11-10 15:29 | 显示全部楼层
其中很多分段函数一看就很复杂,需要的参数也很多,我们选一种简单的,仅需要一个表达式就能确定的加速曲线:
29098636ca8469b4a0.png
 楼主| 有何不可0365 发表于 2022-11-10 15:29 | 显示全部楼层
计算函数方程
首先确定三个输入参数,也就是函数中的常量:
53162636ca86acd951.png
 楼主| 有何不可0365 发表于 2022-11-10 15:33 | 显示全部楼层
由图可知加速度为二次函数,且极值点 t = T 2 t=\frac{T}{2} t=2T​,所以 a − t a-t a−t表达式为:

39367636ca95b18aec.png
 楼主| 有何不可0365 发表于 2022-11-10 15:35 | 显示全部楼层
因为函数图像过原点,所以带入 a = 0 , t = 0 a=0,t=0 a=0,t=0可得:
29878636ca9af98f99.png
 楼主| 有何不可0365 发表于 2022-11-10 15:35 | 显示全部楼层
所以 加速度公式 为:
59257636ca9c243764.png
 楼主| 有何不可0365 发表于 2022-11-10 15:45 | 显示全部楼层
对时间一次积分获得速度:
43662636cac110f596.png
 楼主| 有何不可0365 发表于 2022-11-10 15:46 | 显示全部楼层
二次积分获得位移: 46972636cac4847c0f.png
 楼主| 有何不可0365 发表于 2022-11-10 15:46 | 显示全部楼层
将三个常量带入速度表达式,可得: 29871636cac5f9b0a6.png
 楼主| 有何不可0365 发表于 2022-11-10 15:54 | 显示全部楼层
解之可得系数 k k k: 49534636cac7abe8f3.png
 楼主| 有何不可0365 发表于 2022-11-10 15:54 | 显示全部楼层
以及 速度公式 : 56113636cae3d7aff4.png
 楼主| 有何不可0365 发表于 2022-11-10 15:55 | 显示全部楼层
又因为时间为0时位移为0,所以可以获得 位移公式: 99037636cae497cb23.png
 楼主| 有何不可0365 发表于 2022-11-10 15:55 | 显示全部楼层
单位分析

因为使用场景是单片机控制步进电机,所以常规的速度单位 m / s m/s m/s用在这里不太合适。

在没有细分的情况下,单片机每发1个脉冲,电机前进1步,对于步距角1.8°的步进电机来说,就是旋转 1 200 \frac{1}{200} 2001​圈。所以速度单位选择"个每秒",也就是Hz。

加速过程秒级显然是我们不可接受的,微秒级的话步进电机也受不了,所以加速的时间单位选择ms。

综上:
加速度 a a a的单位为(Hz/ms)
速度v的单位为(Hz)
位移s的单位为(1000个)

显然位移单位不合常理,我们将位移单位化为(个),可得 位移公式2:

38751636cae6edb13b.png
rfic8 发表于 2024-6-30 12:32 | 显示全部楼层
最好再讲用哪种CPU,用代码如何实现
过期的塔头 发表于 2024-7-30 15:03 | 显示全部楼层
S形加速曲线使得速度的变化更加平滑,相较于线性加速,能够显著减少振动和机械冲击。
米多0036 发表于 2024-8-31 13:05 | 显示全部楼层
减速阶段是S形曲线的结束阶段,先是缓慢减速,然后逐渐减缓,最后平稳停止。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

781

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部