This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1198:使用ADS1198收集的心电图信号中添加了哪些噪音以及如何消除这些噪音。

Guru**** 2580305 points
Other Parts Discussed in Thread: ADS1198

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/579559/ads1198-what-are-the-noises-added-in-ecg-signal-collected-using-ads1198-and-how-to-remove-them

部件号:ADS1198

 我已经开发了带有TI ADS 1198的面包板来收集心电图数据,在收集数据的同时,很少有噪声源与心电图信号重叠,我观察了MATLAB中的信号。 我已通过3.6 V电池供电,并且我已确保附近没有电器,从体到板的连接线正确,我了解如何将噪声信号添加到ECG信号,即使我已在无噪音环境中收集数据。  
 
有人能指导我如何在心电图上添加噪音信号吗?如果您能推荐更好的滤波器来消除噪音,我将非常感谢。

期待您的宝贵建议,提前感谢您的参与。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Pratik,

    电源干扰通过系统的输入连接到ECG测量系统是非常常见的。 这是因为人体和电极充当天线,传递来自顶灯,电机,开关等的信号

    ADS1198上的RLD放大器旨在为病人身上出现的共模(或几乎共模)信号提供负反馈。 这是为了部分抵消您所看到的相互影响。 有关右腿驾驶的应用说明 应有助于您的理解。

    除了RLD功能外,设计人员还经常在其处理器上实施数字凹口滤波器,以进一步降低特定频率下的噪音。

    此致,

    Brian Pisani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Pratik和Brain:

    我也在做同样的事,但我在Matlab遇到了一些问题。 如果你能给我一些建议,非常感谢!

    我正在研究一个与ECG相关的项目,将TI ADS1198与Arduino配合使用。 我成功地通过SPI总线写入/读取寄存器(例如获取ads1198的ID寄存器值182并将每个输入通道设置为正常电极)。

    我想通过串行comport向MATLAB显示频道,但我得到了类似于下图的奇怪波形。

    我只是首先显示5个通道,通道1,4,5是奇数的(但我确实在正常电极模式下设置了这个通道),通道2,3似乎是正确的吗?

    但不确定。 所以我很困惑为什么通道2,3似乎可以正常获取数据,但其他通道却不能。

    下面是我写入 ads1198 寄存器的设置,

    1.问: 此设置是否错误?

    由于我不太确定0x0D到0x19的函数,只需按照我在TI软件 ADS1198 演示套件中看到的寄存器映射表,它就可以看到所有通道波均正确。

    void adsNormalElectro()
    {
    ADC_wreg (0x01,0x04);//Config1 //0x0.45万SPS
    ADC_wreg (0x02,0x10);//Config2 //0x10
    ADC_wreg (0x03,0xDC);//Config3 //0xDC
    ADC_wreg (0x04, 0x03);//LoFF //0x03
    ADC_wreg (0x05,0x00);/CCH1SET//0x00
    ADC_wreg (0x06,0x00);
    ADC_wreg (0x07, 0x00);
    ADC_wreg (0x08,0x00);
    ADC_wreg (0x09,0x00);
    ADC_wreg (0x0A,0x00);
    ADC_wreg (0x0B,0x00);
    ADC_wreg (0x0C, 0x00);/CH8SET //0x00
    
    ADC_wreg (0x0D,0x00);//RLD_SENSP //0x00
    ADC_wreg (0x0E,0x00); //RLD_SENSN //0x00
    ADC_wreg (0x0F,0xFF);//LoFF_SENSP //0xFF
    ADC_wreg (0x10,0x02);//LoFF_SENSN //0x02
    ADC_wreg (0x11, 0x00);//LoFF_flip //0x00
    ADC_wreg (0x12,0x00);//LoFF_STATP //0x00
    ADC_wreg (0x13,0x00); //LoFF_statn //0x00
    ADC_wreg (0x14,0x00);//GPIO //0x00
    ADC_wreg (0x15,0x00);//PACE //0x00
    ADC_wreg (0x16,0x00);//resp. //0x00
    ADC_wreg (0x17,0x00);//CONFIIG4 //0x00
    ADC_wreg (0x18,0x00);//WCT1 //0x00
    ADC_wreg (0x19,0x00);//WCT2 //0x00
    } 

    我将ads1198置于RDATAC模式(0x10),并使用Agilent逻辑分析器检查其波形,似乎是正确的

    我确信我会将每个通道16位数据(2的补码二进制)转换为十进制值并在MATLAB中绘制。  

    我在Matlab中处理16位数据的方式

    s=serial ('COM9','bandrate',11.52万);% setup comport fopen(s);% Open comport
    t1=fread (s,1);//获取通道第一字节
    t2=fread (s,1);//获取通道第二字节
    ch_1=t1*256+t2;//将其转换为16bit change2dec=2sec_21
    ;dec_twin
    = 

    这是我在RDATAC模式下输入ads1198后发送每个字节的方式

    int adc_read_data(void)//函数读取5个数据通道
    {
    int i =0;
    digitalWrite (slaveSelectPin,low);
    //仅尝试读取一个通道。 3字节状态+ 2字节一个通道数据
    int numSerialBytes =13;//现在只需读取5个通道来检查
    unsigned char serialBytes[numSerialBytes];
    对于(i =0;i < numSerialBytes;+I)
    {
    serialBytes[i]= SPI.transfer(0);
    }
    delayMicroseconds(1);
    digitalWrite(slaveSelectPin,high );
    
    用于(I =3;I < numSerialBytes;+I)
    {
    serial.write(serialBytes[i]);//向MATLAB发送一个字节
    }
    

    2.Q:当DRDY引脚变低时,其时间是长还是短? cuz在逻辑分析器中,有时我看到DRDY引脚在较低的时间更长,但有时更短 (可能是个问题? 只是猜测)

     这是我使用的环境: ECG模拟器,D15电缆,60-80BPM,1mV

    是否有人可以指导我,我在获取此结果的数据时遇到了什么问题? 如何修复?  

    期待您的宝贵建议,提前感谢您的参与。

    最佳

    Frank | frank61.3055万@gmail.com