微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 请教ADS1198/ADS1298设计12导心电信号采集问题?

请教ADS1198/ADS1298设计12导心电信号采集问题?

时间:10-02 整理:3721RD 点击:

请教TI工程师,我正在使用ADS1198设计12导的心电检测仪,原理图根据sbau180.pdf设计,模拟电源和数字电源都是采用3.3V单电源供电,中间用磁珠联通.目前程序已经完成,用心电模拟仪可以采集出很漂亮的8路心电信号,并且各路信号基线保持一致,可是在采集人体信号时,人体心电信号也能采集出来,但8路信号的各自基线都不同,各导联基线相差数值最大在1000(AD采集后的数值)左右,我感觉可能是各路的共模信号转换成差模了!但不知道该如何解决!已经调试半个月了实在是解决不了这个问题,以下附上我的ADS1198的初始化程序.

void ADS1198_Init(void)
{
     uchar d[8];
     P2DIR |= 0x60;                                        // ads1198 RST,READY管脚输出
     P3DIR |= 0x01;                                        // ADS1198 CS 管脚输出
     ADS1198_CS0;                                          // 选中ADS1198
     ADS1198_PWDN1;                                        // 禁止进入低功耗模式
     ADS1198_START0;                                       // 禁止采集
     ADS1198_RST1;                                         // 复位置高
     delayMS(1000);                                        // 延时1S
     ADS1198_RST0;                                         // 复位1198
     delayMS(100);                                         // 延时100MS   
     ADS1198_RST1;                                         // 复位清除
     delayMS(1);
     ADS1198_Send_CMD_One(SDATAC);                         // 发送停止命令
     ADS1198_Recive_Data(0x20+Addr_ID,1,d);                // 读ADS1198 ID号
     if(d[0]==0xB6)                                        // 判断是否为ADS1198 ID
     {
         d[0] = 0xCC;                                      // 内部参考+2.4V+RLDREF(AVDD-AVSS)/2+RLD buffer允许+RLD检测允许
         ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG3,1,d);     // 配置寄存器
         d[0] = 0x05;                                      // Multiple readback+250SPS
         ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG1,1,d);     // 配置寄存器
         d[0] = 0x00;                                      // 外部测试信号+1mV幅值+FCLK/2.048M频率
         ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG2,1,d);     // 配置寄存器
         d[0] = 0x33;                                      // (7.5%/92.5%)+Pull-up/pull-down mode+DC lead-off detection turned on
         ADS1198_Send_CMD_Muti(0x40+Addr_LOFF,1,d);
         //d[0]=0x00;d[1]=0x00;d[2]=0x13;d[3]=0x13;d[4]=0x13;d[5]=0x13;d[6]=0x13;d[7]=0x13;// 12倍增益+正常导联输入
         d[0]=0x60;d[1]=0x60;d[2]=0x60;d[3]=0x60;d[4]=0x60;d[5]=0x60;d[6]=0x60;d[7]=0x60;  // 12倍增益
         ADS1198_Send_CMD_Muti(0x40+Addr_CH1SET,8,d);
         d[0] = 0x0ff;d[1] = 0x03;                          // RLD1P,RLD1N,RLD2N对应R,L,F,为右腿驱动源
         ADS1198_Send_CMD_Muti(0x40+Addr_RLD_SENSP,2,d);   // 配置寄存器
         d[0] = 0x00;d[1] = 0x00;                          // 8个通道全部检测导联脱落
         ADS1198_Send_CMD_Muti(0x40+Addr_LOFF_SENSP,2,d);  // 配置寄存器
         d[0] = 0x00;                                      // 通道1,通道2作为起搏检测通道,开启起搏检测缓冲器
         ADS1198_Send_CMD_Muti(0x40+Addr_PACE,1,d);        // 配置寄存器
         d[0] = 0x02;                                      // 持续转换模式+Lead-off comparators enabled
         ADS1198_Send_CMD_Muti(0x40+Addr_CONFIG4,1,d);
         d[0] = 0x08;d[1] = 0xCB;                          // power on WCTA+WCTB+WCTC,RLD1P,RLD1N,RLD2N为威尔逊中心信号源
         ADS1198_Send_CMD_Muti(0x40+Addr_WCT1,2,d);  
         ADS1198_Send_CMD_One(RDATAC);                     // 连续读命令
         ADS1198_START1;                                   // 开始数据采集
     }

 

你好! 心电模拟器的输出点和电极属于金属连接,所以不同的连接点几乎没有差异。但是电极和人体皮肤的连接就会差异很大,不管是同一个人的不同部位的皮肤,还是几乎同一块皮肤,因为连接的紧密程度以及扭动成形都会影响其通路阻抗。所以DC耦合,差分输入后,得到的值会有差别。如果不是基线飘移,可以用高通滤波器去除offset。

谢谢您的回复,我这就搭个高通滤波器试试,另外还有个问题一直困惑我,RLD驱动的负反馈电阻和电容该如何确定?有没有这方面的什么资料?我刚搞医疗,对RLD这地方一直吃不准!我的邮箱是53214825@qq.com,谢谢!

Hi zuolin liang:

你好!关于右脚驱动,ti有一篇文档叙述里了工作原理,以下是文档链接:

www.ti.com/.../sbaa188.pdf

极化电压引起的基线偏移,行业标准是能抗正负300mV的极化电压,前端放大一定不能太高,否则ADC很容易饱和,后端用数字滤波器过高通,这样基线就一致了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top