打印
[程序源码]

步进电机运行使用PID加减速控制方式的策略讨论

[复制链接]
2750|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ColeYao 于 2023-2-4 11:20 编辑

   如题,使用PID方式控制步进电机运行时,对于加速段,直接使用常规PID方式即可,将电机速度从0提高到最大速度即可,但对于减速段,直接使用常规PID方式就无法实现了,电机速度可以从最大速度降到0,但不能同时保证停留在指定位置上。
  对于以上问题,当单片机资源足够时,记录加速段的所有速度数据,在减速段重新反向回放记录数据即可,但对于一些资源比较少的单片机如51、M0之类的,此方法不适用。(附图是一种基于PID的控制方式,可以看到黄色曲线中减速段的加速度明显要比加速段的加速度大了不少)
  附图说明:灰色是目标位置,紫色是电机运行实际位置,黄色是加速度曲线,绿色是理论计算得到的速度曲线,红色是实际速度曲线(速度范围较小,因此平滑性较差)
  我想请教的是:有没有一种步进电机加减速控制方式,1)可以适用一些资源比较少的单片机(RAM占用少); 2)几乎实时平滑调速;      3)加减速曲线的加速度部分近似对称(效果比附图更完美);       4)速度曲线为近似S曲线(要求是从A出发,经历加速-匀速-减速三个阶段后停在指定位置B,要求停止后无正反向微调过程,停止精度越高越好)

速度加速度波形_20230204高速.png (141.94 KB )

速度加速度波形_20230204高速.png

使用特权

评论回复

相关帖子

来自 2楼
ColeYao|  楼主 | 2025-6-10 10:12 | 只看该作者
本帖最后由 ColeYao 于 2025-6-13 09:24 编辑

  如图所示,使用新算法后其速度曲线接近理想的S曲线(紫色为速度曲线,绿色为位移曲线,黄色为目标位移位置),下面是控制算法!
  1) 在从位置A移动到位置B的过程中,一般同时会给出允许的最大速度,通常用转每分钟表示,一般步进电机从30-1000转每分钟都有;  2)位移的最初阶段是速度上升的过程,这个过程一般加速度可以是三角形梯形或正弦波形,生成的速度是S型,也可以使用PID控制过程模拟生成速度S曲线,PID控制实际上是个负反馈控制,因此具有允许最大速度范围广,控制周期可以略长,通常在10mS量级,不必每个步进电机脉冲都必须计算的特点;  3)前半程使用PID控制进行加速的情况下,后半程需要进行减速,但前半程加速到半程或者达到最大速度就停止加速了,时间节点比较好掌握,后半程减速需要在移动到位置B时,速度也刚好降为0,同时有两个条件,因此直接用PID会有振荡现象;  4)考虑仿生学,大多数人在红绿灯前面(骑车或开车)停车的情况,其实和步进电机走到指定位移并同时减速为0是相同的,但大多数人都能在停止线附近挺得很好,这里面有一个最重要的策略:离停止线越远,允许的速度越大,离停止线越近,允许的速度越小;  5)参考4)以后,步进电机可以在后半程选一个以当前位置到目标位置距离为X,速度为Y的函数,满足X越小,Y也越小,X趋近于0时,Y也趋近于0即可,可以是函数Y=kX,Y=KX*X,Y=sqrt(X)等,从这些函数中选一个使得步进电机能正常运行且减速时的加速度较小的曲线就可以了;  6)如5)中后半程使用特定函数将速度衰减为0的做法,用是能用,但其速度曲线和加速度曲线前后不对称,缺乏美感,要想前后两个半程速度和加速度曲线对称,有两个办法:一是前半程记录加速数据,后半程采用镜像的方式复现,缺点是要的数据比较多,记录要详细,另外一个方法是前半程根据需要记录几个特殊位移时的速度(Sn,Vn),后半程在达到与前半程特殊位移对应的位置时,将速度置为记录数组中的数值,比如加速时(0,0),(1/8S,V1),(2/8S,V2),(3/8S,V3),(4/8S,V4),那么减速时依次为(4/8S,V4),(5/8S,V3),  (6/8S,V2), (7/8S,V1),  (8/8S,0),采用这种方法可以根据自己需要设置记录数组的数量,可以是8组,64组,256组,数组越大,曲线越平滑,但有些短位移需要做特殊处理;  6)中的方法即为实现上面较完美曲线的对应策略,供参考,以上!

使用特权

评论回复
板凳
触觉的爱| | 2023-2-9 17:44 | 只看该作者
测试一个适合的加减速曲线,做成数组,存放在ROM中,读取比实时计算快

使用特权

评论回复
地板
ColeYao|  楼主 | 2023-2-9 20:28 | 只看该作者
触觉的爱 发表于 2023-2-9 17:44
测试一个适合的加减速曲线,做成数组,存放在ROM中,读取比实时计算快

  固定数组肯定比实时计算快,但是缺点很明显:1)对ROM需求大;  2)一般不适用最大速度经常变动的场合,比较适合最大速度只有一个值或有限的几个值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

410

帖子

6

粉丝