SimpleFOC调参3-PID参数整定攻略

背景介绍

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

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

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

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

前面两篇总结了simpleFOC studio的基本参数含义,SimpleFOC调参1-力矩控制SimpleFOC调参2-速度、位置控制,本篇主要总结simpleFOC中PID参数的整定攻略。

1. 电流环/力矩环PID整定

电流环PID整定整体框图如下,Torque control type: FOC current; motion control type: Torque
在这里插入图片描述

一般情况下current q、d的PID参数设置为相同的值,只需要调整好current q的PID参数,current d的PID参数不用再单独调试了。调试整体步骤如下:

  • I=0,D=0,调试比例增益P,做好记录表格,选择适合的P值
  • D=0, 调试积分增益I,做好记录表格,选择合适的I值
  • 一般D=0,不用调整。如果系统出现震荡,再增加一点D值,

测试条件:I=0,D=0时,设置目标值从M0—M0.5,P从5~160变化时,current q的变化量。
在这里插入图片描述
测试结果如下表:从P=20开始,设置M0时手放在电机上开始有震感,P=160时开始有肉眼可见的震荡。选取P=10.

P 值51020507590100150160170
current q0.110.230.34手摸时有震感0.420.450.460.460.470.48轻微震荡0.48震荡

在P=10时,设置目标值从M0—M0.5,I从10~1000变化时,current q的从0达到0.5A需要的时间
在这里插入图片描述
测试结果如下表:从I=200开始,current q稳定的时间基本保持不变,选取I=300。

I值10501002003005001000
current q稳定时间9020106653

此外要注意low pass filter(LPF)参数的影响。当设置LPF=0.02时,current q的纹波会略微变小,但是在current q变化幅度增大时,很容易出现current q过冲,导致系统不稳定。最后测试选择LPF=0.01,此时虽然current q的纹波略大一点,但是在current q有2A直接跳变到0A时都不会有过冲现象,稳定性大大增加。
在这里插入图片描述

2. 速度环PID整定

电流环PID参数设置好之后,更改motion control type为velocity。
测试条件:I=0,D=0时,设置目标值从M0—M100,P从0.010~0.025变化时,velocity的变化量。在跳变点,不时会出现current q/d过冲的现象。
在这里插入图片描述
测试结果如下表:从P=0.01开始,设置M0—M100,P=0.04时开始出现异常震荡,最终选择P=0.02

P 值0.010.0150.0200.0250.0300.040
velocity95979898100震荡

当P=0.02时,设置目标值从M0—M100,I从0.1~0.9变化时,velocity达到100后的过冲量.
在这里插入图片描述
测试结果如下表:从I=0.1开始,设置M0—M100,I=0.9时开始出现异常震荡,最终选择I=0.1

I 值0.10.20.30.40.50.60.70.80.9
velocity 过冲量105105108108117130135135震荡

3. 位置环PID整定

位置环PID整定相对简单很多,只需要调整P值就可以了。需要注意:在长时间进行PID整定时,simpleFOC硬件内部参数可能会与studio参数不一致,此时需要把已经整定好的电流、速度PID参数通过程序写入硬件,再调试位置环
测试条件:I=0,D=0时,设置目标值从M0—M3.14,P从1~20变化时,angle从0运动到3.14需要的时间。在跳变点,不时会出现current q/d过冲的现象。
在这里插入图片描述
测试结果如下表:从P=1开始,设置M0—M3.14,最终选择P=10

P 值12351020
angle时间40252010105

4. 其它注意事项

  1. motion downsample:用于设置down sample motion loop, 会直接影响motor.loopFOC()循环的速度,默认值10。在进行PID整定时,必须首先保障motion downsample的值相同,不同的值对应的PID参数会不同。
  2. 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.在调试PID过程中会影响到P值、I值的作用时间,output ramp越大,响应时间越短。每次调节前需要保障output ramp 值相同,不同的值对应的PID参数会不同。
    在这里插入图片描述
  • 15
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值