电机FOC控制算法中电流采样部分的核心
在原理图上,IA+、IB+、IC+这些检测点确实只有“正”。但这并不妨碍它们最终能测出包含正负值的真实相电流。
下面为您详细解释为什么会出现“只有正”的标注,以及FOC算法中是如何处理的。
1. 为什么检测点标注为“正”?
这个“正(+)”的标签,指的是检测点本身,而不是指测量到的电流值。它的含义是:
-
这是电流的“流入”点或“高端”检测点:电流从MOSFET的源极(SH_x点)流入这个采样电阻,然后流入地(GND)。
-
物理连接的正极:在PCB布局和原理图中,这个点需要连接到运算放大器或ADC通道的正输入引脚。与之相对的,地的连接可以看作是“负”输入。
所以,IA+
的意思是“A相电流采样网络的正端连接点”。当电流实际流向是从上桥臂MOSFET流向地时,在这个电阻上产生的电压降是上正下负,ADC读到一个正的电压值。当电流反向时(从地流向MOSFET),电压降反向,ADC就会读到一个负的电压值(或者一个低于“零电流”基准电压的值)。
结论:这个“+”号是硬件设计上的标记,不代表软件读回的电流值符号。ADC完全可以读出正负值。
2. FOC中如何利用这种检测方式?
您采用的这种在每相下桥臂(或上桥臂源极)串联采样电阻到地的方法,是FOC驱动中最经典、最常用的电流检测方案之一,通常被称为“单电阻采样”或“三相采样”(注意:这与后文的“三电阻采样”是不同的概念)。
FOC算法需要知道两相的电流。处理流程如下:
第1步:同步采样
FOC算法需要精确地在特定的PWM时刻进行ADC采样,以获取准确的相电流。最常见的是在PWM开关周期的中点附近采样,此时相电流正好等于其平均电流,纹波最小。
第2步:读取原始ADC值
您的MCU会同时读取IA+(对应R34电压)、IB+(对应R33电压)和IC+(对应R32电压)三个通道的ADC值。
第3步:减去“零电流”偏置电压(校准)
这是一个至关重要的步骤!
-
硬件上,当电机相电流为0时,采样电阻两端的电压应该是0V。但由于运放和ADC的偏移,实际输出的电压值可能不是0。
-
因此,在电机启动前或系统初始化时,需要测量并记录这三个ADC通道在零电流状态下的基准值(通常称为“Offset”或“偏置”)。
-
在后续的每次采样中,都需要将读到的原始ADC值减去这个预存的偏置值,才能得到真正代表电流大小的电压值。
真实电压值 = 原始ADC值 - 零电流偏置值
第4步:换算成物理电流值
将校正后的电压值除以采样电阻的阻值(例如 R34=0.1Ω),就得到了真实的相电流大小。
Ia = (ADC_A_corrected) / R34
第5步:处理负电流
经过第3步的偏置校正后,得到的电压值就有了正负:
-
如果
ADC_A_corrected > 0
,表示电流从MOSFET流向地,定义为正电流。 -
如果
ADC_A_corrected < 0
,表示电流从地流向MOSFET,定义为负电流。
至此,您的系统就得到了包含正负信息的A、B、C三相电流 Ia, Ib, Ic
。
第6步:克拉克变换(Clark Transform)
根据基尔霍夫电流定律,三相电流之和为零(Ia + Ib + Ic = 0
)。因此,在FOC中,通常只需要直接测量其中两相电流(如Ia和Ib),第三相电流(Ic)可以通过计算得出:Ic = -Ia - Ib
。这样可以节省一个ADC通道和运放,这种方案称为“双电阻采样”。而您图中所示的三个电阻都焊接的方案,称为“三电阻采样”,可靠性更高,可以提供冗余校验。
3. 直接检测相电流不是更好吗?
您现在采用的这种方法,正是最经典的直接检测相电流的方法!
您可能混淆了“相电流”和“线电流”检测,或者与另一种“单电阻采样”方案搞混了。
-
您图中的方案(三电阻采样):是直接检测相电流。在每个相的下桥臂直接串联电阻,测量的是流入每个相绕组的电流,信息最直接,精度高,是性能最好的方案之一。
-
另一种方案(单电阻采样):是在直流母线的负端只放置一个采样电阻,通过复杂的时序算法,在特定的PWM状态下拼接出三相电流。这种方案成本低,但软件复杂,动态范围窄,性能不如您图中的方案。
所以,请放心,您现有的硬件设计是非常正确且优秀的,完全满足FOC控制的需求。
总结与建议
-
硬件正确:您的原理图设计是标准的“三电阻相电流采样”方案,是实现FOC的最佳实践之一。
-
“正”号是标记:
IA+
指的是采样网络的正输入端,ADC读出的值经过偏置校正后自然就包含了电流的正负信息。 -
软件关键步骤:
-
校准零电流偏置(Offset):这是确保测量准确的核心,必须在软件中实现。
-
同步ADC采样:必须在正确的PWM时刻触发ADC采样。
-
单位换算:将ADC值转换为电压,再除以电阻值得到电流值(安培)。
-
-
FOC算法:直接使用测量到的两相电流(如Ia, Ib),并计算出第三相(Ic = -Ia - Ib),然后进行克拉克(Clark)和帕克(Park)变换。
您不需要对硬件做任何修改,只需要在软件中按照上述流程实现电流采样和校正即可。