医工互联

 找回密码
 注册[Register]

手机动态码快速登录

手机号快速登录

微信登录

微信扫一扫,快速登录

QQ登录

只需一步,快速开始

查看: 189|回复: 0
收起左侧

基于ADS1298的心电图仪

[复制链接]

  在线 

发表于 2023-8-4 12:56:39 来自手机 | 显示全部楼层 |阅读模式 <
一、前言。
在医疗领域常常使用的心电图仪并不是很复杂的仪器。其原理跟示波器非常相似,只不过,心电图仪测量的是低频小信号。
心电信号(也叫ECG信号)的幅值一般在0.05mV~4mV之间,要求分辨力至少为0.1mV,其频率在0.05~100Hz之间,主要的频率成份集中在5~20Hz之间。
一般的示波器垂直刻度最小为10mV/div,分辨力约为0.4mV。其次,把探头接在左右手,在示波器上只会观察到50/60Hz的工频干扰。所以,示波器并不适合测量心电信号。
制作心电图仪,可以使用多级放大,再配合低精度的ADC来达到采样的要求。但是这种方案元器件太多,不利于产品的小型化。
二、方案。
本文是采用TI的ADS1298,一块芯片集成了EMI抑制器、PGA、高精度24位ADC、内部高精度基准源、SPI接口。其方案如下图所示。
1.jpeg

该方案有以下特点:
1、模拟电源和数字电源独立供电,模拟地和数字地通过0R电阻隔离,可以大大减少ECG前端采集的干扰。
2、模拟电源用干电池或锂电池供电,信噪比非常高,ADS1298输入短路噪声均值约为250uV,输入引起噪声约为4uVpp。
3、选用STM32单片机,可以利用ST官方提供的驱动库,大大提高了开发效率。
4、LDO选用TPS73201MDBVREP,其差压非常低,在250mA满载的情况下只有40mV差压,其静态电流达到uA级,可以让干电源使用更长的时间。
5、使用CH340做USB转TTL串口,让STM32和PC机通信,成本低,又能达到通信速率的要求。
6、使用ADS1298的集成方案,大大缩小的产品的体积,让产品更便携。
7、使用光耦做电量检测,把数字电源的干扰隔离开。
8、使用ESP8266做WIFI通信,体积小,成本低。
9、使用防水型DS18B20做体温计,体积小,接口简单。
三、实物图。
12导联心电图仪实物如下图所示。
2.jpeg

3.jpeg

四、导联的连接方式。
4.jpeg
5.jpeg
6.jpeg

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

肢体导联当中的I、II、III,只需要接其中两个即可,另外一个可以通过计算得到。
六、硬件调试。
硬件设计部分遇到LDO啸叫的问题。
8.jpeg

C67设定为0.1uF,发现LDO啸叫,将其去掉即可。
七、ADS1298的读写操作。
ADS1298有连续采样和突发采样两种工作方式,本文使用连续采样方式。
STM32通过SPI接口从ADS1298获取3个状态寄存器和8个通道的数据,其时序图如下图所示。
9.png

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

假设只读ID一个寄存器,操作码1只需要发送(0x20 | 0x00),0x00是ID号的寄存器地址,而操作码2只需要发送0x00,这里读一个字节,1-1=0。代码如下所图所示,cmd可以是任意寄存器地址,这里只能读一个字节。而写操作与读操作相似,这里不再赘述。
八、上位机。
利用上位机采集到的心电信号,如下图所示,存在基线漂移。aVF有明显的基线漂移现象,而其它导联则是超过了显示范围。
11.jpeg

增加了中值滤波后,修正了基线,如下图所示(测试对象1)。
12.png

如下图所示(测试对象2,只接了肢体导联)。
13.jpeg

如下图所示(测试对象3,只接了肢体导联)。
14.jpeg

如下图所示(测试对象1,坐着测,腿发麻,增加了检测导联脱落功能)。
15.png

通过算法能识别出R波,从而推算出RR间隔和心率,如下图所示。
16.png

九、温度补偿。
17.jpeg

可以利用上图的温度曲线,用曲线拟合来补偿ADC的参考源。
十、注意事项。
1、导联必须连接正确,否则波形有异常。
2、增加右腿驱动,可以抵消人体的共模干扰,否则难以观察到心电信号。
3、芯片虚焊,可能导致采集到的数据异常。
4、先采集ADS1298内部的测试信号,如果没问题,再去采集外部的心电信号。
5、ADS1298采集到的数据,是以二进制补码的形式存储,需要转成原码,再计算电压值。
6、去耦电容,建议使用NPO或C0G材质的电容,可以减少干扰,提高系统的稳定性。
7、ADS1298的SPI接口,CPOL=0,CPHA=1,编写单片机代码时,需要特别注意。
8、配置好ADS1298,在24号引脚才会出现2.4V的参考电压,否则不出现。
9、ADS1298的通道悬空时,采集到的电压为Vref,因为其差分输入的正端有上拉电阻,而负端有下拉电阻。
10、右腿驱动,可以使用内部的参考源。
11、ADS1298虚焊或外部晶振虚焊时,测到37号引脚CLK,电压为2.3V,正常工作时,电压为VDD的一半(即1.6V),这里的VDD为3.3V。
12、ADS1298的START、RESET操作,可以通过SPI读写寄存器来完成,也可以通过拉引脚电平来完成(其作用没有区别),这里START是拉引脚电平,而RESET是读写寄存器。
13、ADS1298复位时间为2^18次方*clk周期,这里为50us。
14、静坐也是可以测到心电图,但是可能会出现少量噪声,建议平躺着测。
15、建议先在皮肤上涂一些酒精再接导联,被测的人体要放松,手脚不能用力或者移动,否则有可能测不出心电图,或者测出来幅度特别小。
十一、其它问题。
A、8通道的ADS1298怎样做12导联?
标准I是可以通过计算得到的。
18.jpeg

由上图所示(参考标准 YY 1139-2013)。II-III=(F-R)-(F-L)=L-R=I。
而aVR,aVL,aVF均可以由I、II、III计算得到。
aVR = -0.5 * ( I + II )
 aVL = I - 0.5 * II
aVF = II - 0.5 * I
也就是说只要用一片ADS1298采样v1~v6,(I、II、III的其中任意两路),这8路,可以满足12导联的要求。
而12导联只有10根信号线,分别是v1~v6,左手、右手、左腿、右腿。
B、导联的美标、欧标。
美标:RL,LL,RA,LA,V1,V2,V3,V4,V5,V6。
欧标:RF, F, R  ,L  ,C1,C2,C3,C4,C5,C6。
C、胸导联位置。
19.png

1、胸骨右缘第四肋间。
2、胸骨左缘第四肋间。
3、为2~4的中点。
4、左锁骨中线与第五肋间交点。
5、为4水平与左腋前线交点。
6、为4水平与左腋中线交点。
D、肢体导联与皮肤的连接。
20.jpeg

E、为什么没有50Hz陷波滤波器?
使用线性电源给心电图供电时,是接220V市电,再经过变压器和LDO,最终得到ADS1298的供电电压,这个电压包含了市电50/60Hz的工频干扰。工频干扰对于ADS1298是致命的,所以要增加50/60Hz陷波滤波器。我这里是使用电池供电,没有工频干扰,但是人体可能会处于市电的环境中,也会有工频干扰。在硬件上增加陷波滤波器比较麻烦,所以需要在软件上增加50/60Hz陷波滤波器。
F、为什么没有前端放大电路?
ADS1298已经集成了滤波、放大、ADC,不需要再增加放大电路。
G、动态心电图。
动态心电图又叫Holter,其导联的接法如下图所示。可用于经常活动的应用场景,或是给残疾人测心电图。
21.jpeg

22.jpeg

H、肌电图仪。
请参考本博客的《基于ADS1298的肌电图仪》。
十二、演示视频。
ADS1298心电图视频_哔哩哔哩_bilibili
十三、参考资料。
ADS1298芯片手册
PhysioBank数据库
标准 YY 1139-2013
医疗器械指令与认证程序
回复

使用道具 举报

提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!
您需要登录后才可以回帖 登录 | 注册[Register] 手机动态码快速登录 微信登录

本版积分规则

发布主题 快速回复 收藏帖子 返回列表 客服中心 搜索
简体中文 繁體中文 English 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

QQ|RSS订阅|小黑屋|处罚记录|手机版|联系我们|Archiver|医工互联 |粤ICP备2021178090号 |网站地图

GMT+8, 2024-11-25 02:08 , Processed in 0.290799 second(s), 65 queries .

Powered by Discuz!

Copyright © 2001-2023, Discuz! Team.

快速回复 返回顶部 返回列表