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

目录

  • 背景介绍
  • 1. 速度控制 [velocity control](https://docs.simplefoc.com/velocity_loop)
    • 1.1 速度环PID整定
    • 1.2 整定过程注意事项
  • 2. 位置控制 [position control](https://docs.simplefoc.com/angle_loop)

背景介绍

FOC作为直流无刷电机控制最常用的算法,得到广泛应用。在开源社区最常用的FOC项目有:simpleFOC,ODrive,VESC等。其中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,再经过力矩控制环驱动电机转动。
SimpleFOC调参2-速度、位置控制_第1张图片
力矩控制环采用电流控制时(DC or FOC current),速度控制框图如下:编码器采集到的角度值,计算得到速度,经过低通滤波器后得到Vf;用户输入目标速度Vd(desired velocity)。Vd,Vf输入到速度环PID控制器,得到控制电流iq/id,再经过力矩控制环驱动电机转动。力矩控制环torque control loop就是上一篇SimpleFOC调参1-力矩控制总结的所有部分。速度控制是在力矩控制环的外围再增加了一个速度控制环。
SimpleFOC调参2-速度、位置控制_第2张图片
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。
SimpleFOC调参2-速度、位置控制_第3张图片
逐渐增大I值,当I=1.6时出现震荡,取I=1.6
0.8=1.28
SimpleFOC调参2-速度、位置控制_第4张图片

1.2 整定过程注意事项

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

2. 位置控制 position control

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

你可能感兴趣的:(单片机,物联网,嵌入式硬件)