3. 电流采样与调理电路:双电阻/三电阻采样方案对比,运放选型与PCB布局要点

电流采样,说白了就是FOC控制的“眼睛”。你算法写得再漂亮,电流信号没采准,一切都是白搭。我见过不少工程师,花大价钱买了高性能MCU,结果在采样电路上省了几毛钱,最后整个系统性能拉胯。

这一章,咱们就聊聊电流采样的两种主流方案——双电阻和三电阻。我会结合自己的项目经验,把运放选型、PCB布局这些坑都给你指出来。

3.1 双电阻采样 vs 三电阻采样:到底怎么选?

先看一张对比图,帮你快速建立整体认知。

电流采样方案对比框架 电流采样方案 双电阻采样 三电阻采样 特点 • 只采样两相电流 • 第三相通过计算得到 • 成本低,PCB面积小 特点 • 三相电流独立采样 • 精度高,鲁棒性好 • 成本高,占用资源多 适用:低成本、小体积场景 适用:高性能、高可靠性场景 选型核心:成本 vs 性能的权衡

3.2 双电阻采样:省钱但有限制

双电阻采样,只在逆变器的两相下桥臂串联采样电阻。第三相电流通过基尔霍夫电流定律算出来:I_c = -(I_a + I_b)。

听起来很简单对吧?但实际用起来,有几个坑你得注意。

我曾经踩过的坑: 双电阻采样在PWM占空比接近0%或100%时,有一相电流根本采不到。因为下桥臂没导通,电流不流经采样电阻。这时候算出来的第三相电流就是错的,FOC直接崩掉。

解决办法有两个:

  • 硬件上: 加一个最小占空比限制,比如PWM不低于5%。
  • 软件上: 用状态观测器或电流重构算法,在不可采样区间做插值。

我个人习惯,在低成本风机、水泵这类对动态响应要求不高的场合,用双电阻就够了。GD32的ADC触发可以灵活配置,配合定时器的互补PWM,能很好地避开不可采样区间。

3.3 三电阻采样:精度优先的选择

三电阻采样,三相下桥臂各放一个采样电阻。每相电流独立测量,不存在“盲区”问题。

你想想看,三电阻方案在任何PWM状态下都能采到电流,控制精度自然更高。我做过一个伺服驱动器项目,要求电流环带宽2kHz,双电阻死活调不上去,换成三电阻一次通过。

但代价也很明显:

  • 多一个采样电阻和运放通道
  • ADC需要多占用一个通道
  • PCB布局更拥挤

GD32的ADC支持多通道同步采样,三电阻方案正好能发挥这个优势。我一般把三个采样通道配置为注入组,用定时器触发同时转换,这样能最大限度减小相电流之间的时间偏差。

3.4 运放选型:别在这上面省钱

采样电阻两端的电压通常只有几十到几百毫伏,必须用运放放大后才能送进ADC。运放选型,我总结了几个关键指标:

参数 要求 为什么重要
失调电压 (Vos) < 1mV 失调电压会直接叠加到电流信号上,造成零点偏移。1mV的失调,在50mΩ采样电阻上相当于20mA的电流误差。
温漂 < 5μV/°C 电机工作环境温度变化大,温漂太大会让电流采样值随温度飘移。
增益带宽积 (GBW) > 5MHz PWM开关频率通常在20kHz左右,运放需要有足够的带宽来跟踪电流的快速变化。
压摆率 (SR) > 5V/μs 电流过零点附近变化最快,压摆率不够会导致信号失真。
共模抑制比 (CMRR) > 80dB 电机相线上的共模电压很高,CMRR决定了运放抑制共模干扰的能力。
我常用的运放型号: 低成本选LMV321或MCP6001,性能要求高时用AD8603或OPA333。GD32内部也有比较器,但精度有限,不建议用于FOC电流采样。

3.5 采样电阻选型与功耗计算

采样电阻的阻值选择,是个权衡:

  • 阻值大: 信号幅度大,信噪比高,但功耗也大,发热严重。
  • 阻值小: 功耗小,但信号微弱,容易受噪声干扰。

一般经验是:采样电阻上的最大压降控制在50~150mV。比如电机峰值电流10A,选10mΩ电阻,最大压降100mV,功耗P = I²R = 10² × 0.01 = 1W。嗯,这里要注意,电阻的额定功率至少要留50%余量,选2W的稳妥。

电阻的温漂系数也很关键。我建议用金属膜电阻或锰铜电阻,温漂控制在50ppm/°C以内。普通贴片电阻温漂动不动200ppm/°C,电流一大,采样值跟着温度跑,你还以为是电机出了问题。

3.6 PCB布局:细节决定成败

电流采样电路对PCB布局极其敏感。我见过一个项目,原理图设计没问题,但PCB布局乱走线,结果采样噪声大到没法用。

几个核心要点:

  1. 采样电阻靠近逆变器:采样电阻到MOSFET的走线越短越好,减少寄生电感。
  2. 差分走线:从采样电阻两端到运放输入,必须走差分线,且等长、等距。两条线要挨在一起走,让共模噪声耦合到两条线上一致,靠运放的CMRR抑制掉。
  3. 运放靠近ADC:运放输出到GD32的ADC引脚,走线尽量短,避免长距离传输引入噪声。
  4. 模拟地与功率地分离:采样电路的地要单独走,在电源输入端单点连接功率地。千万别让大电流的回流路径经过采样电路的地。
  5. 避开高频干扰源:采样走线远离PWM信号线、开关节点和电感。如果实在避不开,加地线屏蔽。
我曾经犯过的错: 有一版PCB,我把采样电阻的差分走线绕过了几个过孔,结果两条线长度差了5mm。高频噪声耦合进来后,两条线上的噪声幅度不一样,运放输出端出现了明显的毛刺。后来改成等长走线,问题解决。

3.7 采样时序与ADC触发配置

电流采样的时机,直接决定了采样值的准确性。FOC控制中,我们通常在下桥臂导通的中间时刻采样,避开开关噪声。

GD32的定时器可以产生ADC触发信号,配置起来很灵活。我一般这样设置:

// 以GD32F303为例,配置TIMER0触发ADC采样
// 设置定时器更新事件作为ADC触发源
timer_automatic_output_enable(TIMER0);
timer_primary_output_config(TIMER0, ENABLE);

// 配置ADC为定时器触发模式
adc_external_trigger_source_config(ADC0, ADC_EXT_TRIGGER_CONV, ADC0_1_EXTTRIG_TIMER0_CH0);
adc_external_trigger_config(ADC0, ADC_EXT_TRIGGER_CONV, ENABLE);

// 设置采样时间,确保在PWM中间时刻采样
// 假设PWM周期为1000个计数,在计数到500时触发ADC
timer_channel_output_pulse_value_config(TIMER0, TIMER_CH_0, 500);

这里有个细节:采样时刻要避开死区时间。死区时间内上下桥臂都关断,电流不流经采样电阻,这时候采样就是错的。我一般把采样点设在死区结束后的1~2μs。

3.8 总结一下

双电阻和三电阻没有绝对的好坏,关键看你的应用场景。低成本、小体积选双电阻;高性能、高可靠性选三电阻。运放和采样电阻的选型,别只看价格,要关注失调、温漂、带宽这些关键指标。PCB布局上,差分走线、地线分离、避开干扰源,这三条做到了,采样信号基本就稳了。