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.

[参考译文] ADS1298:运行测试信号并使用2个电极测量心率

Guru**** 2551110 points
Other Parts Discussed in Thread: ADS1298, ADS1291, ADS1292, ADS1296, ADS1294

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/597384/ads1298-run-test-signal-and-measure-heart-rate-using-2-electrodes

部件号:ADS1298
线程中讨论的其他部件: ADS1291ADS1292ADS1296ADS1294

我正在尝试与ADS1298通信。

首先,我发送了SDATAC

接下来,我阅读了ChipID并获得了正确的值。

之后,我根据数据表第85页编写并阅读了配置,因此我想使用内部参考,我将CLKSEL设置为高,然后写下:

WREG CONFIIG3 0xC0
WREG CONFIGU1 0x86
WREG CONFIIG2 0x00

//我有8个通道,并且全部设置为1 个WREG CHnSET 0x01

是时候将起始引脚设置为高并发送RDATAC了 
我对数据表中的此注释有点困惑查找DRDY并发布24 + n * 24 SCLK 

我是否需要在阅读前跳过24次,或者我必须读24+8*24=216次?

所以,我捕捉了我的信号并得到了这个图像

我使用从串行获取事件的处理绘制此图(我将DOUT数据输入UART)

它在平方信号上看起来有点相似,但不确定。 如果我收到的事件表明我的DRDY已更改,我是否需要在读取转换的数据之前发送SDATAC? 我应该将起始针保持在高位多长时间? 每次调用RDATAC时,我都必须将起始针脚设置为高电平?

第二个问题,我想尝试使用2个电极获得心率,我是否需要通过电阻器将RLDINV连接到每个电极?

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

    您好Ivan:

    流程应如下所示:

    发送SDATAC;
    写入寄存器;
    发送RDATAC;
    发送启动或拉动启动引脚高;
    
    while (1){
    	IF (DRDY == 0){
    		Pull CS low;
    		Toggle SCLK 216 times;
    		Pull CS high;
    		执行您需要对数据执行的操作
    	;}
    } 

    所以你看到你实际上只需要发送RDATAC,从一开始就开始,然后你只需要等待DRDY转换为低值来收集数据。 这是您正在做的吗?

    另外,如果您只想进行单导联心电图,您是否考虑过使用ADS1291? 您需要偏置输入,因此如果您只计划使用2个电极,则应通过大电阻器将RLDOUT连接到输入引脚以偏置它们。 如果您计划创建另一个主板,请随时将您的原理图发送给我,以供查看。  

    此致,

    Brian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这意味着我必须接收27个字节(216/8),我配置了如上所示的寄存器,并在我的DRDY切换为低时读取前27个字节(根据数据表,这一行在我读取DOUT时长时间发出为低),下一个是

    发送SDATAC
    已重新配置寄存器CONFIIG2和每个通道(参见第85页)
    发送RDATAC

    然后我将阅读这些值。
    我预期为27字节(前3个是标头,每个通道3个字节)

    UINT8_t in[27]={0x00}
    UINT8_t输出[27];
    ...
    对于(int i=0;i< 27;i++)

    out [i]= readMISO (in [i]);
    }

    但我捕获了所有信道的图像,我猜我需要捕获每个信道的数据(我需要通过每个信道的串行3字节发送),对吗?

    我想将ADS1298用于两个目标:测量心率和测量EMG

    我计划使用MUX在心率电极和EMG电极之间切换,是否可以使用ADS1298而不是ads1291
    可能不使用2个导联电极(因为我不想将RLDOUT与输入连接),我可以使用3个电极吗?

    INP,INN和RLDOUT作为参考? 或者,我在ADS1298的心率中应使用的最小电极数是多少?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ivan:

    为什么需要更改每个样品之间的CONFIIG2和通道寄存器? 您是否可以在开始时将其配置为所需的设置,然后仅在之后捕获数据?

    如果您只需要测量2个信号,我建议使用ADS1292,它类似于ADS1291,但具有2个通道。 无需使用mux -该设备具有2个同时采样通道。 每次发送DRDY信号时,两个通道的转换结果都将显示在输出数据中。

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

    您好,Brian,感谢您的耐心!

    当然我可以,但我想模拟测试信号,数据表建议使用此设置

    当我发送RDATAC时,我应该重新配置CONFIIG2和信道以获得方波信号,以确保一切正常

    我记得您已经推荐我尝试ads1292,我发现它很合适,但我正在寻找一种适合小型电路板的解决方案,如果像ADS1298这样的芯片能够测量肌电图(想要测量肌肉)和心率,那将是完美的。 不幸的是,ads1292只有2个通道,我需要知道8个肌肉点的潜力。 板上有2个芯片是非常不舒服的。

    我发现我可以将2个ADS1298电极用于HR,但我不明白如何将RLD电极放在腿部。 我想我需要其他与高电平绑定的电极,我是否正确,或者我是否可以为此目的通过编程方式禁用电极?

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

    捕获测试信号之前,无需执行输入短路测试。 此外,应重复多次"查找DRDY并发出24 + n x 24 SCLKs"部分。 收集数据时,需要收集多个点。 正确配置设备后,您只需等待DRDY,然后切换SCLK,收集数据,然后再次等待DRDY。 每次收集单个数据点时,无需重新配置设备。

    我不知道您必须收集超过一个渠道的EMG数据。 您需要多少个渠道? 我们有1,2,4,6和8通道版本的这些设备。 它们分别是ADS1291,ADS1292,ADS1294,ADS1296和ADS1298。

    RL电极通常是一个专用电极,而不是您用于测量和驱动的另一个电极。 您计划将电极连接到何处进行心率测量?

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

    您好,Brian!

    是的,我知道在捕获真实信号时不需要进行简短测试,只是为了了解主板工作良好。 当我配置了用于测试的寄存器时,我预计会出现方波。 我附上了我的数据图片(DRDY变低时从DOUT获得的数据)这张图片显示了不可预测的信号行为。 我是否应该拆分每个通道的数据? 例如,我得到了27个字节,其中3个是某个标头,接下来的24个字节是数据。 如果我期望8个输入中的每一个都有数据,那么这24个字节是否包含所有8个输入的数据(通道3个字节)?

    很抱歉让你感到困惑,我对我的想法描述有点错误。 主要目标是让运行中的EMG系统使用全部8个信道(老实说,我需要16个信道,将来我将使用2个ADS1298)。 我还了解到该芯片适合心电图测量。 我设定了第二个目标,增加了一个可能性,把这个芯片也用作心率监测器。 例如,在主环路中,我读取所有8个通道的EMG信号。 我每n分钟停止一次转换,重新配置寄存器并读取心率。 之后我再次停止,并测量EMG。

    我正在寻找测量最少电极的心率的可能性,理想情况下,它会使用2个电极来测量。 我可以在两种情况下使用1 INPP和1 INPN,EMG和心率,并在需要时在它们之间切换。

    我计划将电极放在胸部。

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

    您好,

    首先,您需要始终读取所有字节。 对于ADS1298,只要从DRDY获得信号,就必须读取27字节(如果数据速率低于32kSPS,请参阅数据表:回读长度的第53页)。

    关于EMG和ECG,实际上我不知道你停止EMG和测量心率是什么意思。 如果在您的应用中测量EMG应该是实时的,您实际上没有时间这样做。 心率通常以帧的形式测量。 所以它不是一个样品。 您可能需要测量心电图30秒,例如计算心率。 也许也值得看看芯片的瞬时时间(参见数据表的表12)。 此外,测量EMG和ECG的配置有哪些不同? 它是否超过数据速率? 我相信不会

    下面是我更详细的想法。 您可以用高数据速率测量来自胸部的信号(任何信号),这样它也可以包含EMG。 然后,该信号包含ECG和EMG (甚至包括一些其他信号)。 它们只是在带宽方面有所不同。 因此,您可以使用低通滤波器(例如,70Hz)过滤测量的信号,以获取ECG,提取R峰,然后计算心率。 并应用另一个滤波器(根据感兴趣的EMG带宽可能更复杂),从同一信号中删除ECG以获取EMG。 基本上,当您测量生理信号时,您可以从体内的所有电源中找到脚印。 例如,有时,即使在EEG中,您也会从心脏活动中看到R峰。 那么为什么要从"EMG测量"切换到"心率测量"?

    我会在测量一些信号和离线后做所有这些事情。 测量所需电极位置的一些信号,记录这些信号,例如将其传输到MATLAB。 设计您的信号处理管道,并最终将其转换为适合您的MCU的任何系统。 这里有许多问题需要考虑,例如,时间问题,因为数据速率很高,而且我们所讨论的信号处理在计算上并不便宜。

    关于RLD,我想说您不需要它来计算心率。 尽管您可能会发现它对EMG测量很有帮助。 当然,您应该检查测量结果,因为有许多因素会影响ECG信号的质量,从而影响R峰检测的准确性,最后影响心率估计的准确性。 此外,对于RLD,您还需要一个电极(至少三个电极)

    希望这有所帮助

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

    希望Vala的评论对您的系统可以使用的算法有帮助。 我不是算法专家,所以我只能评论如何使用ADS1298。

    是的,数据需要按信道拆分。 当您获得数据时,将如下所示:
    3字节状态|3字节CH1数据|3字节CH2数据|3字节CH3数据|3字节CH4数据|3字节CH5数据|3字节CH6数据|3字节CH7数据|3字节CH8数据

    此数据仅为每个通道的一个示例。 要获取单个通道的数据,您需要实施一些逻辑来单独存储数据,并采用带符号的格式(因为如果MSB为1,则输出可以是负数)。

    由于测试信号的频率约为1 Hz,您需要收集约500个样本才能获得完整的测试信号。 然后,要仅绘制通道1的测试信号,例如,您需要获取与上述"3 bytes CH1 data"对应的500个通道1数据点系列,并根据时间绘制它们。 时间标度将为每个样本对应于1/500 Hz = 2 ms每个样本。 这是否合理?

    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Vala,Brian。 现在一切都很清楚了。 首先捕获ECG信号。 想要尝试通过编程方式捕捉它,因为我不想为DOUT的低通滤波器包括电阻器和电容器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ivan:

    只是想为您澄清几个要点。 当然,对于某些数字滤波器,您也可以使用模拟滤波器,但在您的情况下不能使用模拟滤波器。 有两个原因。 一个是在对模拟信号进行采样后,您需要同时获得ECG和EMG信号,如果您使用模拟滤波器对它们进行筛选,则不能同时使用它们。 另一个原因是,我想我们所讨论的过滤器不够简单,不能使用模拟组件来实现。

    另一点是,即使您想要使用模拟滤波器,也应将其放在模拟链中,并且在对模拟信号进行采样之前,不要使用数字信号DOUT。

    最后,我想你们知道,为了抗锯齿和保护病人,在AFE之前应该有一些模拟滤波器。

    Vala