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Ω级) | 中等 |
| 适用场景 | 低侧/高侧电流检测 | 低侧电流检测 |
| 成本 | 稍高 | 低 |
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
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网络实现。
我常用的参数:
// 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
3.3.2 电平转换的几种方式
| 方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 电阻分压 | 简单、低成本 | 精度差、受温度影响 | 对精度要求不高的场合 |
| 运放加法器 | 精度高、可调 | 需要额外运放 | 高精度电流检测 |
| 专用电平转换芯片 | 集成度高、性能好 | 成本高 | 高端驱动器 |
我个人偏爱运放加法器方案。一个运放搞定放大+偏置+滤波,电路简洁,调试也方便。
3.4 ADC采样接口:最后一步也不能马虎
信号调理好了,送到ADC引脚。但这里还有几个坑要小心。
3.4.1 输入阻抗匹配
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余量)
3.6 本章知识体系
下面这张图把信号调理与滤波的核心逻辑串起来了,你可以对照着回顾一下:
信号调理这个环节,说难不难,说简单也不简单。关键是把每个细节都做到位——运放选型、增益计算、滤波器设计、偏置精度、ADC匹配,环环相扣。任何一个环节出问题,过流保护都可能误动作或者反应迟钝。