Enrique Company-Bosch 和 Eckart Hartmann
心电图(ECG)是心脏在体表产生的电活动的记录。心电图测量信息由放置在身体指定位置的皮肤电极收集。ECG信号的特征是六个峰谷,用字母P,Q,R,S,T和U的连续字母标记(图1)。
图1.心电图信号的形式。
本文提出了一些低成本实施ECG监护仪的想法。1它的配置设想用于个人计算机(PC)。尽管本文在编写时考虑了患者安全,但提出的任何想法本身并不一定符合所有系统安全要求;任何使用这些想法的人都必须确保在特定设计中,整个设计符合所需的安全标准。
首先,我们概述了典型的模拟ECG拓扑结构。然后提出了一种电路,该电路执行模数转换、数字滤波和数字放大——所有这些都通过使用微转换器——一个集成的“片上系统”,结合了A/D转换器、微控制器和闪存。本文继续讨论微转换器的组件选择和编程方面的考虑因素。
心电图仪的要求
ECG的前端必须能够处理0.5 mV至5.0 mV的极弱信号,再加上高达±300 mV的直流分量(由电极-皮肤接触产生)以及高达1.5 V的共模分量(由电极和接地之间的电位产生)。ECG 信号的有用带宽(取决于应用)范围为 0.5 Hz 至 50 Hz(对于重症监护病房的监测应用)——高达 1 kHz(对于后期电位测量(起搏器检测)。标准临床心电图应用的带宽为 0.05 Hz 至 100 Hz。
心电图信号可能会被各种噪声破坏。噪音的主要来源是:
电力线干扰:来自电源的 50–60 Hz 拾音和谐波
电极接触噪声:电极与皮肤之间的接触可变,导致基线漂移
运动伪像:电极-皮肤阻抗变化引起的基线偏移
肌肉收缩:产生肌电图型信号(EMG)并与ECG信号混合
呼吸,导致基线漂移
来自其他电子设备的电磁干扰,电极线用作天线,以及
从其他电子设备耦合的噪声,通常是高频。
为了进行有意义和准确的检测,必须采取措施过滤掉或丢弃所有这些噪声源。
典型ECG信号链
图2显示了典型单通道心电图仪的框图。在该链中,很明显,所有滤波都是在模拟域中完成的,而微处理器、微控制器或DSP主要用于通信和其他下游目的。因此,数字内核的强大计算特性并不容易用于处理本质上原始状态的信号。此外,精密模拟滤波器由于不灵活,以及所需的空间、成本和功耗,对整体设计来说可能成本高昂。
图2.典型的单通道心电图仪。
建议的电路
使用ADuC842微转换器可以简化信号链,该转换器允许将ADC、滤波器和微处理器组合在一个集成电路中。其他优点是滤波器实施的灵活性和数字域中的隔离。建议的系统设计如图3所示。
模拟输入处理
模拟前端采用仪表放大器(IA)和右臂共模反馈运算放大器的典型方法。IA是一款低成本、高精度仪表放大器AD620,具有出色的直流性能:CMR>>100 dB至近1 kHz、50 μV最大失调电压、低输入偏置电流(最大值1 nA)和低输入电压噪声(0.28 Hz至0 Hz时为1.10 μV)。
AD620只需要一个外部增益设置电阻,RG.电阻R2和R3将正常增益公式更改为[增益= 1 + 49.4 k/RG+ (49.4 千米/2)/22 千米]。为避免输出饱和,可用增益受输出摆幅和IA最大输入电压的限制。采用±5 V电源时,AD620的输出摆幅约为±3.8 V;最大输入为 ±5 mV,外加高达 ±300 mV 的可变正常模式直流失调,最大增益为 12.45。在这里,增益保守设置为 8 (±1%),使用RG= 8.45 kΩ。
右臂共模反馈电路中使用的运算放大器是OP97,这是一款低功耗、高精度运算放大器,具有极高的共模抑制(最小114 dB)。该电路将共模干扰的反转版本应用于主体的右腿,目的是消除干扰。运算放大器在共模电压下具有91 [即R4/(R2 ||R3) = 1 MΩ/11 kΩ],滚降为 1.6 Hz,低通截止频率约为 160 Hz,以确保稳定性 [f– 3 分贝= 1/(2π × (10 kΩ × 0.1 μF)]。
数字隔离
数字隔离是 PC RS232 接口的核心,在本例中建议用于显示器。隔离器是ADuM1301,这是一款基于ADI公司的双向数字隔离器我耦合®技术——一种消除通常与光耦合器相关的设计困难(不确定的传流比、非线性传递函数等)的技术。
与光耦合器相比,它还能够以更低的功耗实现高数据速率。ADuM1301具有三个独立的隔离通道,其中两个用于发送数据,另一个用于接收数据。(ADuM1301的另一个功能(此处不需要)是启用/禁用输入/输出数据的能力。ADuM1301测量侧的电源取自ADP3607-5升压器/稳压器,后者提供固定的5 V输出。PC端的电源与电路完全隔离。它可以从 PC 获取(如此处)或从其他来源获取。
安全电源
隔离电源由电池提供,不使用时在充电站中充电。为了处理双极性输入信号,AD5和OP620需要±97 V双电源。ADP3607-5升压/稳压器和ADP3605逆变器用作稳压双电源,采用单节3 V电池提供正负稳压电压。
ADP3607是一款稳压输出开关电容倍压器,能够提供高达50 mA的电流。该器件能够在低至3 V的输入电压下工作,提供稳压固定为5 V的版本(ADP3607-5),即此处使用的版本。(也可通过外部电阻器在 3V 至 9V 范围内进行调节。它可以通过由无源元件组成的外部泵级产生更大的正电压。
ADP3605开关电容电压逆变器具有稳定的输出电压,能够提供高达120 mA的电流。该器件提供固定在–3 V (ADP3605-3)的调节,或通过外部电阻在–3 V至–6 V范围内进行调节。(与ADP3607一样,通过增加一个外部泵级可以实现更大的负电压。需要–5 V电源,输入电压为+5 V,因此R设置为31.6 kΩ (±1%),使用公式:在外= –1.5 R/9.5 kΩ。
两种电源电压(±5 V)均由电容式电荷泵产生,即使在故障条件下也不会产生不安全的电压,因为它们不需要任何电感器。这些器件还具有关断模式,允许微转换器在系统不使用时关闭器件的电源。
图3.建议的心电图配置。
患者安全
除了数字隔离和安全电源外,串联电阻Rx1、Rx2和Rx3还为患者提供保护,以符合AAMI(医疗仪器促进协会)的安全电流水平标准(参见参考文献)。这些标准要求来自电子器件的均方根接地电流或故障电流必须小于50 μA。
信号处理
ADuC842微转换器非常适合主要信号处理任务。它具有一个快速的12位ADC和其他高性能模拟外设、一个快速的8052微处理器内核、用于代码的集成62KB闪存以及其他几个有用的外设,如图4所示。
图4.ADuC842原理框图
用于此设计的微转换器的关键组件是ADC和8052内核。ADC将仪表放大器的模拟输出转换为数字信号。为 8052 内核编写的软件处理数字化信号,以生成最终 ECG 轨迹的数据。与许多 MicroConverter 设计一样,该软件既包括用 C 语言编写的复杂高级代码,也包括用汇编代码编写的时间敏感例程。在这种情况下,带通滤波器和陷波滤波器的实现采用C语言,而ADC由汇编代码控制。汇编代码与转换器速度相结合,可以累积多个样本,从而将ADC的有效分辨率提高到远远超过其正常的12位。
图5很好地说明了微转换器的有效性。顶部迹线是来自应用于ADC的仪表放大器的信号。中间跟踪仅显示使用 C 代码筛选实现的初始结果,而底部跟踪显示使用汇编代码处理多个转换后的最终结果。
图5.示波器迹线。
C 代码中的筛选器
采集的信号通过微转换器中的数字滤波进行处理。为此,我们设计了两个基于500 Hz采样频率的二阶数字无限脉冲响应(IIR)滤波器。陷波滤波器设计用于抑制50 Hz干扰。选择的设计程序是极点零点放置方法,陷波频率为50 Hz,陷波宽度为10 Hz。为此,需要以下传递函数:
传递函数可以转换为可编程递归算法:
在这个等式中,子索引 k 表示当前值,k-1 表示前一个时刻的值,依此类推。
我们现在需要将这个等式转换为代码。C 编码是这种算术密集型处理的自动选择,因为在汇编中对其进行编程太耗时了。使用ADuC842直接实现滤波器方程效率低下,因为它不是为浮点计算量身定制的。幸运的是,我们可以缩放系数(例如按 4096)并将陷波代码实现为:
iNOut = (4096L*iNIn-6627L*iNIn1+4096L*iNIn2+6211L*iNOut1-3598L*iNOut2)/4096;
这实现了二阶滤波器。虽然我们可以计算高阶滤波器,但在实践中,简单地级联二阶滤波器似乎是可行的。
第二个滤波器是巴特沃兹通带滤波器,具有0.05 Hz的低截止频率和100 Hz的高截止频率。传递函数和递归算法为:
这是通过以下方式在 C 代码中实现的:
iBOut = (1723L*iBIn-1723L*iBIn2+4745L*iBOut1-650L*iBOut2)/4096;
请注意,只需更改输入的系数即可缩放输出。另请注意,为了提高效率(如果信号都是正数),最后通过向右移动 4096 来完成 12 的除法。
图6所示的实现方案适用于4个带通滤波器和12个陷波滤波器的级联。信号在第一和第二带通滤波器中按4096倍放大。<> 位右移完成 <> 分频。
图6.C 代码的重要组成部分。
请注意 if (iAdc00>24000)iDac-= 1 和 if(iAdc00<8000)iDac += 1,这些行调整 ADuC842 的 DAC 输出以驱动 AD620 的电平转换输入,从而将 AD620 输出转换为微转换器 ADC 输入的舒适值。 这是可取的,以减少由于电极施加到皮肤的方式略有不同而导致的可变直流偏移的影响。类似的技术用于确保输出电压在输出范围内居中。
在汇编代码中处理
汇编代码的主要功能是定期测量输入信号,并确保以每秒 500 次所需的速率重复 C 代码计算。首先,我们将 Timer0 编程为连续运行,并以 1 毫秒的间隔生成中断。每个中断重新启动 Timer0,获得一个 ADC 转换结果,并递增一个变量 c2ms,用于同步 C 代码。在代码开发的这个阶段,C 代码的前几行是:
而(c2ms<2);用于第一阶段。
c2ms = 0;
iAdc00 = iAdc0;
最初,c2ms 为 0,C 代码将在 while(c2ms<2);1 毫秒后,发生 Timer0 中断,c2ms 递增到 1。再过 1 毫秒后,c2ms 递增到 2。现在虽然(c2ms<2);不再满足,C 代码通过将计数器 c2ms 重置为 0 并执行过滤器计算来继续。此后,C 代码将结果沿变量链向下移动,这些变量表示为下一次循环迭代准备的各种延迟结果。循环的最后一部分是printf(...),它将结果发送到PC进行显示。在 PC 上处理数据(超出本文的范围)可以像将其导入电子表格进行图形显示一样简单,也可以像设计人员希望的那样复杂。该解决方案产生了图5的中间迹线。
为了改善结果,Timer0中断率缩短到1/32 ms,并将数据累积在iAdc0中,以使用多个测量而不是单个测量。同时,while 更改为 while(c2ms<64),以便 C 代码在执行每个滤波器循环之前等待累积 64 个测量值。iAdc0 中的值保存在 iAdc00 中以供进一步处理,然后清除 iAdc0 — 准备累积接下来的 64 次测量。图 7 显示了程序集代码。这种改进的解决方案产生了图5的下迹线。
图7.程序集代码。
获得
信号增益始终是ECG信号链中的一个重要考虑因素。在上述设计中,它取决于许多因素。如前所述,模拟增益设置为8×。接下来,通过累积该信号的64次测量结果,获得64×的增益。接下来,代码iBIn = iAdc8>>0;的信号损失为3×,最后,前两个带通滤波器方程的缩放增益为4×两倍。这导致总增益为 G = (8 × 64/8) × 4 × 4 = 1024,这是模拟 ECG 电路的典型值。
图8.实际测量图表。
结论
图8显示了以埃因托芬导联线I配置连接的受试者的结果。可以看出,尽管使用的电子硬件很简单,但仍取得了良好的效果。本文表明,通过简单的硬件结合对软件的关注,可以实现显着的改进。此示例中的改进绝不是最佳水平;专门的设计师应该有可能显着改善结果。如果要实现具有不同滤波器频率或其他特殊特性的代码,则可以进行其他改进。ADuC842的代码存储器基于闪存,允许在使用该产品的产品制造后进行此类定制,甚至可以在患者需求发生变化时进行此类定制。最终的结果可能是为潜在的大批量市场提供紧凑、廉价的心电图。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !