使用arduino进行心电图处理

时间:2013-09-18 13:41:38

标签: arduino

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

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

2 个答案:

答案 0 :(得分:0)

有些芯片会为你做这件事。例如ADS1294等。

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

答案 1 :(得分:0)

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

要实时进行 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 跟上没有问题。