2、数据采集与传感器:心电传感器选型、AD转换原理、采样率与分辨率

好,咱们进入第二章。这一章聊的是整个系统的「触角」——传感器和数据采集。说白了,你算法再牛、界面再炫,原始信号要是脏的、丢的、失真的,后面全白搭。我当年第一个心电项目就吃过这个亏,后面细说。

2.1 心电传感器选型:别只看参数表

心电传感器,市面上主流就那几颗。我个人习惯把它们分成三类:

  • 模拟前端芯片:比如 AD8232、ADS1292R、MAX30003。这类芯片把仪表放大器、滤波、右腿驱动都集成好了,你外面加几个电容电阻就能用。
  • 分立方案:用运放自己搭。不推荐,除非你在做科研或者想折腾。
  • 模块化成品:比如 PulseSensor、AD8232 模块。适合快速原型验证,但别用在正式产品里。

选型时,我建议你重点关注三个指标:

指标说明我的经验值
共模抑制比 (CMRR)抑制工频干扰的能力至少 80dB,最好 100dB+
输入噪声决定了你能看到多微弱的信号低于 10μVpp 才算及格
输入偏置电流影响电极极化电压的耐受nA 级别即可

避坑指南:我曾经选了一颗号称「低功耗」的芯片,结果它的 CMRR 在低频段掉得厉害。50Hz 工频干扰直接淹没了 P 波。嗯,从那以后我选型必看 datasheet 里的 CMRR vs 频率曲线图。

2.2 AD转换原理:从模拟到数字的那一步

心电信号是连续的模拟量,但单片机只认 0 和 1。中间这个翻译官,就是 ADC(模数转换器)。

常见的 ADC 架构有几种:

  • 逐次逼近型 (SAR):速度快、精度适中。我大部分项目都用它。
  • Σ-Δ 型:精度极高,但速度慢。适合心电这种低频信号。
  • 双积分型:抗干扰好,但太慢。老古董了。

心电领域,我推荐 Σ-Δ 型 ADC。为什么?因为它内部有过采样和数字滤波,能帮你省掉一级模拟低通滤波器。ADS1292R 内部就是 Σ-Δ 架构,24 位分辨率,直接输出数字信号。

小技巧:如果你用 SAR 型 ADC,记得在输入端加一个抗混叠滤波器。不然高频噪声折叠到低频段,你会在心电波形上看到一些「幽灵」信号。我见过有人折腾了三天,最后发现是没加这个滤波器。

2.3 采样率:不是越高越好

采样率决定了你每秒采集多少个点。心电信号的主要能量集中在 0.05Hz ~ 100Hz 之间。根据奈奎斯特定理,采样率至少是最高频率的两倍,也就是 200Hz。

但实际中,我建议这样选:

  • 常规心电监测:250Hz ~ 500Hz。够用,数据量适中。
  • 心率变异性 (HRV) 分析:500Hz ~ 1000Hz。因为需要精确检测 R 波峰值位置。
  • 诊断级心电图:1000Hz 以上。医院里的设备通常跑这个。

你想想看,采样率太高会怎样?数据量暴增,存储和传输都扛不住。我有个学生做无线心电,采样率设到 2000Hz,蓝牙直接卡死。后来降到 500Hz,一切正常。

注意:采样率不是越高越好,够用就行。过高的采样率会引入更多高频噪声,而且你的 MCU 可能根本处理不过来。我曾经在 STM32F103 上跑 1000Hz 采样,结果 CPU 占用率飙到 80%,其他任务全被饿死了。

2.4 分辨率:看得清细节的关键

分辨率决定了 ADC 能区分的最小电压变化。公式很简单:

最小分辨率 = 参考电压 / (2^N)

其中 N 是 ADC 的位数。

举个例子:参考电压 3.3V,12 位 ADC:

3.3V / 4096 ≈ 0.8mV

心电信号的 R 波大约 1mV,P 波只有 0.1mV ~ 0.2mV。你想想看,0.8mV 的分辨率,P 波根本看不见。所以心电系统至少需要 16 位 ADC,推荐 24 位。

位数分辨率 (3.3V 参考)能否看清 P 波
10 位3.2mV❌ 完全不行
12 位0.8mV⚠️ 勉强看到 R 波
16 位50μV✅ 可以
24 位0.2μV✅ 绰绰有余

核心观点:分辨率决定了你的「视力」。16 位是底线,24 位是舒适区。别为了省几块钱选低分辨率 ADC,后面做信号处理时会哭的。

2.5 实际电路设计要点

纸上谈兵差不多了,咱们看看实际电路怎么搭。以 AD8232 为例,我给出一个最小系统配置:

// AD8232 典型配置
// 引脚连接:
// 1 - 右腿驱动输出 (RLD) → 电极
// 2 - 反相输入 (-IN) → 电极
// 3 - 同相输入 (+IN) → 电极
// 6 - 输出 (OUTPUT) → ADC 输入
// 7 - 参考电压 (REF) → 1/2 电源电压

// 外部元件:
// C1 = 10μF (去耦电容)
// R1 = 10kΩ (反馈电阻)
// C2 = 1μF (滤波电容)

这里有几个坑,我帮你列出来:

  • 电源去耦:每个电源引脚都要加 0.1μF + 10μF 电容。别偷懒,不然噪声会让你怀疑人生。
  • 走线布局:模拟信号线尽量短,远离数字信号线。我见过有人把 ADC 输入线和 SPI 时钟线并行走,结果采集到的全是时钟噪声。
  • 右腿驱动:一定要接。它能有效抑制共模干扰。不接的话,你摸一下电极,波形就飞了。

我的习惯:在 PCB 上预留一个测试点,直接引出 ADC 输入信号。调试时用示波器看这个点,能快速判断是前端电路问题还是后端处理问题。这招帮我省了无数排查时间。

2.6 本章小结

嗯,这一章内容不少。核心就三件事:

  1. 传感器选型:优先选集成模拟前端芯片,关注 CMRR 和噪声。
  2. ADC 配置:Σ-Δ 架构 + 16 位以上分辨率,采样率 250Hz ~ 500Hz 够用。
  3. 电路设计:注意电源去耦、走线隔离、右腿驱动。

下一章咱们聊信号处理——怎么把原始数据里的噪声滤掉,提取出干净的心电波形。到时候我会分享一个我常用的数字滤波器设计,保证让你眼前一亮。

公众号:蓝海资料掘金营,微信deep3321