首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于arduino的心电处理

基于arduino的心电处理
EN

Stack Overflow用户
提问于 2013-09-18 21:41:38
回答 2查看 1.7K关注 0票数 0

我们正在做的一个项目是对心电信号进行extraction.We提取,由于心电信号中充满了噪声(50 hz),所以需要对信号进行处理,提出了用board.we对其进行处理,需要用arduino对其进行去噪处理。

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

EN

回答 2

Stack Overflow用户

发布于 2013-09-18 22:25:16

有一些芯片可以帮你做到这一点。例如ADS1294和类似的。

其中这种芯片的典型之处在于它们是消除诸如50 as的公共调制解调器噪声的差分放大器。而不是陷波滤波器。因为许多所需信号都在50 is范围内。ECG示意图是非常标准的,因为它们放大了右臂和左臂之间的差异,其中左腿是一个常见的模式参考。它们进一步向右腿注入偏移量,以防止公共调制解调器偏移量饱和。Elektor Magazine最近的2013年7/8月刊对他们的ECG板进行了透彻的解释。在网络上有其他资源可以找到这些。

票数 0
EN

Stack Overflow用户

发布于 2021-07-02 00:25:39

你不一定需要一个硬件过滤器。软件筛选器可以很好地工作。来自Pan Tompkins Algorithm的低通/高通滤波器仅使用整数数学运算,因此不会占用大量资源。

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

代码语言:javascript
复制
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

这段代码运行得很快。在最初的论文中,他们以200 Hz的频率采样ECG,所以我设置了我的环路,以200 Hz的频率通过串行端口发送数据。我没看到任何水滴,所以Arduino没有问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18873859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档