【MCU专题】基于STM32的心电采集仪设计
如今,心血管类疾病已经成为威胁人类身体健康的重要疾病之一,而清晰有效的心电图为诊断这类疾病提供了依据,心电采集电路是心电采集仪的关键部分,心电信号属于微弱信号,其频率范围在0.03~100 Hz之间,幅度在0~5 mV之间,同时心电信号还掺杂有大量的干扰信号,因此,设计良好的滤波电路和选择合适的控制器是得到有效心电信号的关键。基于此,本文设计了以STM32为控制核心,AD620和OP07为模拟前端的心电采集仪,本设计简单实用,噪声干扰得到了有效抑制。
1、总体设计方案
心电采集包括模拟采集和数字处理两部分,本设计通过AgCl电极和三导联线心电采集线采集人体心电信号,通过前置放大电路,带通滤波电路,50 Hz双T陷波后再经主放大电路和电平抬升电路把心电信号的幅度控制在STM32的A/D采集范围内,STM32通过定时器设定A/D采样频率,通过均值滤波的方式对得到的数字信号进行处理,最后在彩屏上描绘出心电图形,系统总体框图如图1所示。
2硬件设计
2.1 主控模块电路设计
主控模块的STM32F103VET单片机是控制器的核心,该单片机是ST意法半导体公司生产的32位高性能、低成本和低功耗的增强型单片机,其内核采用ARM公司最新生产的Cortex-M3架构,最高工作频率72 MHz、512 kB的程序存储空间、64 kB的RAM,8个定时器/计数器、两个看门狗和一个实时时钟RTC,片上集成通信接口有两个I2C、3个SPI、5个USART、一个USB、一个CAN、一个SDIO,并集成有3个ADC和一个DAc,具有100个I/O端口。主控单片机管脚排列图如图2所示。
2.2 前置放大电路的设计
前置放大电路是模拟信号采集的前端,也是整个电路设计的关键,它不仅要求从人体准确地采集到微弱的心电信号,还要将干扰信号降到最低,由于心电信号属于差分信号,所以电路应采用差动放大的结构,同时要求系统具有高共模抑制比、高输入阻抗、低漂移等特点。因此,选择合适的运算放大器至关重要,这里选择仪用运放AD620实现前置放大,AD620具有高精度、低噪声、低输入偏置电流低功耗等特点,使之适合ECG监测仪等医疗应用。AD620的放大倍数由1与8脚之间的反馈电阻决定,增益G=49.4 kΩRG+1,由于心电信号中含有较大的直流分量,因此前置放大电路的放大倍数不能过大,在这里选择放大约10倍,因此反馈电阻R6取约5 kΩ,为提高电路的共模抑制能力,这里用一个OP07检测R10,R4上的共模信号驱动导线屏蔽层,消除分布电容。同时用另一个OP07运放和R5,C3,R7组成右腿驱动电路,在R10,R4上检测到的共模信号经反相放大器后经R7,反馈到人的右腿,进一步抑制了共模信号和50 Hz工频干扰,这里右腿驱动有一个对交流电的反馈通路,交流电的干扰可能对人体产生危害,因此这里要注意做好绝缘措施,同时保护电阻R7尽可能大,取1 MΩ以上。此外系统电源的不稳定也对心电信号的采集有较大影响,因此在本系统中,所有运放的电源脚都并联两个0.1μF和10μF的电容退耦,提高系统的稳定性,前置放大电路的电路图如图3所示。
2.3 带通滤波器的设计
从前置放大电路输出的心电信号还含有较大直流分量和肌电信号,基线漂移等干扰成分,所需采集的有用心电信号在0.03~100 Hz范围之间,因此需设计合理的滤波器使该范围内的信号得以充分通过,而该范围以外的信号得到最大限度的衰减,这里采用具有高精度,低偏置,低功耗特点的两个OP07运放分别组成二阶有源高通滤波器和低通滤波器,高通滤波器由C11,C17,R7,R10组成,截止频率f1≈0.03 Hz,低通滤波器由R8,R9,C10,C13组成,截止频率约为f2≈100 Hz,系统带通滤波器的电路如图4所示。
2.4 50 Hz双T陷波器设计
工频是心电信号中最主要也最常见的干扰源,虽然前面的右腿驱动电路对其有一定的抑制作用,但是仍有较大部分进入了后面的电路,因此有必要设计截止频率为50 Hz的带阻电路来进一步滤除干扰,带阻电路也称陷波器,顾名思义,带阻电路就是使某特定频率范围内的信号大幅衰减,而对该频率范围外的信号几乎不产生影响。双T陷波电路是典型的带阻电路,在双T网络中,两个T型网络的参数是对称的,如图5所示的50 Hz双T陷波电路中,R13=R14=2R16=R=32 kΩ,C20=2C19=2C18=C=200 nF,本质上是由两个T型高通滤波器和低通滤波器并联组成,图5所示电路的截止频率f0=1/2πRC≈50 Hz。
2.5 主放大以及电平抬升电路设计
心电信号的幅度约为0~4 mV,STM32 AD转换的输入电平要求为3.3 V,因此,为了单片机能够处理采集到心电信号,需将采集到的模拟信号放大800~1 000倍。前置放大电路已放大了10倍,理论上主放大电路约放大100倍即可。为确保信号不失真,一般单级放大不超过10倍,因此,可采取两级放大的方式来达到放大100倍的效果,U9固定放大10倍,U11的反馈电阻采用可调电阻,这样就可以通过变阻器的调节达到放大100的效果。此外,因为STM32单片机的A/D采集不能采集负电平,因此这里设计了如U7所示的电平抬升电路把心电信号提到0电平以上,方便单片机采集。
3、软件设计
得到心电信号后要输入STM32进行AD采集和软件滤波,最终送LCD实现波形显示,单片机初始化后,程序设计定时器每6 ms中断一次,在中断函数里,对读取到的A/D值采取均值滤波的形式滤除干扰,然后把之转换与彩屏对应的坐标值,在彩屏上画线实现波形的实时显示,整个系统的程序流程如图7所示。
4、测试结果分析
通过电极片和三导联线在人的左臂,右臂,右腿部采集心电信号经前端模拟电路和STM32处理后,最后在示波器和彩屏上得到的心电信号如图8所示。
从彩屏和示波器上所得的心电图来看,50 Hz工频信号和基线漂移得到了较好的抑制,从示波器上可看出,相邻两个波峰之间的时间大约为900 ms,这与真实的心电信号基本吻合,图像清晰稳定,能够较好地反映人体心电特征。
5、束语
本设计实现的是以STM32为控制核心,以AD620,OP07为模拟信号采集端的小型心电采集仪,该设计所测心电波形基本正常,噪声干扰得到有效抑制,电路性能稳定,基本满足家居监护以及病理分析的要求,整个系统设计简单,成本低廉,具有一定的医用价值。
↓↓↓ 点击"阅读原文" 【查看文中相关链接】