SimpleFOC调参2-速度、位置控制

背景介绍

FOC作为直流无刷电机控制最常用的算法,得到广泛应用。在开源社区最常用的FOC项目有:simpleFOCODriveVESC等。其中simpleFOC因其简单易用,支持多种硬件平台,很适合新手入门。我在用simpleFOC的过程中踩了不少坑,在此记录学习调试过程中的一些心得。

硬件平台:开始最好直接购买套件,熟悉后再自己搭配,我这里直接买的灯哥开源的套件
电机:2204
驱动器:L6234
磁编码器:AS5600
电流检测:INA240
主控MCU:ESP32

软件平台:Arduino,simpleFOC库,simpleFOC studio图形化调试工具

IDE工具PlatforIO,也可以使用Arduino IDE(编译、下载速度很慢,所以我才找到了替代工具platforIO)

FOC控制方式有两种:

  • 开环控制:只需要电机、驱动器,不需要编码器、电流检测。算法简单,但是控制效果差,驱动效率差。驱动器、电机很容易过热烧坏,我就烧过一个驱动器,好几个电机。
  • 闭环控制:需要编码器、电流检测,算法复杂,控制效果好,驱动效率高。初学者一定要用闭环控制,等熟悉了之后再玩开环控制。

这里主要总结闭环控制的几种控制方式:力矩控制,速度控制,角度控制。这里只总结了我自己调试的各种参数及图形化含义。具体程序和方法参考simpleFOC官方文档,里面有详细介绍。由于篇幅较长,分为两篇来写,本篇只总结速度控制、位置控制。上一篇总结了SimpleFOC调参1-力矩控制

1. 速度控制 velocity control

速度控制是在力矩控制环的基础上,增加了一个速度控制环,所以在设置速度环之前需要先把力矩控制环的相关参数设置好。再设置速度环相关的PID控制器,LPF滤波器参数。
力矩控制环采用电压控制时,速度控制框图如下:磁编码器采集到的角度值,计算得到速度,经过低通滤波器后得到Vf;用户输入目标速度Vd(desired velocity)。Vd,Vf输入到速度环PID控制器,得到控制电压Uq,再经过力矩控制环驱动电机转动。
在这里插入图片描述
力矩控制环采用电流控制时(DC or FOC current),速度控制框图如下:编码器采集到的角度值,计算得到速度,经过低通滤波器后得到Vf;用户输入目标速度Vd(desired velocity)。Vd,Vf输入到速度环PID控制器,得到控制电流iq/id,再经过力矩控制环驱动电机转动。力矩控制环torque control loop就是上一篇SimpleFOC调参1-力矩控制总结的所有部分。速度控制是在力矩控制环的外围再增加了一个速度控制环。
在这里插入图片描述
velocity PID各项参数含义:

  • P:比例增益,P值越大,响应速度越快。但是P值过大容易引起震荡
  • I:积分增益,I值越大,积分(累积误差)响应越快。但是I值过大也会引起震荡
  • D:微分增益,最难调的量。通常是先把D设为零,调节好P、I,如果还会超调,再增加一点D微调
  • output_ramp:输出斜率,用于减小输入到力矩控制环的最大变化量。output_ramp越大,PID引起Uq变化的速度更快;output_ramp越小,PID引起Uq变化的速度更慢。单位: V/s。通常控制环1ms循环一次,假设output_ramp=10,则每次循环,PID控制器能引起Uq变化10[V/s] * 0.001s = 0.01V。
  • Tf:低通滤波器时间常数。值越小滤波效果越差。如果Tf=0,则没有滤波效果,Vf=V。 Tf参考范围:0~0.5s。具体原理参考:低通滤波器原理

1.1 速度环PID整定

设置目标速度=10rad/s,P=0,I=0,D=0,output ramp=0, low pass filter = 0.01。
逐渐增大P值,当P=0.08时出现明显震荡,取P=0.080.8=0.064。
在这里插入图片描述
逐渐增大I值,当I=1.6时出现震荡,取I=1.6
0.8=1.28
在这里插入图片描述

1.2 整定过程注意事项

每次调整完PID参数后,需要改变一下电机的转速。这里需要加适当的负载,比如用手轻轻压住一点,让电机速度降下来就可以了。如果按压力量太大,直接导致电机停止,则PID会将电流调节到最大值,当松开手后,PID又将电流回调到负值,最终在角速度=400rad/s,电流-0.8附件达到平衡,系统已经失控。
在这里插入图片描述

2. 位置控制 position control

位置控制环是在上一节速度控制环的基础上增加了一个位置控制环。增加了一个位置环PID控制器,一个位置环低通滤波器LPF(可选项,按需要增加)。用户输入需要的角度ad(desired angle),整个控制环路从磁编码器采集到的角度a(angle),角度经过低通滤波器后得到af(angle filtered),ad、af输入到位置环PID控制,得到Vd(desired velocity),之后的过程就是上一节总结的速度环控制的过程了。
在这里插入图片描述
调节角度PID时,需要先把速度PID、力矩PID(current q PID、current d PID)调试好。一般角度PID只需要P就够了,I、D都设置为零。下图可以看出P参数对于调试结果的影响。
在这里插入图片描述

  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
加减速是在速度控制中非常重要的一个方面。在SimpleFOC中,可以通过调整速度环的PID参数来实现加减速的控制。 首先,需要设置速度环的PID参数。PID控制器中的P值决定了响应速度,P值越大,响应速度越快。但是P值过大可能会引起震荡。I值决定了积分(累积误差)响应的速度,I值越大,积分响应越快。但是I值过大也可能会引起震荡。D值是微分增益,通常是最难调节的参数。一般先将D设为零,调节好P和I,如果还有超调现象,再适当增加D进行微调。\[3\] 另外,还可以通过调整output_ramp参数来控制输入到力矩控制环的最大变化量。output_ramp越大,PID引起控制电压变化的速度越快;output_ramp越小,PID引起控制电压变化的速度越慢。这个参数的单位是V/s,通常控制环每1ms循环一次,假设output_ramp=10,则每次循环,PID控制器能引起控制电压变化10\[V/s\] * 0.001s = 0.01V。\[3\] 此外,还可以通过调整低通滤波器的时间常数Tf来控制滤波效果。Tf值越小,滤波效果越差。如果Tf=0,则没有滤波效果,速度信号直接传递。一般Tf的参考范围是0~0.5s。\[3\] 综上所述,通过调整速度环的PID参数、output_ramp参数和低通滤波器的时间常数Tf,可以实现加减速的控制。具体的调节过程可以参考SimpleFOC的文档中关于速度控制的章节。\[2\] #### 引用[.reference_title] - *1* *2* *3* [SimpleFOC调参2-速度位置控制](https://blog.csdn.net/sinat_22081411/article/details/125885225)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值