电流采样与调理电路:三相电流采样方案与ADC触发

电流采样,是FOC算法里最基础也最要命的一环。你想想看,算法算得再漂亮,电流采回来是错的,那整个系统就是空中楼阁。我个人习惯把电流采样比作FOC的「眼睛」——眼睛花了,手脚再利索也没用。

今天咱们就聊聊三相电流采样那些事儿。单电阻、双电阻、三电阻,到底怎么选?运放调理电路怎么设计?采样时序和ADC触发又该怎么配合?嗯,一个一个来。

一、三相电流采样方案:单/双/三电阻

先说结论:三电阻最准,双电阻最常用,单电阻最省钱。但实际项目里,选哪个得看你的成本预算和性能要求。

1. 三电阻采样

三电阻方案,就是在电机三相的下桥臂各串一个采样电阻。三个电阻同时采样,理论上能同时得到三相电流。但实际中,我们只需要两相电流,第三相通过基尔霍夫定律算出来。

我在项目中遇到过一个问题:三电阻采样虽然准,但三个电阻的阻值和温漂必须严格匹配。有一次我偷懒用了不同批次的电阻,结果低速时电流波形明显畸变。后来全部换成0.1%精度的合金电阻,问题才解决。

优点:精度高,适合低速大扭矩场景
缺点:成本高,PCB面积大,三个电阻需要三个运放通道

2. 双电阻采样

双电阻方案,只采样两相电流,第三相通过计算得到。这是目前最主流的方案。为什么?因为大多数MCU的ADC只有两个采样保持器,双电阻刚好匹配。

但双电阻有个坑:当某一相的占空比接近0%或100%时,该相的采样窗口会变得非常窄。说白了,就是电流还没稳定,ADC就触发采样了,结果自然不准。

避坑指南:我曾经在双电阻方案里遇到过低速抖动问题。排查了两天才发现,是PWM占空比太小时,采样点落在了电流振荡区。后来我强制限制了最小占空比,并在软件里做了采样点偏移,问题才解决。

3. 单电阻采样

单电阻方案,只在直流母线上放一个采样电阻。通过在不同PWM状态下采样,重构出三相电流。这个方案成本最低,但算法最复杂。

说实话,单电阻方案我一般不建议新手用。为什么?因为它在某些扇区边界处,采样窗口会消失。你需要做复杂的「重构算法」和「移相处理」。我当年第一次做单电阻方案,调试了整整两周才跑通。

方案 成本 精度 复杂度 适用场景
三电阻 伺服、机器人
双电阻 通用变频器
单电阻 低成本风扇、泵

二、运放调理电路设计

采样电阻上的电压信号非常微弱,通常只有几十到几百毫伏。直接送给ADC?不行,噪声太大。必须经过运放调理。

运放电路的核心任务就两个:放大 + 偏置。放大是为了让信号匹配ADC的输入范围,偏置是为了把双极性电流信号变成单极性电压信号。

1. 典型电路结构

我常用的电路是:采样电阻 → 差分放大 → 二阶低通滤波 → ADC输入。差分放大能抑制共模噪声,低通滤波能滤除PWM开关噪声。

这里有个细节:运放的选型很关键。轨到轨输入输出是必须的,否则信号会削顶。另外,压摆率要够快,至少10V/μs以上。我踩过坑,用过一款压摆率只有3V/μs的运放,结果高频时信号严重失真。

个人经验:我习惯在运放输出端串联一个100Ω电阻,再并联一个10pF电容到地。这个小RC网络能有效抑制ADC采样时的电荷注入噪声。别小看这个细节,有时候它能救你一命。

2. 偏置电压设计

电流是双向的(正负),但ADC只能采0~3.3V。所以需要把电流信号抬升到1.65V中心点。常用的做法是用一个精密基准源产生1.65V,然后通过运放加法电路叠加。

嗯,这里要注意:基准源的噪声会直接耦合到电流信号上。我建议用低噪声的基准源,比如REF3033,或者直接用MCU内部的DAC输出作为偏置。

三、采样时序与ADC触发

采样时序,是FOC里最容易出问题的地方。你想想看,PWM开关频率20kHz,每个周期只有50μs。你要在这50μs里完成电流采样、ADC转换、FOC计算、PWM更新。时间非常紧张。

1. 采样点选择

电流采样必须在PWM的中间时刻进行。为什么?因为此时三相电流都处于稳定状态,没有开关噪声干扰。具体来说,就是在PWM计数值达到周期值的一半时触发ADC。

我见过很多新手把采样点放在PWM的起始或结束位置,结果采回来的电流全是毛刺。记住:采样点要避开开关动作时刻

2. ADC触发方式

我强烈建议使用硬件自动触发,而不是软件触发。为什么?因为软件触发有延迟,而且延迟不确定。硬件触发可以精确到纳秒级。

具体做法是:配置PWM定时器的比较寄存器,当计数值等于比较值时,自动触发ADC转换。这样采样点就固定在了PWM周期的中间位置。

// 以STM32为例,配置ADC触发
// 设置PWM定时器TIM1的TRGO事件
TIM1->CR2 |= TIM_CR2_MMS_1;  // 更新事件作为TRGO

// 配置ADC为外部触发
ADC1->CR2 |= ADC_CR2_EXTTRIG;
ADC1->CR2 |= ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1;  // TIM1 TRGO触发

3. 采样窗口与死区时间

双电阻方案里,采样窗口的宽度取决于PWM占空比。当占空比很小时,采样窗口可能只有几百纳秒。这时候ADC的采样时间必须足够短。

我一般把ADC采样时间设置为1.5个ADC时钟周期,转换时间设置为12.5个周期。这样总转换时间大约在1μs左右,能覆盖大多数采样窗口。

重要提醒:如果采样窗口小于ADC的最小采样时间,电流信号还没稳定就被采样了。这时候你会看到电流波形上有「台阶」或「毛刺」。解决办法是:要么限制最小占空比,要么切换到三电阻方案。

四、知识体系结构图

下面这张图,是我自己总结的电流采样知识体系。你可以把它当作一个检查清单,做项目时对照着看,不容易漏掉关键点。

电流采样与调理电路知识体系 采样方案 单电阻 双电阻 三电阻 调理电路 差分放大 低通滤波 偏置电路 采样时序 采样点选择 ADC触发 采样窗口 核心原则:精度、时序、成本三者平衡 关键参数速查 采样电阻:10~50mΩ 运放增益:10~50倍 ADC采样时间:>500ns 偏置电压:1.65V 采样频率:20kHz

五、总结

电流采样这件事,说难不难,说简单也不简单。我做了这么多年电机控制,最大的体会就是:采样电路决定了FOC的下限,算法决定了上限。电路设计不好,算法再牛也白搭。

最后送大家一句话:采样点选对,FOC成功一半。嗯,这句话是我自己总结的,但确实是大实话。