基于ARM的单电源心电图检测的原理及算法实现
扫描二维码
随时随地手机看文章
随着心电图技术的临床应用和电子技术的发展,心电图作为生物医学测量中一项较成熟、应用较广泛的技术,已逐渐成为一种常规临床检查的手段,并在心脏疾病的诊断、监护以及药效分析等方面发挥着十分重要的作用。
目前常用的心电检测电路多为双电源供电,这种方案需要很多的电源器件和较大面积的布局布线,而这些都将增加产品的成本。
本文给出的设计采用单电源供电,可以解决上述问题并降低产品成本,同时该设计还在基于ARM核的嵌入式系统中采用了简单实用的算法,能快速准确定位QRS复波(即计算人的心率)。该设计面向广大家庭用户而设计,体积较小,只需要一台个人电脑与之连接,便可实时地操作、观测心电信号。
心电信号采集系统的基本架构如图1所示。人体的心电信号经电极和专用导联线从人体送至系统。通过滤波和放大调节电路,微弱的心电信号被放大到合适的幅值,并处于A/D转换范围之内。
图1:心电信号采集系统的基本架构
系统的控制和数据的处理由ADI公司基于ARM7 TDMI核的MCU ADuC7020来完成。这款芯片有丰富的片内外围电路,处理速度高达40MIPS,A/D转换速度可达1MSPS,具有很高的性价比。最后将结果由 ADuC7020通过UART口送至计算机,由计算机通过由LabVIEW编写的界面将结果直观地显示出来或存储下来。图2是基本的硬件电路图。
图2:基本的硬件电路
从人体或是心电信号发生器上采集到的心电信号幅值在0.05~5mV之间(一般为2mV),频率在0.05Hz~75Hz之间。心电信号要经过缓冲、匹配电阻网络、电压放大和滤波等几级电路。
心电信号首先经过一个两级的RC低通滤波电路,进入缓冲级。信号进入系统之前,需要除去高频分量,因此这里设计了一个截止频率为300Hz的低 通滤波器,以保证0.05~75Hz的微弱心电信号不会被衰减。缓冲级由电压跟随器组成,它可以提高整个放大电路的输入阻抗,降低输出阻抗。为保证差分信 号的一致性,应选用集成在芯片上的放大器。匹配电阻网络通常采用威尔逊电中心端网络,它通过特定的电阻网络获得威尔逊电中心端作为整个ECG系统的参考 点。
滤波放大电路的前级采用负反馈差分放大电路,这里使用ADI公司可调增益高共模抑制比的仪表放大器AD8221作为前级放大器。放大倍数设为8倍,由公式G=49.4kΩ/RG+1计算得到,其中RG是AD8221两个RG管脚之间的电阻值。
这个电阻应当选用高精度、低温漂的金属膜电阻,以保证AD8221的低噪声性能。AD8221的REF管脚没有接地,而是和一个低通滤波器构成 负反馈回路,以便能有效地滤除直流分量,从而使U1处的电压始终箝位在1.25V。因为是单电源供电,而不同导联的心电信号电压有正有负,所以一定要提供一个合适的箝位电压。ADuC7020的AD转换模式下电压输入范围是0-2.5V,这里就选择中间值1.25V作为箝位电压。
AD8221输出的单端信号幅值非常小,其中还混有大量干扰,无法进行数据处理。后级滤波放大电路由一个增益较大的有源低通组成,增益可调。不同人的心电信号强弱不一样,考虑到有衰减,一般将该增益设为150倍。系统的传递函数为:
这两个低通滤波器都要求具有低电压偏移、低温漂和低噪声特性,ADI公司的轨到轨输入输出双运放AD8607能够很好地满足这些要求。由于第二级放大器是反相端输入,所以最后得到的信号是反相的,这可以在软件中再作处理。
从保护病人和提高系统的共模抑制比两方面考虑,必须将共模信号反相并放大后,再反馈给人体,这样系统和人体就共同构成了一个电压并联负反馈网 络,即通常所说的右腿驱动电路。由ADuC7020对处理后的心电信号进行AD转换,选择定时器控制的ADC采样模式。一次A/D转换结束,触发ADC中断,在中断服务程序中对数字信号进行处理。
处理心电数字信号的关键是对心电信号中QRS复波的精确识别。正常人的QRS波群的宽度为0.06至0.10秒,且不受心律变化的影响。针对R 波很尖锐的特点,我们通过一个滑动时间窗判断信号峰、谷是否满足要求,同时确认其是否在时间窗内。对信号幅值的阈值采用双可变阈值法,即对波形设置波峰阈值和波谷阈值。如果峰阈值和谷阈值在一段适当时间内有较大变化,则重新设置峰阈值和谷阈值。下面我们将对QRS复波定位和心律计算进行讨论。对起始一段时间的信号只进行反相和滤波处理,这是为了将倒置的心电信号恢复过来,并避免信号初期的波动影响阈值。然后在一定的时期内,根据采样得到的数据设置峰阈值 Thpeak 和谷阈值THtrough,然后对QRS波进行定位。最后,按以下步骤(见图3)进行数据处理。
图3:数据处理的基本步骤
读取新采样点Ni:
1)判断采样的信号点幅值是否大于峰阈值Thpeak。如果不满足,则回到第1)步。
2)如果满足条件,则开始计数n=1,并记录n值为peaktime1。将时间窗的起始边滑至此处。
3)继续采样Ni+1,每采样一次则n+1。
4)判断新的采样点Ni+1是否小于谷阈值。如果不满足,则回到第4)步。
5)如果满足采样点小于谷阈值Thtrough,则记录该点的n值为troughtime1。
6判断这两次满足幅值要求的信号点时刻troughtime1和peaktime1之差是否在时间窗内,即是否小于窗宽度THtime。如果不小于THtime,则回到第1)步。
7)如果满足,则这段信号被认为是一个QRS波群。Peaktime1就被定位为一个R波。
有了定位的R波,就可以在此基础上按以下步骤统计心率:1)找到第一个R波,并记录n值为peaktime1;2)找到第二个R波,并记录n值为peaktime2;3)按照以下公式计算心律。
实践证明,采用这种算法计算得到的心律准确率高、计算简便、易于实现,并最终在PC机上观察到心电信号波形和心律值。