第四节:电流极性检测——死区补偿的“眼睛”

做FOC死区补偿,最头疼的问题是什么?

我个人觉得,不是算法有多复杂,而是你根本不知道电流到底往哪个方向流。

电流极性检测,说白了就是给死区补偿装上一双“眼睛”。你看不到电流方向,补偿就是瞎补。我在项目里吃过这个亏,补了半天,谐波反而更大了。后来才明白,问题出在极性判断上。

4.1 相电流采样方法

先说说采样。电流极性判断的前提,是你得先把电流采准了。

目前主流的方法有三种,我一个个讲。

4.1.1 单电阻采样

低成本方案,一个采样电阻放在母线下面。通过不同开关状态,重构出三相电流。

嗯,这里要注意:单电阻采样在扇区边界附近,采样窗口会非常窄。我遇到过采样点刚好落在死区时间里,读出来的电流全是噪声。

避坑指南:单电阻采样时,务必检查最小采样时间。我曾经因为没注意这个,导致电流极性在过零点附近反复跳变,死区补偿完全失效。

4.1.2 双电阻采样

两相电阻,一相计算。这是目前工业上最常用的方案。

为什么?因为双电阻能避开大部分采样盲区。你想想看,两相直接采,剩下一相用基尔霍夫算,可靠性高很多。

4.1.3 三电阻采样

三相各一个电阻,精度最高,成本也最高。

我建议,如果做高端伺服,直接上三电阻。省下来的调试时间,比那点成本值钱多了。

采样方式 成本 精度 采样盲区 推荐场景
单电阻 扇区边界 风机、泵类
双电阻 极小 通用伺服
三电阻 极高 高端伺服

4.2 电流极性判断的难点

采到电流值了,然后呢?

很多人觉得,电流正负还不简单?大于零就是正,小于零就是负。

实际做起来,完全不是这么回事。

4.2.1 噪声干扰

电机运行时的噪声有多大?我测过,在PWM开关瞬间,采样值能跳变几十个LSB。

你直接用这个值判断极性,结果就是正负来回跳。死区补偿跟着来回跳,电流波形比锯齿还难看。

4.2.2 零点附近的模糊区

电流在零点附近时,信噪比极差。信号本身很小,噪声相对就很大。

说白了,你根本分不清这个“小值”到底是正还是负。

核心问题:电流极性判断的难点,不在于算法,而在于你如何区分“真实的过零”和“噪声引起的过零”。

4.3 零电流钳位现象

这个现象,我估计做过实际项目的都遇到过。

什么叫零电流钳位?就是电流在过零点附近,被“吸”在零轴上,下不去了。

为什么会这样?

因为死区时间的存在。你想想看,当电流很小的时候,死区时间内续流二极管导通,电流路径被强制改变。结果就是,电流本该平滑过零,却被死区“卡”住了。

我在做一款低压伺服时,零电流钳位导致电流波形出现了明显的“平顶”。一开始我还以为是传感器坏了,查了半天,最后发现是死区补偿没做好。

个人经验:零电流钳位最明显的特征,是电流波形在过零点附近出现一段平坦区域。如果你看到这种波形,先别急着调PI参数,检查一下死区补偿。

4.4 过零点检测延迟问题

最后一个难点,是延迟。

电流过零了,但你的检测系统要多久才能知道?

4.4.1 采样延迟

ADC采样需要时间,滤波需要时间。我常用的做法是在PWM载波中点触发采样,但即使这样,从电流实际过零到采样值更新,也有几十微秒的延迟。

4.4.2 滤波延迟

为了抑制噪声,我们通常会加低通滤波。但滤波会引入相位延迟。

你想想看:滤波后的电流过零点,和实际电流过零点,差了多少?

我实测过,一阶RC滤波在50Hz电流下,延迟大约3ms。这个延迟在低速时还能忍,高速时就完全不能接受了。

4.4.3 算法处理延迟

从采样完成,到极性判断结果出来,中间还有CPU处理时间、通信延迟等。

避坑指南:我曾经在一个项目中,把所有延迟加起来算了算,发现极性判断比实际过零晚了整整一个PWM周期。结果就是,死区补偿的方向完全反了,电流谐波反而增大。后来我改用预测算法,提前估算过零点,才把这个问题解决。

4.5 我的建议

讲了这么多难点,最后给点实操建议。

  1. 采样时刻要选对:我习惯在PWM载波中点触发采样,避开开关噪声。
  2. 加滞回比较:不要用单阈值判断极性。设一个滞回区间,比如±5%额定电流,在这个区间内保持上一次的极性判断结果。
  3. 做预测补偿:根据电流变化率,提前估算过零点,补偿采样和滤波带来的延迟。
  4. 注意零电流钳位:如果发现电流波形有平顶,优先检查死区补偿参数,而不是调PI。

电流极性检测,看着简单,做起来全是坑。但只要你把这些坑都踩一遍,后面就顺了。

嗯,下一节我们聊聊具体的死区补偿算法实现,到时候会用到今天讲的这些内容。