赞
踩
FOC作为直流无刷电机控制最常用的算法,得到广泛应用。在开源社区最常用的FOC项目有:simpleFOC,ODrive,VESC等。其中simpleFOC因其简单易用,支持多种硬件平台,很适合新手入门。我在用simpleFOC的过程中踩了不少坑,在此记录学习调试过程中的一些心得。
硬件平台:开始最好直接购买套件,熟悉后再自己搭配,我这里直接买的灯哥开源的套件
电机:2204
驱动器:L6234
磁编码器:AS5600
电流检测:INA240
主控MCU:ESP32
软件平台:Arduino,simpleFOC库,simpleFOC studio图形化调试工具
IDE工具:PlatforIO,也可以使用Arduino IDE(编译、下载速度很慢,所以我才找到了替代工具platforIO)
FOC控制方式有两种:
这里主要总结闭环控制的几种控制方式:力矩控制,速度控制,角度控制。这里只总结了我自己调试的各种参数及图形化含义。具体程序和方法参考simpleFOC官方文档,里面有详细介绍。由于篇幅较长,分为两篇来写,本篇只总结力矩控制,下篇总结速度控制、位置控制。
这种控制方式类似于直流有刷电机的控制,通过设置目标电压Uq,同时读取电机角度angle(a),经过FOC算法得到相电压Ua、Ub、Uc,FOC算法保障线圈产生的磁场方向与永磁铁磁场方向垂直90°,从而保障扭矩最大。相电压通过驱动器BLDC Driver驱动电机转动。
电压控制只用到了磁编码器检测到的角度,电机参数(相电阻、KV值等),没有PID参数设置,所以各个PID都是用默认参数,不会对控制效果产生影响。
因为电机线圈产生的电流与扭矩成正比,而电流又与电压成正比,所以有:
其中Uq:设定电压值,I:相电流,k:比例系数,T:扭矩。因为没有电流反馈,只能根据角度反馈来预估实际电压U,所以实际电压会不稳定。
注意:这个公式只适用于低速情况,在高速情况下,I = (Uq - EMF) /R,电机线圈中的反向电动势会产生显著的影响,等式不再成立。
如果设置了电机相电阻参数,那么:
这种控制方式比pure voltage控制更精准一些。因为知道了相电阻,可以很容易的计算出驱动电流。对应的电压波动也要小很多。同样只在低速情况下有效,高速时仍然受反向电动势影响。
在simpleFOC最新版(V2.2.2)中增加了一个电机参数,KV值。在相电阻的基础上,又增加了反向电动势的反馈。通过角度传感器检测角度,角度微分后得到速度velocity(v),在经过低通滤波后除以KV值,可以预估出反向电动势(BEMF),Ubemf = v/KV,可以用作近似计算,二者不完全相等。
增加了KV值后,当输入目标值0.2时,电压会把BEMF一起计算进去。
当输入目标值设为0时,给一个启动速度,电机就会转动(因为有BEMF产生)。加一个负载很容易停止(强制BEMF为0)。
由于电压控制没有用到PID调节器,所以修改所有PID参数都不会对结果产生影响。
电流控制除了需要检测角度之外,还需要同时检测相电流,从而能够直接控制电流大小,控制效果比电压控制好很多,算法要复杂一些,需要用到1个低通滤波(low pass filter),1个current q PID调节器。
假设电机产生的扭矩与驱动电流成正比,可以通过控制电流来控制扭矩。这个假设的前提是在低速情况下iDC=iq,id分量可以忽略不计,在高速情况下,id分量无法忽略,iDC=iq不再成立,此时就需要用到下一节总结的FOC电流控制了。
如下图所示,simpleFOC studio通过串口把所有参数都显示出来。左上方区域显示传感器参数:
右上方区域实时绘制监测变量:target,Vq,Vd,Cq,Cd,Vel,Angle
右下方区域是串口命令行
左下方列出了simpleFOC可以调整的参数:
这种控制方式是真正的完全版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
下图中可以看到voltage控制时电流只是估计值,空载和负载时电流变化很大。
下图可以看出DC current直接控制电流,控制效果比voltage好很多,但是还是有一部分能量浪费在了current d上
FOC控制做到了高低速情况下都使current q=target value, current 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发生巨变,如果发生巨变很可能引起电机震荡,甚至损坏电机、驱动电路。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。