4. 电流采样与信号调理

ADC采样,说白了就是伺服系统感知世界的眼睛。电流多大、电压多高、位置反馈准不准,全看这一关过得硬不硬。我见过不少工程师,PID调得飞起,结果系统抖得像筛糠,最后发现是ADC采样出了问题。嗯,咱们今天就把这块彻底讲透。

核心认知:ADC采样质量直接决定电流环带宽和转矩控制精度。采样窗口差1个时钟周期,电流环响应可能差出20%。

4.1 ADC模块原理:C2000的采样心脏

C2000系列内置的ADC模块,本质上是一个逐次逼近型(SAR)转换器。我习惯把它理解成一个「电压天平」——逐位比较,从高位到低位,一步步逼近真实电压值。

关键参数你得记住:

参数 典型值(C2000) 影响
分辨率 12位 / 16位 12位对应4096个码值,16位对应65536个
转换速率 最高 3.46 MSPS(12位) 决定电流环采样频率上限
输入范围 0~3.3V(单端) 超出会损坏ADC或产生饱和失真
采样电容 约 1.6 pF 影响采样建立时间

你想想看,12位分辨率意味着3.3V被分成4096份,每份约0.8mV。对于电流采样来说,如果满量程对应50A,那每个码值大约对应12mA。这个精度够不够?说实话,对于大多数伺服应用,12位已经够用。但如果你做高精度力矩控制,16位模式会给你更细腻的手感。

我的习惯:在C2000上,我通常把ADC配置为16位模式,虽然转换速率会降到约1.1 MSPS,但噪声表现好很多。电流环采样频率10~20kHz完全够用,没必要追求极限速率。

4.2 单端与差分采样:选对路子

这个问题,我在项目里踩过坑。单端采样,信号线和地线之间测量,简单直接。但问题在于——地线噪声会直接串入测量结果。你想想,电机驱动板上的GND,开关管一开一关,地弹噪声能到几百毫伏。单端采样在这种环境下,信噪比惨不忍睹。

差分采样就不一样了。正负两根线,测量的是两者之差,共模噪声被完美抵消。我建议:电流采样必须用差分,电压采样看情况。

对比项 单端采样 差分采样
抗共模噪声 差 优秀
引脚数量 1个 2个
输入范围 0~3.3V -3.3V~+3.3V
适用场景 低噪声环境、电压检测 电机电流、高噪声环境
布线复杂度 低 中等(需等长走线)

我曾经在一个项目中,用单端采样测相电流,结果电流环一跑起来,波形上全是毛刺。换成差分采样后,毛刺直接消失。从那以后,我的伺服板子上,电流采样一律差分。

4.3 采样窗口与触发源:时机决定一切

ADC采样不是你想采就能采的。采样窗口——也就是采样电容充电的时间——必须足够长,否则电压还没建立稳定,转换结果就是错的。

采样窗口的计算公式:

采样窗口(时钟周期) ≥ (采样电容 × (源阻抗 + 开关阻抗) × ln(2^N)) / ADC时钟周期

其中N是分辨率位数。我一般留出余量,取计算值的1.5倍。比如12位模式下,算出来需要8个时钟周期,我就设成12个。稳一点,不吃亏。

触发源这块,C2000给了你很多选择:

  • 软件触发:写寄存器启动,适合调试
  • ePWM触发:最常用,PWM载波同步采样
  • 外部引脚触发:用于特殊同步需求
  • 定时器触发:固定频率采样

我个人习惯,电流环采样用ePWM触发。为什么?因为电流采样必须在PWM开关周期的特定时刻进行——通常是开关管导通中间时刻,避开开关噪声。ePWM模块可以精确产生这个触发信号,误差在纳秒级。

注意:采样窗口不能太长,否则会占用转换时间,降低采样率。也不能太短,否则建立时间不够。我见过有人把采样窗口设成2个时钟周期,结果转换出来的电流值忽大忽小,还以为是电机有问题。

4.4 过采样与均值滤波:用时间换精度

12位分辨率不够用怎么办?过采样了解一下。原理很简单:对同一个信号采多次,然后求平均。每过采样4次,等效分辨率提升1位。

公式:

等效分辨率 = 原始分辨率 + log2(过采样率) / 2

比如12位ADC,过采样16次:

等效分辨率 = 12 + log2(16) / 2 = 12 + 2 = 14位

但要注意,过采样不是万能的。它只能降低白噪声,对周期性噪声效果有限。而且会降低有效采样率——你采16次才得到一个有效值,采样率直接除以16。

均值滤波的实现代码:

// 过采样16次均值滤波
#define OVERSAMPLE_RATE 16

uint16_t oversample_filter(uint16_t *buffer) {
    uint32_t sum = 0;
    for(int i = 0; i < OVERSAMPLE_RATE; i++) {
        sum += buffer[i];
    }
    return (uint16_t)(sum / OVERSAMPLE_RATE);
}

我在项目中,电流环采样一般用过采样4次,等效13位,够用又不拖慢速度。位置环或者温度采样,过采样16次甚至32次,精度优先。

避坑指南:过采样之前,先确认噪声是白噪声。如果噪声主要来自PWM开关干扰(周期性),过采样效果很差。这时候应该先做硬件滤波,再考虑过采样。

4.5 电流/电压信号调理电路设计要点

ADC本身再牛,前端电路不行也是白搭。信号调理电路,就是把传感器信号「翻译」成ADC能接受的0~3.3V范围。

设计要点我总结成五条:

  1. 阻抗匹配:源阻抗要低,否则采样建立时间不够。我一般控制在100Ω以下。
  2. 电平移位:双极性信号(如交流电流)需要抬升到0~3.3V。常用运放加法电路。
  3. 抗混叠滤波:RC低通滤波,截止频率设在采样频率的1/2以下。我习惯用100Ω+10nF,截止约160kHz。
  4. 钳位保护:ADC输入引脚加肖特基二极管到3.3V和GND,防止过压烧毁。
  5. 差分转单端:如果传感器输出差分信号,用仪表放大器转换。

一个典型的电流采样电路结构:

电流传感器(霍尔/分流器)
    ↓ 差分信号
仪表放大器(如INA826)
    ↓ 单端信号
电平移位电路(+1.65V偏置)
    ↓ 0~3.3V
RC抗混叠滤波
    ↓
ADC输入引脚

我曾经在一个项目中,偷懒没加钳位保护,结果电机急停时反电动势把ADC烧了。从那以后,钳位二极管成了我板子上的标配,成本不到两毛钱,但能省下换芯片的几百块。

4.6 知识体系总览

下面这张图,把ADC采样与信号调理的完整链路画出来了。你可以把它当作设计时的检查清单。

ADC采样与信号调理知识体系 ADC采样与信号调理知识体系 电流/电压传感器 霍尔/分流器/分压 差分/单端输出 信号调理电路 电平移位+滤波 钳位保护+阻抗匹配 C2000 ADC模块(SAR架构) 采样窗口设置 触发源选择 分辨率/速率配置 单端/差分 过采样与均值滤波 数字校准与偏移补偿 电流环使用 设计原则:从传感器到ADC,每一级都要考虑噪声、阻抗、带宽和精度

这张图把整个链路串起来了。从传感器输出,到信号调理,再到ADC配置和后处理,每一步都有讲究。你设计的时候,可以拿这张图当checklist,逐级检查,基本不会漏掉关键点。

好了,ADC采样这块就聊到这儿。记住一句话:采样质量决定控制上限。硬件电路多花点心思,后面调参能省一半时间。