基于ADS1298的心电图仪

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/k331922164/article/details/80332005

一、前言。

在医疗领域常常使用的心电图仪并不是很复杂的仪器。其原理跟示波器非常相似,只不过,心电图仪测量的是低频小信号。

心电信号(也叫ECG信号)的幅值一般在0.05mV~4mV之间,要求分辨力至少为0.1mV,其频率在0.05~100Hz之间,主要的频率成份集中在5~20Hz之间。

一般的示波器垂直刻度最小为10mV/div,分辨力约为0.4mV。其次,把探头接在左右手,在示波器上只会观察到50Hz的工频干扰。所以,示波器并不适合测量心电信号。

制作心电图仪,可以使用多级放大,再配合低精度的ADC来达到采样的要求。但是这种方案比较烦琐,而且使用的元器件太多,不利于产品的小型化。

二、方案。

本文是采用TI的ADS1298,一块芯片集成了EMI抑制器、PGA、高精度24位ADC、高精度内部基准源、SPI接口。其方案如下图所示。

该方案有以下特点:

1、模拟电源和数字电源独立供电,模拟地和数字地通过0R电阻隔离,可以大大减少ECG前端采集的干扰。

2、模拟电源用干电源供电,没有50Hz工频干扰,信噪比非常高,ADS1298输入短路噪声均值约为250uV,输入引起噪声约为4uVpp。

3、选用STM32单片机,可以利用ST官方提供的驱动库,大大提高了开发效率。

4、LDO选用TPS73201MDBVREP,其差压非常低,在250mA满载的情况下只有40mV差压,其静态电流达到uA级,可以让干电源使用更长的时间。

5、使用USB转TTL电平的串口线,让STM32和PC机通信,成本低,又能达到通信速率的要求。

6、使用ADS1298的集成方案,大大缩小的产品的体积,让产品更便携。

三、实物图。

实物如下图所示。

四、导联的连接方式

五、导联与ADS1298的ADC通道连接,如下图所示。

六、硬件调试。

硬件设计部分遇到LDO啸叫的问题。

C67设定为0.1uF,发现LDO啸叫,将其改为47pF即可。

七、ADS1298的读写操作。

ADS1298有连续采样和突发采样两种工作方式,本文采样突发采样。

STM32通过SPI接口从ADS1298获取3个状态寄存器和8个通道的数据,其时序图如下图所示。

ADS1298读写寄存器时,操作码1(OPCODE1)是0x20加上要读写的寄存器地址,操作码2(OPCODE2)是要读写的字节数-1。

假设只读ID一个寄存器,操作码1只需要发送(0x20 | 0x00),0x00是ID号的寄存器地址,而操作码2只需要发送0x00,这里读一个字节,1-1=0。代码如下所图所示,cmd可以是任意寄存器地址,这里只能读一个字节。

而写操作与读操作相似,这里不再赘述。

八、ADS1298内部寄存器的设置,可以参考下图。

其中CH1SET到CH8SET,要设为0x00,才是采集外部的ECG信号。

八、上位机。

利用上位机采集到的心电信号,如下图所示,存在基线漂移。

增加了中值滤波后,修正了基线,如下图所示。

九、温度补偿。

可以利用上图的温度曲线,做折线法来补偿ADC的参考源。

十、注意事项。

1、导联必须连接正确,否则波形有异常。

2、增加右腿驱动,可以抵消人体的共模干扰,否则难以观察到心电信号。

3、芯片虚焊,可能导致采集到的数据异常。

4、先采集ADS1298内部的测试信号,如果没问题,再去采集外部的心电信号。

5、可以先用电位器接到ADS1298的各个ADC通道,调整电位器,观察采集到的数据是否正确。

6、ADS1298采集到的数据,是以二进制补码的形式存储,需要转成原码,再计算电压值。

7、去耦电容,建议使用NPO或C0G材质的电容,可以减少干扰,提高系统的稳定性。

8、ADS1298的SPI接口,CPOL=0,CPHA=1,编写单片机代码时,需要特别注意。

9、配置好ADS1298,在24号引脚才会出现2.4V的参考电压,否则不出现。

10、ADS1298的通道悬空时,采集到的电压为Vref,因为其差分输入的正端有上拉电阻,而负端有下拉电阻。

11、右腿驱动,可以使用内部的参考源。

12、可以通过光耦再配合STM32内部的ADC来获取干电源的电压,从而得知其电量是否充足。

13、ADS1298虚焊或外部晶振虚焊时,测到37号引脚CLK,电压为2.3V,正常工作时,电压为VDD的一半(即1.6V),这里的VDD为3.3V。

14、ADS1298的START、RESET操作,可以通过SPI读写寄存器来完成,也可以通过拉引脚电平来完成(其作用没有区别),这里START是拉引脚电平,而RESET是读写寄存器。

15、ADS1298复位时间建议设置大一些,这里为1.5秒。

16、静坐也是可以测到心电图,但是建议平躺着测。

十一、其它问题。

1、怎样做12导联?

标准I是可以通过计算得到的。

由上图所示(参考标准 YY 1139-2013)。II-III=(F-R)-(F-L)=L-R=I。 而aVR,aVL,aVF均可以计算得到。

也就是说只要用一片ADS1298采样v1~v6,II,III,这8路,可以满足12导联的要求。

而12导联只有10根信号线,分别是v1~v6,左手、右手、左腿、右腿。

十二、参考资料

ADS1298芯片手册

ADS1298评估板手册

ADS1298评估板固件和上位机源码(固件为DSP的C5509,上位机为LabView)

STM32的参考代码

ECG-kit的MATLAB源码

分析心律不齐的MATLAB源码

PhysioBank数据库

标准 YY 1139-2013

猜你喜欢

转载自blog.csdn.net/k331922164/article/details/80332005