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

本文详细介绍了如何在simpleFOC库中对直流电机的电流环、速度环和位置环PID参数进行整定,包括电流控制、力矩控制和速度控制的调试步骤,以及注意事项如LPF设置和硬件配合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍

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参数会不同。
    在这里插入图片描述
双闭环PID参数的步骤如下: 1. 首先,调电流环/力矩环的PID参数。一般情况下,可以将current qcurrent d的PID参数设置为相同的值,只需要调好current q的PID参数即可。调试步骤如下: - 将积分增益I微分增益D设置为0,只调试比例增益P。记录下不同P值下的表现,并选择合适的P值。 - 将微分增益D设置为0,调试积分增益I。记录下不同I值下的表现,并选择合适的I值。 - 一般情况下,不需要调微分增益D。只有在系统出现震荡时,可以稍微增加一点D值。 2. 接下来,调位置环的PID参数。相对于电流环,位置环的PID参数要简单得多。只需要调比例增益P即可。调试步骤如下: - 将积分增益I微分增益D设置为0,只调试比例增益P。记录下不同P值下的表现,并选择合适的P值。 需要注意的是,在长时间进行PID时,simpleFOC硬件内部参数可能会与studio参数不一致。因此,在调试完电流速度PID参数后,需要将这些参数通过程序写入硬件,然后再调试位置环。 另外,还有一些注意事项需要考虑: - motion downsample:用于设置down sample motion loop的速度,默认值为10。在进行PID时,必须保证motion downsample的值相同,不同的值对应的PID参数会不同。 - output ramp:输出斜率,用于减小输入到力矩控制环的最大变化量。output_ramp越大,PID引起Uq变化的速度更快;output_ramp越小,PID引起Uq变化的速度更慢。在调试PID过程中,output ramp的值会影响P值I值的作用时间。每次调节前需要保证output ramp的值相同,不同的值对应的PID参数会不同。 综上所述,双闭环PID参数的步骤包括调电流环/力矩环的PID参数位置环的PID参数,并注意一些额外的参数设置。 #### 引用[.reference_title] - *1* *2* *3* [SimpleFOC调参3-PID参数攻略](https://blog.csdn.net/sinat_22081411/article/details/125998066)[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^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值