电流采样基础:单电阻、双电阻、三电阻采样原理对比,采样时刻与PWM同步

做FOC过流保护,第一步就是要把电流采准。你想想看,如果采回来的电流都是歪的,那后面的保护逻辑再漂亮也没用。今天我们就来聊聊电流采样的三种主流方案——单电阻、双电阻、三电阻,以及它们跟PWM怎么配合。

我个人习惯把电流采样比作「在高速公路上给飞驰的汽车拍照」。拍早了、拍晚了,或者快门速度不够,照片都是糊的。在电机控制里,这个「快门」就是ADC采样时刻,而「汽车」就是流过相线的电流。

一、三种采样拓扑,各有各的脾气

先看一张总览图,把三种方案的核心差异理清楚。

电流采样拓扑对比总览 单电阻采样 1个采样电阻(下桥臂公共端) 1路ADC + 1路运放 成本最低,PCB面积最小 需重构三相电流 低速/低调制区有盲区 双电阻采样 2个采样电阻(两相下桥臂) 2路ADC + 2路运放 成本适中,性能均衡 可直采两相电流 第三相通过KCL计算 三电阻采样 3个采样电阻(三相下桥臂) 3路ADC + 3路运放 成本最高,精度最好 三相电流独立直采 无重构盲区 核心对比维度:成本 · 精度 · 盲区 · 采样窗口 · 算法复杂度 单电阻 双电阻 三电阻 采样窗口窄,需精确对齐 窗口适中,两相独立 窗口最宽,三相独立 低速区需移相或补脉冲 低速区有轻微盲区 全速域无盲区 算法复杂,需状态机 算法简单,主流方案 算法最简单,但成本高

二、单电阻采样:省钱但费心

单电阻采样,说白了就是在直流母线的下桥臂公共端串一个采样电阻。只用一个电阻、一路运放、一路ADC,成本压到最低。很多小家电、玩具车、低成本风机都在用这个方案。

但便宜是有代价的。单电阻只能采到母线电流,而FOC需要三相电流。怎么办?靠重构。你得根据当前PWM状态,在特定时刻采样,然后通过算法把三相电流算出来。

核心难点:单电阻采样存在「不可观测区」。当调制比很低(比如电机刚启动)或者两相占空比非常接近时,采样窗口会变得极窄,甚至消失。这时候你采到的数据是错的。

我在项目中遇到过这个问题。有一次做一款低压风机,启动时电流波形乱跳,过流保护频繁误触发。查了两天才发现是单电阻在低调制区的采样窗口不够,ADC还没来得及稳定,PWM状态就变了。

我的经验:单电阻方案一定要做「移相处理」或「补脉冲」。简单说,就是在不可观测区人为调整PWM边沿,把采样窗口撑开。代价是会增加一点电流纹波,但总比保护乱跳强。

二、双电阻采样:性价比之王

双电阻采样,在两相下桥臂各放一个采样电阻。比如U相和V相各一个,W相通过KCL定律算出来:Iw = -(Iu + Iv)。

为什么说它是性价比之王?因为只比单电阻多一个电阻和一个运放,但采样质量提升了一大截。你直接采到了两相的真实电流,第三相算出来误差也不大。目前市面上大部分中低端伺服、无人机电调、电动工具都在用这个方案。

双电阻的采样时刻怎么选?我建议把ADC触发点放在PWM周期的中间点——也就是下桥臂导通的中点。这时候电流已经稳定,没有开关噪声干扰。

注意:双电阻在占空比接近0%或100%时,某一相的采样窗口也会变窄。比如U相占空比99%,下桥臂导通时间只有1%的周期,ADC根本来不及采。这时候需要切换到「单电阻模式」临时补采另一相。

我曾经在一个48V伺服项目里吃过这个亏。占空比跑到95%以上时,电流反馈突然跳变,速度环跟着振荡。后来加了「采样模式自适应切换」逻辑,在占空比超过85%时自动切到另一相采样,问题就解决了。

三、三电阻采样:精度天花板

三电阻采样,三相下桥臂各放一个采样电阻。三相电流独立直采,没有任何重构,没有任何盲区。精度最高,动态响应最快。

当然,代价也很明显:三个电阻、三路运放、三路ADC,成本直接翻倍。而且PCB上要布三对差分走线,布局稍有不慎就会引入串扰。

三电阻的采样时刻相对宽松。你可以在每相下桥臂导通的中点分别触发ADC,也可以用一个定时器同时触发三路采样。我个人习惯用后者——同时采样,然后做软件对齐,这样三相电流的相位差最小。

什么时候必须用三电阻?当你的系统对电流精度要求极高,或者运行在极低速、零速工况时。比如工业伺服的位置环、协作机器人的关节驱动、医疗手术机器人。这些场合,单电阻和双电阻的盲区是不可接受的。

四、采样时刻与PWM同步:成败在此一举

不管你用哪种拓扑,采样时刻的选择都是决定成败的关键。采早了,电流还没建立;采晚了,开关噪声已经灌进来了。

看下面这张时序图,你就明白了。

PWM周期与ADC采样时刻同步 PWM_U 导通 关断 PWM_V 导通 关断 PWM_W 导通 关断 ▲ ADC采样触发点 采样时刻选择原则 1. 避开开关边沿:PWM上升沿和下降沿附近有振铃,至少留1~2μs死区 2. 选在导通中点:此时电流已建立,且远离下一次开关动作 3. 三相同时采样:减少相位差,提高电流重构精度

具体怎么同步?我一般用MCU的定时器来触发ADC。比如STM32的HRTIM或高级定时器,可以配置在PWM计数值等于某个特定值时触发ADC注入组转换。这样硬件自动完成,不需要CPU干预。

避坑指南:我曾经在采样时刻上踩过一个坑——ADC采样保持时间设得太短。运放输出到ADC输入有RC滤波,如果采样时间不够,电容没充饱,采到的电压就偏低。后来我把采样时间从3个ADC时钟周期改到15个,电流精度从5%提升到1%以内。

五、三种方案怎么选?一张表说清楚

对比项 单电阻 双电阻 三电阻
采样电阻数量 1个 2个 3个
运放/ADC通道 1路 2路 3路
电流获取方式 重构(算法推算) 直采2相 + KCL 直采3相
低速/零速盲区 严重 轻微 无
采样窗口宽度 窄(需精确对齐) 中等 宽
算法复杂度 高(状态机+移相) 中 低
典型应用 小家电、玩具、低成本风机 无人机电调、电动工具、中低端伺服 工业伺服、协作机器人、医疗设备
BOM成本(相对) 1x 1.5x~2x 2.5x~3x

嗯,到这里你应该对三种采样方案有了清晰的认识。单电阻省钱但费心,双电阻均衡好用,三电阻精度最高。选哪个,取决于你的产品定位和成本预算。

但不管选哪个,采样时刻与PWM同步这件事,都是你必须亲自调通的。我建议你在开发板上先把双电阻调通,这是最通用的方案。等双电阻玩熟了,再根据项目需求去碰单电阻或三电阻。