SimpleFOC调参1-力矩控制
时间:2023-07-16 05:07:00
目录
- 背景介绍
- 1 电压控制 [voltage control](https://docs.simplefoc.com/voltage_torque_mode)
-
- 1.1 pure voltage:无电机参数
- 1.2 voltage current estimation:需要相电阻
- 1.3 voltage current estimation back-EMF compensation:需要相电阻 KV值
- 2 电流控制 [DC current control](https://docs.simplefoc.com/dc_current_torque_mode)
- 3 FOC电流控制 [FOC current](https://docs.simplefoc.com/foc_current_torque_mode)
- 4. 三种不同控制方法的比较
-
- 4.1 voltage
- 4.2 DC current
- 4.3 FOC current
- 5. 问题在调试过程中
-
- 5.1 问题1:当驱动电流单次变化过大时,电机会波动,
背景介绍
FOC广泛应用于直流无刷电机控制中最常用的算法。它是开源社区最常用的FOC项目有:simpleFOC,ODrive,VESC等。其中simpleFOC由于使用方便,支持各种硬件平台,非常适合新手入门。我在用它simpleFOC的过程中踩了不少坑,在此记录学习调试过程中的一些心得。
硬件平台:最好直接买套件,熟悉后自己搭配。我在这里直接买的灯哥开源套件
电机:2204
驱动器:L6234
磁编码器:AS5600
电流检测:INA240
主控MCU:ESP32
软件平台:Arduino,simpleFOC库,simpleFOC studio图形调试工具
IDE工具:PlatforIO,也可以使用Arduino IDE(编译和下载速度很慢,所以我找到了替代工具platforIO)
FOC有两种控制方法:
- 开环控制:只需要电机和驱动器,不需要编码器和电流检测。算法简单,但控制效果差,驱动效率差。驱动器和电机容易过热烧坏,所以我烧了几个驱动器。
- 闭环控制:需要编码器和电流检测,算法复杂,控制效果好,驱动效率高。初学者必须使用闭环控制,熟悉后才能玩开环控制。
以下是闭环控制的几种控制方法:力矩控制,速度控制,角度控制。这里只总结了我自己调试的各种参数和图形意义。具体程序和方法参考simpleFOC官方文件有详细介绍。由于篇幅较长,分为两篇文章。本文仅总结扭矩控制、下一篇文章总结速度控制和位置控制。
1 电压控制 voltage control
这种控制方式类似于直流有刷电机的控制,通过设置目标电压Uq,同时读取电机角度angle(a),经过FOC算法得到相电压Ua、Ub、Uc,FOC算法保证磁场方向垂直于永磁铁磁场方向90°,以确保最大扭矩。相电压通过驱动器BLDC Driver驱动电机转动。
电压控制仅用于磁编码器检测到的角度,电机参数(相电阻,KV等等),没有PID因此,参数设置各个PID默认参数不会影响控制效果。
1.1 pure voltage:无电机参数
有:
其中Uq:设置电压值,I:相电流,k:比例系数,T:扭矩。由于没有电流反馈,实际电压只能根据角度反馈进行估计U,因此,实际电压会不稳定。
注:本公式仅适用于低速,高速时,I = (Uq - EMF) /R,电机线圈中的反向电势会产生显著影响,等式不再成立。
1.2 voltage current estimation:需要相电阻
若设置了电机相电阻参数,则:
这种控制比pure voltage控制更准确。因为你知道相电阻,你可以很容易地计算驱动电流。相应的电压波动也要小得多。它只在低速下有效,在高速时仍受到反向电势的影响。
1.3 voltage current estimation back-EMF compensation:需要相电阻 KV值
在simpleFOC最新版(V2.2.2)增加了电机参数,KV值。在相电阻的基础上,电阻的基础上增加的。角度微分后通过角度传感器检测角度velocity(v),低通滤波后除以KV可以预测反向电势(BEMF),Ubemf = v/KV,可用作近似计算,两者不完全相等。
增加了KV当输入目标值为0时.2时,电压会降低BEMF一起计算。
当输入目标值为0时,给出启动速度,电机会旋转(因为有BEMF产生)。加载容易停止(强制)。BEMF为0)。
因为没有使用电压控制PID所以修改所有调节器PID参数不会影响结果。
2 电流控制 DC current control
除了检测角度外,电流控制还需要同时检测相电流,以直接控制电流大小。控制效果远好于电压控制。算法更复杂,需要一个低通滤波器(low pass filter),1个current q PID调节器。
假设电机产生的扭矩与驱动电流成正比,扭矩可以通过控制电流来控制。这个假设的前提是低速iDC=iq,id在高速条件下,重量可以忽略不计,id重量不容忽视,iDC=iq不再成立,需要用下一节总结。FOC电流控制。
如下图所示,simpleFOC studio所有参数都通过串口显示。传感器参数显示在左上角:
- angle:磁编码器检测到的角度,单位:弧度
- velocity:根据angle计算:rad/s
- current:单位:A
- target:用户设定的目标值
实时绘制右上方区域的监测变量:target,Vq,Vd,Cq,Cd,Vel,Angle
右下角的区域是串口命令
左下方列出了simpleFOC可调参数:
- motion config:运动配置
- motion control type:torque,velocity, angle,velocity openloop, angle openloop
- torque control type: voltage, DC current, FOC current
- motion downsample:1000, 频繁使用采样率/1000FOC因此,需要控制影响downsample
- velocity PID:速度环PID控制,下一篇SimpleFOC调查2-速度控制介绍
- angle PID:位置环PID控制,在另一篇文章中SimpleFOC3-位置控制中介绍
- current q PID:本节详细介绍了参数的含义和相应的图形显示
- current d PID:下一节详细介绍了参数的含义和相应的图形显示
- limits:限制电机极限参数
- velocity limi: 速度限制
- voltage limit:电压限制
- current limit:电流限制
- States:电机状态参数
- target:目标值
- voltage q:电压q分量
- voltage d:电压d分量
- current q:电流q分量
- velocity:速度
- angle:角度
current d:电流d分量 - sensor config:传感配置
- zero angle offset:零角度偏移量,单位:弧度
- electrical zero offset:电零角度偏移量,单位:弧度
- general settings:通用配置
- phase resistance:电机相电阻
- motor status:电机状态 enabled,disabled
- PWM modulation: PWM调制方式 sine PWM, space vector PWM, trapezoidal 120, trapezoidal 150
- modulation center: 调制中心对齐 enabled, disabled
motion control type 是torque力矩控制时,选择torque control type为DCcurrent时,只用到了current q PID调节器。设置target为0.2,目标是把驱动电路控制在0.2A,各参数含义及对应波形图如下:
- proportional gain: 比例增益,影响PID控制的响应速度,P值越大响应速度越快
- Integral gain:积分增益,累积误差的响应速度,I值为0时,current出现很大偏差,不会纠偏。I=300、500时响应见下图
- Derivative gain:微分增益,未使用
- output ramp:输出斜率?含义不清楚
- output limit:输出限制,限制电压
- low pass filter: 低通滤波器 Tf 滤波时间常数。影响滤波效果。
3 FOC电流控制 FOC current
这种控制方式是真正的完全版FOC控制。需要用到磁编码器,电流检测。将同时同时电流的q分量和d分量。目标是使desired current Id与q分量相等,d分量等于零。这样无论在低速、高速的情况下都会有比较好的控制效果,不会受d分量影响。这里用到2个PID控制器,2个low pass filter滤波器。
FOC电流控制与DC电流控制最大的区别是增加了current d控制,同样设置target=0.2,同样空载情况下,角速度可以达到175作用,而DC电流控制角速度只有80左右。用手去挡电机,让电机停止后,明显感觉力变大了。这也说明:torque扭矩控制,控制的是驱动电流大小,而不是真实的电机扭矩。
Current d PID个参数含义与Current q PID相同,只是作用对象不同了。current q = target value, current d = 0
- proportional gain: 比例增益,影响PID控制的响应速度,P值越大响应速度越快
- Integral gain:积分增益,累积误差的响应速度,I值为0时,current出现很大偏差,不会纠偏。
- Derivative gain:微分增益,未使用
- output ramp:输出斜率?含义不清楚
- output limit:输出限制,限制电压
- low pass filter: 低通滤波器 Tf 滤波时间常数。影响滤波效果。
4. 三种不同控制方式对比
4.1 voltage
下图中可以看到voltage控制时电流只是估计值,空载和负载时电流变化很大。
4.2 DC current
下图可以看出DC current直接控制电流,控制效果比voltage好很多,但是还是有一部分能量浪费在了current d上
4.3 FOC current
FOC控制做到了高低速情况下都使current q=target value, current d=0,能量利用率最高,转速也最快
5. 调试过程中问题
5.1 问题1:驱动电流单次变化太大时,电机会出现震荡,
参数设置:
- motion control type:Torque
- torque control type:FOC current
- Current q PID: P=5, I=1000, D=0
- Current d PID: P=5, I=1000, D=0
现象:设置目标值由低到高时一切正常,比如M0—M0.5,M0.5–M1.0。但是设置目标值由高到底时,单次变化过大会出现过冲,电流current q直接到-2A左右,系统在此处达到平衡并震荡。
过冲值与比例因子P相关,设置current q、d的比例因子为10,结果如下图
设置current q的比例因子为20,current d的比例因子为10,结果如下图
最终如下图,可以得到比较好的结果。但是当M1.5—M0时优惠出现震荡。要想获得稳定的加减速过程,需要逐步加速、减速,不能让力矩控制环中的电流current q、d发生巨变,如果发生巨变很可能引起电机震荡,甚至损坏电机、驱动电路。