0

我们正在做一个关于心电图信号提取的项目。我们得到了提取,它充满了噪声(50 hz)所以我们需要处理信号,我们建议通过 arduino 板处理它。我们需要使用 arduino 去噪.

我们如何使用 arduino 板进行心电图处理,哪个 arduino 板非常适合,成本更低,精度更高,而 arduino 应该很小?

4

2 回答 2

0

有芯片可以为你做到这一点。如 ADS1294 等。

此类芯片的典型之处在于它们是差分放大器,可消除常见的调制解调器噪声,例如 50Hz。而不是陷波滤波器。尽可能多的所需信号在 50Hz 范围内。ECG 示意图非常标准,因为它们放大了右臂和左臂之间的差异,其中左腿是共模参考。他们进一步将偏移量注入右腿,以防止普通调制解调器偏移量饱和。Elektor 杂志最近的 2013 年 7 月/8 月刊对他们的心电图板进行了透彻的解释。这些在网上还有其他来源。

于 2013-09-18T14:25:15.500 回答
0

您不一定需要硬件过滤器。软件过滤器可以正常工作。Pan Tompkins 算法中的低通/高通滤波器仅使用整数数学运算,因此不会占用大量资源。

要实时做 Pan Tompkins,需要同时存储 13 个点的输入历史和低通历史。存储1个高通历史记录。这 13 个点可以存储在一个数组中,但我发现循环缓冲区非常好。我使用了CircularBuffer库,但还有其他实现。这是过滤的相关代码:

CircularBuffer<int,33> inp;
CircularBuffer<int,33> lpfout;
int raw;
int filt; 

//preload buffers with zeros (this is pretty important)
for (int i = 0; i <= 32; i++) {
    //sig = analogRead(A0);
    inp.unshift(0);
    lpfout.unshift(0);
}

raw = analogRead(A0);
inp.unshift(raw);

//lowpass filter
filt = 2*lpfout[0] - lpfout[1] + inp[0] - 2*inp[6] + inp[12];
lpfout.unshift(filt);  // this becomes lpfout[0] for the next loop

//highpass filter
filt = hpfout1 - lpfout[0]/32 + lpfout[16] - lpfout[17] + lpfout[32]/32;
hpfout1 = filt;

//filt now holds the real time filtered signal

这段代码运行得很快。在最初的 Pan Tompkins 论文中,他们以 200 Hz 的频率对 ECG 进行采样,因此我将循环设置为通过串行端口以 200 Hz 的频率发送数据。我没有看到任何下降,所以 Arduino 跟上没有问题。

于 2021-07-01T16:25:39.000 回答