4. 定子电阻Rs辨识实操:硬件电路搭建、电流采样校准、PWM占空比计算

好,咱们进入实操环节了。前面讲了那么多理论,说白了,定子电阻辨识就是给电机线圈通个直流电,测出电流和电压,然后一除就完事。但实际做起来,坑不少。我当年第一次做的时候,测出来的电阻值飘得离谱,后来才发现是电流采样没校准。

这一章,咱们就手把手把硬件搭起来,把采样校准搞定,再把PWM占空比算明白。

4.1 硬件电路搭建:你需要什么?

先看看硬件上需要准备什么。我习惯把电路分成三块:功率板、采样电路、隔离与保护。

模块 关键器件 说明
功率板 MOSFET三相全桥(如IRFS3006) 至少能承受2倍额定电流
电流采样 采样电阻(10mΩ)+ 差分运放(如INA240) 采样电阻要低温漂,运放带宽够用就行
隔离与保护 光耦隔离(如6N137)、过流保护电路 保护你的MCU和电脑
MCU STM32F405或类似 带高级定时器,支持互补PWM

嗯,这里要注意一点:采样电阻的布局很关键。我见过有人把采样电阻放在离MOSFET很远的地方,结果引入了一大堆噪声。采样电阻要尽量靠近电机相线输出端,走线要短而粗。

警告: 千万别在电机转动时进行Rs辨识!一定要确保电机轴是锁死的,或者转子处于静止状态。否则测出来的不是定子电阻,而是反电动势+电阻的混合值,完全没法用。

4.2 电流采样校准:为什么必须做?

你想想看,采样电阻是10mΩ,如果流过1A电流,产生的压降才10mV。这么小的信号,运放稍微有点失调,或者ADC参考电压有点偏差,测出来的电流就完全不准了。

我做过一个项目,采样电阻标称10mΩ,实际测出来是9.8mΩ。如果不校准,电阻辨识误差直接就是2%。对于高性能FOC来说,这误差太大了。

校准步骤其实不复杂,就三步:

  1. 零点校准: 电机不通电,采集ADC值,记录为offset。这个offset包含了运放失调和ADC偏置。
  2. 增益校准: 通一个已知的直流电流(比如用精密电流源),记录ADC值,算出实际增益。
  3. 温度补偿: 采样电阻有温漂,铜的温漂系数大约是3900ppm/°C。如果环境温度变化大,需要加温度传感器做补偿。
核心公式:
I_real = (ADC_raw - offset) * gain
其中 gain = I_ref / (ADC_ref - offset)

我曾经在一个项目中偷懒没做零点校准,结果测出来的Rs值在电机冷态和热态下差了15%。后来老老实实加了校准,误差立马降到1%以内。

4.3 PWM占空比计算:怎么给电机通直流电?

Rs辨识的核心是给电机通一个直流电流。但三相全桥输出的是PWM波,怎么变成直流?

方法很简单:让某一相的上桥臂一直导通,另一相的下桥臂一直导通,第三相悬空。这样电流就从一相流进去,从另一相流出来,相当于给两相绕组通了个直流电。

举个例子,我们要给A相和B相通电:

  • A相上桥臂:100%占空比(一直导通)
  • B相下桥臂:100%占空比(一直导通)
  • C相:全部关断

但实际中,我们不会直接用100%占空比。因为那样电流会很大,可能烧MOSFET。我们需要用一个小占空比,比如10%,然后慢慢往上加,直到电流达到目标值。

占空比的计算公式如下:

// 目标电流 I_target = 0.5A (安全值)
// 母线电压 Vbus = 24V
// 预估电阻 Rs_est = 0.5Ω (先猜一个值)

// 需要的电压 V_need = I_target * Rs_est * 2 (两相绕组)
// V_need = 0.5 * 0.5 * 2 = 0.5V

// 占空比 Duty = V_need / Vbus
// Duty = 0.5 / 24 = 0.0208 = 2.08%

// 实际代码中,还要考虑死区时间和MOSFET压降
float duty = (I_target * Rs_est * 2.0f) / Vbus;
duty += 0.01f; // 补偿MOSFET压降和死区
小技巧: 我习惯先给一个很小的占空比(比如1%),然后看电流采样值。如果电流太小,再逐步增加。千万别一上来就给大占空比,否则电流可能瞬间冲到几十安培,MOSFET直接冒烟。

4.4 完整实操流程

好了,咱们把上面这些串起来,形成一个完整的实操流程:

  1. 硬件检查: 确认所有接线正确,电机轴锁死,母线电压正常。
  2. 电流采样校准: 执行零点校准和增益校准,记录offset和gain。
  3. 设置PWM: 选择两相(比如A和B),设置A上桥臂和B下桥臂为固定占空比。
  4. 施加小电流: 从1%占空比开始,逐步增加,直到电流达到0.5A~1A(根据电机额定电流调整)。
  5. 采集数据: 等待电流稳定(大约100ms),采集100个电流和电压样本,取平均值。
  6. 计算Rs: Rs = Vbus * duty / (I_avg * 2)。注意这里除以2是因为电流流过两相绕组。
  7. 重复验证: 换另外两相(比如B和C、C和A),重复步骤3~6,取三次结果的平均值。
避坑指南: 我曾经在步骤5中只采集了10个样本,结果噪声太大,Rs值跳来跳去。后来改成采集100个样本取平均,效果就好多了。另外,采样时机要选在PWM周期的中间点,避开开关噪声。

4.5 知识体系流程图

下面这张图把整个Rs辨识的流程串起来了,你可以对照着看:

定子电阻Rs辨识实操流程 硬件电路搭建 电流采样校准 PWM占空比计算 功率板 + 采样电路 隔离保护 + MCU 零点校准 增益校准 温度补偿 选择两相 设置占空比 逐步增加电流 采集电流和电压数据(100个样本取平均) Rs = Vbus * duty / (I_avg * 2)

这张图把整个流程分成了四层:硬件准备、具体操作、数据采集、计算。你照着这个顺序做,基本不会出错。

4.6 常见问题与解决方法

问题现象 可能原因 解决方法
电流采样值跳动很大 采样时机不对,采到了开关噪声 在PWM周期中间点采样,或者加硬件滤波
Rs值偏大 接触电阻没考虑进去 检查接线端子是否拧紧,或者用四线法测量
Rs值偏小 电流采样增益校准不准 重新做增益校准,用精密电流源验证
电机轻微转动 三相电流不平衡,产生了转矩 确保另外一相完全关断,检查死区时间

嗯,基本上就这些了。Rs辨识是整个FOC参数辨识中最简单的一步,但也是基础。这一步做扎实了,后面的Ld、Lq辨识才能准确。

我个人建议,每次换电机或者换硬件平台后,都重新做一次Rs辨识。别偷懒用上次的参数,因为温度、接触电阻这些都会变。


专注资料整理