第三节:纹波信号采集电路设计
好,咱们进入正题。纹波信号采集,说白了就是把电机转动时产生的微小电流波动给“抓”出来,然后送给ADC去读。这个环节要是没做好,后面算法再牛也白搭。我当年第一次做这个方案时,就吃过采样电阻选型的亏,今天咱们一个一个讲透。
3.1 电流采样电阻选型
采样电阻,就是串联在电机回路里,把电流信号转成电压信号的那个小东西。选它,主要看三个参数:阻值、功率、温漂。
阻值怎么定?
阻值太小,信号太弱,ADC都读不到。阻值太大,发热严重,还影响电机正常工作。我一般按这个经验公式来:
R_sense = V_sense_max / I_motor_max
其中V_sense_max通常取50mV~100mV。为什么是这个范围?因为大多数ADC的输入范围是0~3.3V或0~5V,而纹波信号本身只有几毫伏到几十毫伏,我们需要留够放大余量。
举个例子:车窗电机堵转电流约20A,我取V_sense_max=75mV,那么:
R_sense = 0.075V / 20A = 3.75mΩ
嗯,实际选3.9mΩ或4.7mΩ的贴片电阻就行,标准阻值好买。
功率要留余量
功率计算很简单:P = I² × R。还是上面那个例子,20A堵转时:
P = 20² × 0.0039 = 1.56W
但我建议选3W以上的电阻。为什么?因为堵转不是常态,但万一出现堵转,电阻不能烧。我见过有人用2W电阻,结果客户做耐久测试时直接冒烟了……
温漂,容易被忽略的坑
采样电阻的温漂直接影响测量精度。普通厚膜电阻温漂在±200ppm/℃左右,而精密合金电阻能做到±50ppm/℃甚至更低。车窗纹波检测对绝对精度要求不高,但纹波信号的相对变化很重要。我个人习惯用±75ppm/℃的合金电阻,性价比不错。
关键参数总结:
- 阻值:3.9mΩ ~ 10mΩ,根据电机峰值电流调整
- 功率:按堵转电流的1.5~2倍选型
- 温漂:≤ ±100ppm/℃
- 封装:2512或更大,利于散热
3.2 差分放大器设计
采样电阻两端的电压非常小,而且电机回路里共模电压很高(12V甚至更高)。直接用单端放大器?不行,共模干扰会淹掉信号。必须用差分放大器。
为什么用差分?
你想想看,电机正负极之间电压是12V,而采样电阻上的压降只有几十毫伏。如果不用差分,这12V共模电压直接进放大器,输出早就饱和了。差分放大器只放大差模信号,对共模信号有抑制能力。
电路结构
我常用的方案是:仪表放大器 + 后级运放。比如TI的INA240或ADI的AD8418,这些芯片内部已经集成了匹配电阻,CMRR(共模抑制比)能做到80dB以上。
如果成本敏感,也可以用分立元件搭:
运放:LMV358或MCP6002(轨到轨,单电源)
电阻:四个精密电阻,1%精度,阻值匹配是关键
这里有个坑:分立方案的CMRR完全取决于四个电阻的匹配度。我曾经用0.1%精度的电阻搭过,CMRR能做到60dB左右,够用。但如果你用1%的普通电阻,CMRR可能只有40dB,纹波信号会被共模噪声淹没。
我的建议: 量产项目直接用集成仪表放大器,省心。样机阶段可以用分立方案,但电阻必须配对。
增益怎么设?
增益取决于ADC的输入范围和采样电阻上的最大信号。假设ADC输入范围0~3.3V,采样电阻最大压降75mV,那么:
Gain = 3.3V / 0.075V ≈ 44倍
实际我取40倍,留一点余量。INA240的增益可以通过引脚配置,固定为20、50、100等档位,选50倍那档也行。
3.3 低通滤波器设计
差分放大器输出后,信号里还混着高频噪声——电机换向噪声、PWM开关噪声、环境辐射噪声。这些噪声频率通常在几十kHz到几MHz,而纹波信号的频率只有几十Hz到几百Hz(取决于电机转速)。所以,一个低通滤波器就能把它们分开。
截止频率怎么定?
车窗电机正常转速下,纹波频率大约在50Hz~200Hz。我一般把截止频率设在500Hz左右,这样既能保留纹波信号,又能滤掉高频噪声。
用一阶RC滤波器就够了:
f_c = 1 / (2π × R × C)
取R=10kΩ,C=33nF:
f_c = 1 / (2π × 10k × 33n) ≈ 482Hz
嗯,刚好。如果想更干净一点,可以用二阶有源滤波器,但车窗应用一阶已经够用。
注意: 滤波器会引入相位延迟。如果后续算法需要实时性很高(比如防夹响应时间<100ms),滤波器阶数不能太高,否则相位滞后会导致响应变慢。我一般控制在500Hz截止频率、一阶,延迟大约0.3ms,完全可以接受。
3.4 ADC接口保护电路
ADC的输入引脚很娇贵。过压、静电、浪涌,随便来一下就可能烧掉。保护电路不是可有可无,是必须的。
保护什么?
- 过压保护:电机反电动势或电源瞬态尖峰可能超过ADC的绝对最大额定值
- 静电放电(ESD):人手触摸接口时可能产生
- 过流保护:防止ADC输入引脚吸入过大电流
典型保护电路
我常用的结构是:串联电阻 + 钳位二极管 + 小电容。
信号输入 → 100Ω电阻 → 双向TVS管(5V) → 10nF电容 → ADC引脚
解释一下:
- 100Ω电阻:限流,防止过流损坏ADC。同时和后面的电容组成一个低通滤波,一举两得。
- 双向TVS管:钳位电压到5V以下,保护ADC输入。选5V的TVS,因为大多数ADC的输入范围是0~3.3V或0~5V。
- 10nF电容:滤除高频噪声,同时吸收ESD能量。
避坑指南: 我曾经在某个项目里偷懒,没加TVS管,只用了电阻和电容。结果有一次电机堵转时产生了反向尖峰电压,直接把ADC烧了。从那以后,TVS管成了我的标配,再也没省过。
ADC选型建议
车窗纹波检测对ADC的要求不高:
- 分辨率:10位或12位就够。纹波信号变化幅度大,不需要高精度。
- 采样率:1kHz以上。纹波频率最高200Hz,根据奈奎斯特定理,采样率至少400Hz。我习惯用1kHz,留余量。
- 输入范围:0~3.3V或0~5V,与放大器输出匹配。
常用的ADC有:STM32内置的12位ADC(够用)、外部ADC如ADS1115(16位,I2C接口)。我个人倾向用MCU内置ADC,省成本、省PCB面积。
小结
这一节的内容,说白了就是四个字:抓、放、滤、保。
- 抓:用采样电阻把电流信号转成电压信号
- 放:用差分放大器把微弱信号放大
- 滤:用低通滤波器去掉高频噪声
- 保:用保护电路防止ADC损坏
这四个环节环环相扣,哪个出问题,纹波信号都白搭。下一节咱们讲怎么用软件算法从这些信号里提取出车窗位置信息,那才是真正见功夫的地方。