3. 信号调理与滤波:运放放大电路、低通滤波器设计、偏置与电平转换、ADC采样接口

电流信号从采样电阻上取下来,直接送给ADC?别这么干。我见过太多新手工程师这么搞,结果采样值跳得像心电图。信号调理,说白了就是把传感器信号“伺候”成ADC喜欢的样子。

这一节我们聊聊信号链上的几个关键环节:运放怎么选、滤波器怎么搭、偏置怎么加、ADC接口怎么匹配。嗯,都是实战中踩过坑才总结出来的东西。

3.1 运放放大电路:把微弱的电流信号抬起来

电机相电流经过采样电阻后,通常只有几十到几百毫伏。ADC的满量程一般是3.3V或5V,中间差了十几倍甚至几十倍。所以第一件事就是放大。

3.1.1 差分放大 vs 单端放大

电机驱动是个强噪声环境,共模电压跳来跳去。我个人习惯用差分放大结构,尤其是INA系列仪表放大器。为什么?因为共模抑制比(CMRR)高,能把电机PWM开关带来的共模干扰压下去。

参数 差分放大(仪表运放) 单端运放
CMRR 80~120 dB 60~80 dB
输入阻抗 高(MΩ级) 中等
适用场景 低侧/高侧电流检测 低侧电流检测
成本 稍高 低
我的习惯:低侧采样用单端运放就够了,比如LMV321。高侧采样必须用差分或仪表运放,否则共模电压会把你搞疯。

3.1.2 增益怎么定

增益不是越大越好。你想想看,如果增益太大,ADC满量程用不满,分辨率浪费;增益太小,信号又太弱,信噪比不够。

我一般这样算:

// 假设采样电阻 5mΩ,最大电流 30A
// 采样电压 = 0.005 * 30 = 0.15V
// ADC参考电压 3.3V,留20%余量
// 目标满量程电压 = 3.3 * 0.8 = 2.64V
// 所需增益 = 2.64 / 0.15 ≈ 17.6

// 取标准增益 20,用两个电阻搞定
// Rf = 20kΩ,Rg = 1kΩ
// 实际增益 = 1 + Rf/Rg = 21
注意:增益电阻要用1%精度或更高的。我曾经用5%的电阻,结果三相信号放大倍数不一致,过流保护阈值也跟着飘,排查了好久才发现是电阻精度的问题。

3.2 低通滤波器设计:把高频噪声滤干净

运放放大之后,信号里还混着PWM开关噪声、电机反电动势尖峰。这些高频分量如果不滤掉,ADC采样结果会乱跳,过流保护也会误触发。

3.2.1 一阶RC低通滤波器

最简单的方案,一个电阻加一个电容。截止频率公式:

fc = 1 / (2 * π * R * C)

// 举例:R = 1kΩ,C = 10nF
// fc = 1 / (2 * 3.14 * 1000 * 10e-9)
// fc ≈ 15.9 kHz

电机PWM频率通常是10~20kHz,我习惯把截止频率设在PWM频率的1/10左右,也就是1~2kHz。这样既能滤掉开关噪声,又不会把电流波形削得太厉害。

3.2.2 二阶有源低通滤波器

如果对滤波效果要求更高,可以用二阶有源滤波器。比如Sallen-Key结构,用运放加RC网络实现。

关键点:二阶滤波器的滚降特性是-40dB/dec,比一阶的-20dB/dec陡得多。对于过流保护这种需要快速响应的场景,我建议用二阶,因为可以在保证滤波效果的同时,把截止频率设得更高一些,减少信号延迟。

我常用的参数:

// Sallen-Key 低通滤波器
// 截止频率 fc = 2kHz
// 品质因数 Q = 0.707(巴特沃斯响应)

R1 = R2 = 10kΩ
C1 = 10nF
C2 = 4.7nF

// 实际 fc ≈ 1 / (2π * 10k * sqrt(10n * 4.7n))
// fc ≈ 2.1 kHz

3.3 偏置与电平转换:让信号进入ADC的“舒适区”

电机电流是双向的——正转时电流正向,反转时电流反向。但大多数ADC只能采0~Vref的正电压。所以需要把双极性信号搬移到单极性区间。

3.3.1 偏置电路设计

最简单的办法:在运放同相输入端加一个偏置电压。比如把-1.65V~+1.65V的信号偏置到0~3.3V。

// 偏置电压计算
// 原始信号范围:-1.65V ~ +1.65V
// 目标范围:0V ~ 3.3V
// 偏置电压 = 1.65V

// 实现方式:电阻分压 + 电压跟随器
// Vref = 3.3V
// R1 = R2 = 10kΩ
// Vbias = 3.3 * R2 / (R1 + R2) = 1.65V
避坑指南:偏置电压的精度直接影响零点。我曾经用普通电阻分压给运放提供偏置,结果温度一变化,零点就漂了。后来改用精密基准源(比如TL431)加运放跟随,稳得很。

3.3.2 电平转换的几种方式

方式 优点 缺点 适用场景
电阻分压 简单、低成本 精度差、受温度影响 对精度要求不高的场合
运放加法器 精度高、可调 需要额外运放 高精度电流检测
专用电平转换芯片 集成度高、性能好 成本高 高端驱动器

我个人偏爱运放加法器方案。一个运放搞定放大+偏置+滤波,电路简洁,调试也方便。

3.4 ADC采样接口:最后一步也不能马虎

信号调理好了,送到ADC引脚。但这里还有几个坑要小心。

3.4.1 输入阻抗匹配

ADC的采样电容在采样瞬间会从信号源抽取电荷。如果信号源输出阻抗太高,电容充不满,采样值就会偏小。

我曾经踩过的坑:用STM32的ADC采样电流信号,信号源阻抗约10kΩ,结果采样值比实际值低了5%。后来查手册才发现,ADC要求信号源阻抗小于3.3kΩ才能保证12位精度。解决办法是在ADC引脚前加一个运放缓冲器,输出阻抗降到几十欧姆。

3.4.2 采样保持时间

ADC采样需要时间。采样时间太短,电容充不满;太长,又会错过信号变化。

// 采样时间计算
// ADC采样电容:Csample = 10pF
// 信号源阻抗:Rs = 100Ω
// 采样开关电阻:Rsw = 1kΩ
// 总阻抗:Rtotal = Rs + Rsw = 1.1kΩ

// 时间常数:τ = Rtotal * Csample = 1.1k * 10p = 11ns
// 12位精度需要 8.5个τ
// 最小采样时间 = 8.5 * 11ns ≈ 94ns

// 实际设置采样时间时,我习惯留2~3倍余量
// 比如设置成 300ns 或 500ns

3.4.3 抗混叠滤波

ADC采样本身会产生混叠效应。如果信号中有高于奈奎斯特频率的分量,会折叠到低频段,造成虚假信号。

所以,在ADC之前一定要加抗混叠滤波器。其实前面设计的低通滤波器已经起到了这个作用。只要确保滤波器的截止频率低于采样频率的一半,混叠问题就解决了。

3.5 完整信号链设计示例

说了这么多,来个完整的例子吧。下面是我在一个48V电机驱动项目中用过的信号链:

信号链:采样电阻 → 差分运放(INA240) → 二阶低通滤波器 → 偏置电路 → ADC(STM32G4)

关键参数:
- 采样电阻:5mΩ
- INA240增益:20倍
- 低通滤波器截止频率:2kHz
- 偏置电压:1.65V
- ADC参考电压:3.3V
- ADC采样时间:500ns

信号范围:
- 最大电流:±30A
- 采样电压:±150mV
- 放大后:±3.0V
- 偏置后:0~3.0V(留0.3V余量)
经验之谈:这个信号链我用在好几个项目里,过流保护响应时间能做到10μs以内。关键是每个环节的延迟都要算清楚——运放带宽、滤波器群延迟、ADC采样时间,加起来就是总延迟。

3.6 本章知识体系

下面这张图把信号调理与滤波的核心逻辑串起来了,你可以对照着回顾一下:

信号调理与滤波知识体系 电流信号输入 运放放大电路 低通滤波器 偏置与电平转换 ADC采样接口 ADC采样值输出 核心原则: 1. 信号链总延迟 < 过流保护响应时间要求 2. 每个环节的噪声和误差要逐级控制,不能累积

信号调理这个环节,说难不难,说简单也不简单。关键是把每个细节都做到位——运放选型、增益计算、滤波器设计、偏置精度、ADC匹配,环环相扣。任何一个环节出问题,过流保护都可能误动作或者反应迟钝。