完整版)基于STM32的便携式心电图仪设计_第1页
完整版)基于STM32的便携式心电图仪设计_第2页
完整版)基于STM32的便携式心电图仪设计_第3页
完整版)基于STM32的便携式心电图仪设计_第4页
完整版)基于STM32的便携式心电图仪设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 STM32 的便携式心电图仪设计目录1 引言11.1 心电图仪在医学领域中的应用 11.2 便携式心电图仪的发展状况 22 系统总体设计42.1 主要功能 42.2 系统设计方案 53 便携式心电图仪的硬件设计63.1 最小核心系统的设计 73.1.1 处理器的选择 73.1.2 最小核心系统电路的设计 83.2 人机交互界面的设计 123.2.1 显示界面设计 123.2.2 按键设计 143.3 前置放大电路以及右腿驱动电路 153.4 滤波电路以及陷波电路的设计 163.5 电源电路的设计 184 便携式心电图仪的软件设计194.1 软件开发平台 194.2 软件系统整体设计 21

2、4.2.1 软件总体分析 214.2.2 STM32 软件系统设计流程 214.2.3 软件总体流程图 234.3 信号采集程序设计 234.4 数字滤波程序设计 254.5 液晶程序设计 265 系统调试结果及误差分析 275.1 调试手段 275.2 测量调试以及分析 285.2.1 采集电路的测试 285.2.2 滤波算法测试 295.2.3 整体测试和结果分析 30 结束语 32 参考文献 34基于 STM32 的便携式心电图仪设计1 引言随着社会的进步、经济的发展以及人们生活水平的逐步提 高,我国人口老龄化程度越来越严重,与此伴随的心脏病一类的 疾病的发病率也不断攀升,人们的身体健康

3、产生了巨大的威胁。 相关数据表明,我国因心脑血管疾病死亡的人数将近占总死亡人 数的一半 1 。根据相关部门的调查显示,我国每年大约有近一半 的死亡病例为冠心病,而且死亡率还在逐年递增。每年约有 16 万名患者接受支架植入手术,手术施行每年的增长率超过了五分 之一。在我国因心脑血管疾病每年耗费达 3000 亿元,由于受测试 手段的局限,预防率、治疗率及控制率依然很低。预防率是有效 防治心脑血管疾病的关键因素,而且有效的方便的心电监测仪器 是完成这一任务的有力工具。1.1 心电图仪在医学领域中的应用人类的心脏有规律性的膨胀和收缩,从而使血液的循环。在 心脏肌肉每次收缩之前,都会产生一股微小的生物电

4、流,加上人 体的体液能够导电,这些微小电流可以通过体液的传递就会反映 到人体的表面皮肤上。不过受限于身体各部分组织不同、距心脏 的距离不同,会造成体表的不同部位的电位有所不同。通过捕捉 这个现象,将心电图显示出来的心电检测仪器,根据这些人体生 物电信号,我们可以从不同角度观察心脏的活动情况。这是我们 对心脏基本功能及其病理研究,具有重要的参考价值 2 。心电图能够在一定程度上反映心律的运行状况, 人的心肌受 损的程度、发展过程以及心房、心室的功能结构情况都能通过它 表现出来。这些都可以在心脏手术和药物的使用上提供重要的参 考3。常规心电监护设备体积笨重、价格昂贵和不便于携带,但是 随着社会生活

5、水平的提高,医疗器械家庭化开始逐渐进入我们的 日常生活,家庭化的心电图仪器功能没有专业的大型的医疗设备 齐全,但是它具有体积小、操作简单的优点,同时可以在一定程 度上满足了人们的基本应用。我们可以用它在家庭或则其他地方 很方便的进行心电图信号的测量,并根据进一步的处理,做基本 的诊断,也可以把这些数据提交到专业机构做进一步的详尽的诊 断。这样也可以避免那些行动不便的病人,利用互联网技术,把 数据通过远程传送的方式,提交到专业机构或指定的医院惊醒专 业诊断和分析。为了能够在更多场合更方便的诊断, 各种各样的便携式心电 图设备应运而生,常规心电图仪由于笨重只能在病人静卧的情况 下记录的心电活动,历

6、时时间短,获取的信息量很少,所以在有 限时间内有些非正常的情况被发现的概率也是很低的。而便携式 监护装置可以在随时随地的进行实时监护,并把数据存储起来。 这样不仅可以节省时间,还可以得到实时的监护,所以研发便携 式心电监护产品具有重要意义。 本文主要研究的便携式心电图仪, 即将普通心电图设备小型化、家庭化,具有低价位、体积小、便 于携带和使用方便等特点 。1.2 便携式心电图仪的发展状况1887年英国生理学 Einthoven 通过对毛细管的静电计记录了 心动的电流图 4。 1895 年他开始了对心脏动作电流的进一步研 究,并通过对德 ?阿森瓦尔氏的镜影电流计的设计改进, 提高了心 电图的质量

7、。 1903 年他成功的设计了弦线式电流计,通过反射镜 记录心动电流,解决了以前测量设备的惰性大,记录误差大以及 需要繁琐的数学计算等缺点。同时,他又制定心电图的影线在纵 坐标上波动 1cm,代表 1mV 的电位差,在横坐标上移动 1cm 为 0.4秒的标准。这种方法简单直观,并采用 P、Q、R、S、T 等字 母标出心电图上的各波,这种标记方法一致沿用至今。 1912 年在 他深入研究了正常心电图的波动范围后,提出了著名的“爱因托 芬三角”理论。 1924 年 Einthoven 教授获得了诺贝尔生理学和医 学奖 5。总之这位被尊称为“心电图之父”的生理学家对心电图 的创立及发展有着巨大的贡献

8、。心电图从此开始逐步走进协助诊 断疾病,并通过发展被广泛应用于临床。随着社会的发展,心电图检测理论越来越成熟与完善,另外 机械、电子、计算机等技术的迅猛发展,带动了医疗器械发生了 革命性变化, 极大的增强了心电图机的功能。 随着现代科学技术 的发展,特别是计算机、微电子、机械电子在医疗领域的广泛应 用,极大的促进了心电设备的发展。目前各大医疗器械厂商都投 入巨资开发性能更强、功能更加完善的心电设备,比如欧姆龙、 北京超思、亚新、均在该领域的研究与生产上有所突破。综观当前心电检测仪器发展趋势,主要向以下几个方向发 展:(1)系统化 随着医院计算机管理网络化、信息存储介质和 IC 卡等的应 用及

9、Internet 的全球化而产生的。电子病历是信息技术和网络技 术在医疗领域的必然产物, 我国卫生部先后在 2010,2011 发布了 关于电子病历系统的规范和通知文件。而实时心电数据将在该系 统中有着重要的作用。( 2)数字化随着计算机科学、机械电子的迅猛发展,医疗器械的数字化 程度越来越高, 比如数字滤波器的使用, 极大的降低了心电干扰, 提高了心电判断的准确率。(3)无线化无线传感技术的发展能够促使心电检测无线化, 从而摆脱传 统心脏检测的繁琐程序。同时,能减轻病人的心里紧张程度,实 现心电检测的方便性。(4)自动化自动测量和分析是医疗仪器的发展方向, 使医疗器械智能化 是目前医疗器械设

10、计的目标之一。(5)远程化计算机技术、网络通信技术的快速发展,为远程医疗的实现 提供了可能,将心电数据通过远程传输,在远端对心电数据加以 分析处理并提出诊断结果,从而实现远程医疗。如目前出现的基 于 GPRS 网络的远程心电监护系统就是这个发展趋势的体现。总之,科技不断进步,人们的需求也在变化,心电图是记录 心脏电活动状态的记录,包括心脏节律和频率以及电压的高低等 信息,可用于诊断各种心律失常、心肌病变、心肌梗塞及心肌缺 血等心血管疾病。同时对心脏病的诊断和治疗也提供了确切的理 论依据。设计符合市场需求的产品是企业生存的根本,利用高科 技带来的技术革命去更新医疗器械更是一个巨大的市场机会,我

11、们相信,在未来几年里,家庭化的监护设备必将越来越普及 6 。2 系统总体设计由于心电信号的微弱性, 我们对心电信号的提取具有一定难 度。另外受到 50Hz 及其倍频干扰和极化电压的影响,对前置放 大器和信号滤波电路的设计提出了更高的要求。因此在设计前端 硬件电路时,要根据信号的特征,选择最佳的器件。同时便携式 设备必须是低功耗设备这限制了多数的微处理器,锂电池供电对 信号仅仅用硬件滤波还不能达到分析信号的要求,硬件滤波的一 个缺点是,要想获得更好的滤波效果,必须设计更高的阶数,而 这无疑会增加系统的体积。因此还有必要采用软件滤波的方法, 这就对处理器的速度和软件的优化提出了更高的要求 7 。采

12、取软 件滤波即设计数字滤波器,数字滤波器有多种,这样就必须寻找 一种行之有效的滤波算法。2.1 主要功能本文的目的是通过先进微处理器的应用研究的主要内容是 通过将嵌入式技术、数字信号处理技术和信号采集技术的结合, 设计一个能够完成信号提取和分析功能的嵌入式心电图监测系统。主要研究工作如下:(1) 心电图仪的硬件设计: 采集电路:准确提取生理信号,把信号处理为可供 采集分析的有效信号; 处理电路:完成信号的采集、滤波、显示、分析和 传输等。(2) 心电图仪的软件设计:STM32 芯片各模块初始化程序; 数字滤波处理程序; 人机交互界面的程序设计;2.2 系统设计方案 系统原理结构图如图 1 所示

13、。心电信号由电极获取,送人心 电采集电路,经前置放大、主放大、高低通滤波,得到符合要求 的心电信号,并送入到 STM32 的 ADC 进行 AD 转换。为了更好 地抑制干扰信号,在电路中还引入了右腿驱动电路。系统控制芯 片采用 STM32,TFT-LCD 的触摸功能加上少量按键可以建立良 好的人机交互环境,可以通过 LCD 实时显示和回放,数据通过 USB 可靠地传输到 PC 机,以便对心电数据做进一步的分析。系 统主要硬件结构及电路系统主要划分为三大部分: 心电采集电路, 主要完成心电信号的提取;带通滤波及主放大电路,用于调理采 集到的信号,使之符合处理要求; STM32 处理电路,完成心电

14、信 号的显示和分析功能。图1 系统原理结构图整个系统有以下几个部分组成:(1)采集电路:主要有前置放大电路、带通滤波电路和主 放大电路组成,心电信号由电极获取后送入心电采集电路,经处 理后得到符合要求的心电信息。(2)处理电路:主要完成对心电数据的滤波、陷波、放大、 分析、显示和传输控制。(3)按键电路:完成良好的人机交互。( 4)显示电路:实时显示出心电波形和心电相关信息。 (5)上位机设计:在 PC 机上处理和显示心电波形。(6)电源电路:设计稳定可靠的电源电路,为整个系统提 供电源,降低系统功耗。3 便携式心电图仪的硬件设计 便携式心电图仪要求具有可移动性和再开发性, 不仅便于携 带、功

15、能尽可能的完善能够实时对心电信号进行处理,而且要求 随着发展可以进一步升级满足人们更多的需求。本心电图仪集信 号的采集、处理、传输三大功能于一体。对于这些功能,即需要 相对独立的模块化设计,又需要良好的协调。因此,在开发过程 中,硬件设备的选择需要考虑这些特定的需求,有针对性的进行 器件的选择和设计。总体电路要遵循:(1) 选择合适的处理器,尽量选择片上系统( System on Chip,SoC)设计硬件系统,减少硬件复杂度并降低成本。(2) 选择典型电路,按照模块化设计, 系统扩展与 I/O 的配 置充分满足应用系统的功能要求,并留有适当冗余,以便进行二 次开发。(3) 注重软硬件结合,软

16、件能实现的功能尽可能由软件实 现,以简化硬件结构,降低能耗和设备成本。(4) 必须考虑芯片的驱动能力, 有必要的可靠性及抗干扰设 计它包括去耦滤波、印刷电路板布线、通道隔离等 8 。3.1 最小核心系统的设计以应用为中心、软件硬件可裁剪的、适应应用系统对功能、 可靠性、成本、体积、功耗等严格综合性要求的专用计算机系统, 由硬件和软件两部分有机的结合在一起,作为一种典型的嵌入式 应用 9。由于便携式心电图仪有很强的可移动性,便于使用者携 带,同时也要求功能完善,能够实时对心电信号进行处理。集信 号采集处理传输三大功能于一体。对于这些功能,即需要相 对独立的模块化设计, 又需要良好的协调。 因此,

17、在开发过程中, 硬件设备的选择需要考虑这些特定的需求,有针对性的进行器件 的选择和设计。3.1.1 处理器的选择处理器相当于人体的大脑机制, 整个系统在处理器合理指挥 调度下才能完成我们赋予他们的任务,所以一款合适的处理器对 于整个系统来说是非常重要的。经过综合考虑本设计对处理器的 选择主要从以下五个方面来考虑:(1) 处理器的处理速度: 在本设计中, 处理器不仅要进行滤 波处理,同时还要实时显示出心电波形,在通信的情况下还要与PC 机进行通信,因此,处理器要有较高的处理速度。(2) 处理器在完成任务的复杂程度: 在本设计中, 处理器要 负责信号的采集、信号的滤波处理、心电波形的显示、数据存储

18、 以及通信。(3) 尽可能简化外围电路的复杂程度: 一个系统中所使用的 元器件越多、电路结构越复杂,则系统的出问题的概率越大,可 靠性与稳定性越差。因此在选择 MCU 的时候,希望 MCU 内部 集成功能单元越多越好,这样就能简化系统设计,增加系统的可 靠性及稳定性。(4) 尽可能减少生产成本: 在本系统中, 由于多数属于家庭 使用及野外环境的不确定性因素较多, 对于普及性的大众化产品, 希望替换成本越低越好,其中处理器的成本占了整个系统的重要 的一部分,能够降低处理器的成本也就从而降低了产品的总成本。(5) 尽可能底的功耗:便携式设备对低功耗的要求都较高, 必须最低限度的减少功耗,手持式设备

19、的续航能力也是众多参数 比较受关注的一点,如何能有长时间的续航能力也是我们需要注 意的一点。综合以上几个方面, 最终选用了意法半导体公司推出的新型 32 位 ARM 内核处理器芯片 STM32 系列中的 STM32F103ZET6。3.1.2 最小核心系统电路的设计STM32F103x 增 强 型 系 列 芯 片 使 用 高 性 能 的 ARM Cortex-M3 32 位的 RISC 内核,工作频率为最高可达 72MHz,内 置高速存储器 (高达 128K 字节的 FLASH 和 20K 字节的 SRAM) , 丰富的增强 I/O 端口和连接到两条 APB 总线的外设。所有型号 的器件都包含

20、 2 个 12 位的 ADC 、3 个通用 16 位定时器和一个 PWM 定时器,还包含标准和先进的通信接口:多达 2 个 I2C 和 SPI、3 个 USART、一个 USB 和一个 CAN 。工作电压为 3.3V。 图 2是 STM32F103x的模块框图9。STM32 微控制器有如下优点:(1) STM32内部有高达 128K字节的内置闪存存储器, 用于 存放程序和数据。多达 20K 字节的内置 SRAM, CPU 能以 0 等 待周期访问 (读 /写)。这样在我们所设计的系统中就去掉了以往很 多嵌入式项目设计中所需要的用于外部程序存储器的 Flash 芯片 和用于外部数据存储器的 SR

21、AM 芯片,大大节约了系统成本, 提 高了系统可靠性及稳定性 10 。(2) STM32 增强型系列拥有内置的 ARM 核心,因此它与所 有的 ARM 工具和软件兼容。 这给项目的开发工作带来了很大的 便利,因为在以前的工作中曾经使用过其他 ARM 核心的微控制 器,所积累的经验在本项目的开发中得到了充分发挥。而且由于 可用于 ARM 开发的工具软件很多,大大加快了项目开发的速度 和效率。(3) STM32 的内部 FLASH 是在线可编程的。在我们的项 目中,设备运行的配置参数 会存储在 FLASH 中的固定位置,每 次启动设备时,程序会读取这些参数来进行初始化。但在某些情 况下,需要远程设

22、置或修改配置参数。这一功能使得可以在不用 接 JTAG 烧写器的情况下根据 USART 接口接收到的数据来修改 FLASH 中的配置参数, 在设备再次启动时, 就会读取新参数来进 行初始化。(4) STM32 有优秀的功耗控制。 高性能并非意味着高功耗。 STM32 经过特殊处理,针对应用中三种主要的功耗需求进行优 化,这三种能耗需求分别是运行模式下的高效率的动态耗电机制、 待机状态时极低的电能消耗和电池供电时的低电压工作能力 11 。(5) STM32 拥有强大的库函数。它采取与以往不同设计方 法,通过把各个外设封装成标准库函数 的方式,屏蔽了底层硬件 细节,能够使开发人员很轻松地完成产品的

23、开发,缩短系统开发 时间。图 2 STM32F103x 的模块框图STM32 固件库。 STM32 固件库提供易用的函数可以使用户 方便地访问 STM32 的 各个标准外设,并使用它们的所有特性。USB 开发工具集。在更广的应用领域中, USB 功能的实现 将变得越来越方便, 因为 USB 开发工具集提供了完整的, 经过验 证的固件包,使得用户可以顺利地开发各个类的 USB 固件。(6) STM32F103xx 增强型支持三种低功耗模式,可以在要 求低功耗、短启动时间和多 种唤醒事件之间达到最佳的平衡。总之, STM32 芯片在项目中的使用,使得整个系统的运行 效率、稳定性、功耗、生产成本等都

24、比同类系统有了较大的提升。 本设计中最小核心系统设计图如图 3 所示。22图 3 最小核心系统设计图由图 3 中可以看出,在设计 STM32 最小系统时要注意一下 几个部分:(1) 复位电路:利用 RC 电路的延时特性,设计了简单的复 位电路,有此可简单计算出延时时间, 这里用一个 10 k电阻和 1.0 F 的电容,时间延时大约为 3.6ms,符合 STM32 系统芯片的复 位要求。(2) 晶振电路:这里选用两个晶振,首先 8M 无源晶振,晶 振两端分别通过 22pF 的电容接地,另一个 32.768K 的晶振使用 的 15pF 的电容接地电路简单,并能很容易的就能使晶振起振。(3) 芯片上

25、的 BOOT0 和 BOOT1 引脚分别通过跳线帽可选 高低电平,以改变芯片启动模式, 其启动模式具体如下表 1 所示。 表1 启动模式说明(4) 模块有 4 个数字电源供电引脚, 1 个模拟电源供电引脚 以及相应的接地引脚。在电源端要注意接滤波电容,模拟地和数 字地引脚之间最好通过 0 欧电阻隔离。电源和地之间加若干去藕 电容。3.2 人机交互界面的设计人机交互界面是人与机器进行沟通交流的设备, 它可以把人 的指令传入给 MCU ,也可以让设备显示出我们所想知道的信息。3.2.1 显示界面设计首先,针对要完成一款便携式心电仪的设计,那么在 LCD 的选择上,就要符合实际的需要,必须要考虑功耗

26、和成本。对于 人机交互部分,显然采用单色液晶显然已经不能满足的需要,因此把 LCD 的选择定位在了彩色液晶上。 主要从以下几个参数做出 选择:(1) 颜色要丰富。从美观角度来讲, 在液晶上不同类型的数 据最好能够以不同的颜色来区分。比如波形、汉字、数字最好颜 色不同。所以在液晶的颜色上要达到一定的数量。(2) 尺寸。便携式式是本系统设计时的一个指标, 因此液晶 的尺寸不易过大,但也要便于观察,选择时要符合实际情况,过 大则不便于随身携带,过小则可能出现汉字或数字不便于观察等 问题。(3) 功耗。对于便携式嵌入式设备来说, 低功耗是一般都作 为一项重要的指标,在外边使用时能够尽可能地延长电池的工

27、作 时间(4) 材质。液晶主要有两类: STN 型和 TFT 型,后者较之 前者显示效果更佳,但耗电能方面也高于前者。(5) 价格。正如上面所提到的, 性价比高是本系统设计的一 个目标,因此要可能的用符合设计要求价格低廉的产品。 因此, 根据上述几点本设计选用了 3.2寸真彩 TFT 液晶触摸屏,320*240 像素,26万色,16位并行接口,可以直接用 AVR、ARM7 、STM32 等 MCU 驱动。相关参数:分辨率: QVGA 240 x 320尺寸: 3.2英寸控制器: IL9320触摸屏: 4线电阻式接脚: 30PIN间距 2.54mm背光:4 LED 并联具体接口电路设计如图 4

28、所示图4 LCD 显示界面借口3.2.2 按键设计对于实现人机交互的场合,按键是比较常用的,通过按键来 选择系统的功能, 完成对系统的访问控制。 本系统用了 5 个按键, 分别定义为上、下、左、右、中键,前四个按键是对设置或访问 的液晶显示对象进行选择,中间是确定键,这样就实现了既可以 用按键功能,也可以用按键来实现对系统的设置,按键电路的实 现比较简单,这里不再详述。具体电路实现如图 5 所示。图5 按键接口电路3.3 前置放大电路以及右腿驱动电路 前置放大电路要完成的功能是实现信号的差分放大, 该部分 电路在整个采集电路中至关重要,因为后续信号的处理都是以此 为基础的。因此要选择一款合适的

29、差分运放芯片。选择时一般考 虑以下几点:(1) 增益由于心电信号非常微弱,均值在 1mV 左右,而采集电压一 般要达到 1V 左右,所以心电放大倍数在 1000 倍左右。一般为了 抑制零点漂移,提高共模抑制比,应该分多级实现放大。(2) 频率响应 所谓频率响应是指放大器对不同信号频率的反应, 心电信号 的范围低于 100Hz,所以要求放大器要对此频率范围的信号尽可 能不失真的放大出来。可以设计高通、低通滤波器来压缩频带, 滤除该频带以外的干扰信号。必要时还需要设计 50Hz 工频干扰 抑制电路,通过这样处理后,得到的信号才可能有诊断价值。(3) 共模抑制比 电极不对称、电气设备运行时的干扰都易

30、产生极化电压,然 后通过放大电路其值极有可能远比心电信号大得多,从而将微弱 的信号淹没。因此要求放大器有很高的共模抑制比。一般要求要 达到 80db 以上。(4) 输入阻抗 心电信号是微弱的,且具有高阻抗的特性,只有高输入阻抗 才有可能不失真的引出心电信号,不然由于分压的因素,会极大 的衰减心电信号,从而导致无法正确采集。(5) 低噪声、低漂移 在心电放大器中,还有两个较重要的参数即噪声和漂移。在 设计心电放大器时应尽量选用低噪声元件, 提高输入阻抗。 另外, 温漂会引入直流电压增益从而给心电信号带来干扰。因此,选用 的放大器要特别注意这两个参数。综上所述该方案选用具有上述优点的 AD620,

31、具体设计电路图如图 6 所示图 6 前置信号采集电路 由于人类受到大量的外部干扰, 心电电极和电力线之问由于 存在电容耦合会产生位移电流 Id ,降低位移电流干扰的一种有效 办法是采用右腿驱动法, 图 7为右腿驱动的具体连接电路。 右腿不 直接接地而是接到辅助运算放大器的输出。从两个电阻结点检出 共模电压,它经过辅助的反相放大器放大后通过电阻反馈到右腿。 采用右腿驱动电路,对 50Hz干扰的抑制并不以损失心电信号的频 率成分为代价。但由于右腿驱动存在交流干扰电压的反馈电路, 而交流电流经人体, 成为不安全因素, 限流电阻通常在 1M以上。图 7 右腿驱动电路3.4 滤波电路以及陷波电路的设计为

32、滤除干扰需要设计带通滤波器,使频率为 0.05Hzl00Hz 的心电信号通过,该范围以外的信号将大幅度衰减掉。滤波器有 无源滤波器和有源滤波器两种。 无源低通滤波器是由无源器件 (电 阻,电容,电感)组成。其带负载后,通带放大倍数的数值减小, 通带截止频率升高,这个缺点不符合信号处理的要求 12 。因此本 设计选用有源低通滤波器。 由 RC 元件与运算放大器组成的滤波 器称为 RC 有源滤波器,其功能是让一定的频率范围内的信号通 过,抑制或急剧衰减此频率范围以外的信号。具有理想幅频特性 的滤波器是很难实现的。只能用实际的滤波器的幅频特性去逼近 理想的特性。常用的方法是巴特沃斯( Butterw

33、orth)逼近和切比 雪夫( Chebysher)13逼近。保证信号的原形,采用较平坦的巴特 沃斯有源滤波。高通滤波器的设计与低通滤波器相似,这里不再 叙述。 带通滤波器用高低通滤波器来构成, 如图 8 所示。高通滤 波器由 U3、 C2、Rdip11 组成,其截至频率为 f=0.03Hz,低通滤 波器由 U4、Cdip2、Rsop4 组成,截至频率为 f=110Hz。基于小型化和成本考虑, 硬件滤波只用一阶高通滤波器和一 阶低通滤波器,虽然设计了右腿驱动电路,但是仍然有 50Hz 干 扰进入电路,所以本设计增加了 50Hz 陷波电路,如图 9 所示通 过该方法来滤除工频干扰,实验结果表明,通

34、过高低通滤波后再 加上陷波电路的信号波形清晰、特征明显。图 9 50Hz 陷波电路3.5 电源电路的设计 电源电路是整个系统中十分重要的一环, 随着便携式产品的 普及,如何降低功耗成为工程师面临的急需解决的问题。如果电 源不稳定可能造成系统不能正常工作,严重的甚至烧坏芯片引发 事故。因此电源管理越发显得重要。电源管理是指如何将电源有效分配给系统的不同组件。 电源 电路设计主要考虑用哪种类型的电源器件,输入输出电压,输出 电流以及控制状态 15 。心电采集电路需要土 5V 电源,STM32 工作电压为 3.3V,本 设计用 7.2V电池供电,中正负 5V 电压可以采用 7805和7905来 产生

35、,它通过外围的电感电容的组合提供升满足运放使用的正电 压和负电压,图 10 是其典型应用。图 10 正负 5V 电源电路3.3V 的电压采用 AMS1117 产生,其最大的特点是简单易用, 而且性价比高,输入电压 5V12V ,直接输出 3.3V。电路如图 11 所示。图 11 AMS1117稳压电路4 便携式心电图仪的软件设计该系统的软件设计沿用经典的是模块化的编程思想, 首先根 据要求设计好系统的总软件流程,然后再分别实现系统各模块的 功能。在完成硬件电路设计和电路制作后,再进行整体的统一调 试。本章主要讨论系统软件在 STM32 上的编程与实现。4.1 软件开发平台Keil 是德国 Ke

36、il 公司(现已并入 ARM 公司)开发的微控制 器软件开发平台, 是目前 ARM 内核单片机开发的主流工具。 Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大 的仿真调试器在内的完整开发方案,通过一个集成开发环境 ( uVision )将这些功能组合在一起。 uVision 当前最高版本是 uVision3,它的界面和常用的微软 VC+ 的界面相似,界面友好, 易学易用,在调试程序,软件仿真方面也有很强大的功能。uVision3 IDE 是一款集编辑,编译和项目管理于一身的基于窗口的软件开发环境。 uVision3 集成了 C 语言编译器,宏编译, 链接/定位,以及 H

37、EX 文件产生器。如图 12 所示,是它的一个典 型的调试窗口,它主要包括以下几个窗口:图 12 Keil MDK 开发环境 工程区:用于访问文件组和文件,调试是可以查看 CPU 寄存器。 输出窗口:显示编译结果,以便快速查找错误的地方, 同时还是调试命令输入输出窗口,也可以用于显示查找 结果。 内存窗口:显示指定地址内村里的内容。查看和调用 堆栈窗口:用于查看和修改变量的值,并且现实当前函 数调用。代码窗口:用于查看和编辑源文件。 外设对话框:检查微控制的片上外设的状态。使用 Keil 来开发嵌入式软件, 开发周期和其他的平台软件开 发周期是差不多的,大致有以下几个步骤:1. 创建一个工程,

38、 选择一块目标芯片, 并且做一些必要的工 程配置。2. 编写 C 或者汇编源文件。3. 编译应用程序。4. 修改源程序中的错误。5. 联机调试。4.2 软件系统整体设计采用模块化的编程思想, 把整个软件系统化为为多个功能模 块,主程序通过调用各个子程序来完成复杂功能的实现。下面具 体介绍各个模块的实现。4.2.1 软件总体分析从整体上看,该系统软件分为两个大的部分:(1) 下位机软件即 STM32 应用程序。主要完成心电信号的 采集、信号滤波、 RTC 模块、液晶显示和串口通信等。利用模块 化编程思想分别来实现各个模块的功能,尽量减少程序之间的耦 合性,提高程序之间的内聚性。主程序是个无限循环

39、,通过调用 各个子程序来完成系统的功能。该部分总体开发思路是,首先完 成 STM32 片上资源的初始化,其次是完成各个子程序的编写, 最后主程序通过调用主程序完成所要实现的功能。(2) 上位机管理软件。上位机是运用 LabVIEW 编写的,其 功能是完成数据的接收和处理,其中主要包括对数据的接收、显 示和存储。处理是指利用 PC 机强大的数据处理功能对上传来的 数据进行处理并分析的结果。显示功能完成数据到波形的转换, 能够动态显示出心电波形。存储功能完成数据的保存。4.2.2 STM32 软件系统设计流程软件搭载在硬件上运行的, 硬件的资源多少在一定程度上决 定了软件的设计方法和复杂程度。由于

40、早期的单片机由于硬件资基于 STM32 的便携式心电图仪设计 源少,RAM 资源有限, 所以工程师在编程的时候对 RAM 的应用 要十分小心,因此造成这类的设计开发工程师更加偏向于直接用 汇编语言来控制硬件的工作。随着科学的发展,嵌入式系统的复 杂度的提高和 EDA 技术的发展,各种高级的 EDA 工具不断推出, 比如 Keil、IAR、ADS 等工具,这些工具不仅极大的方便了工程 师的开发, 同时也为用 C 语言这种高级语言来编写程序提供了有 利的条件。但是这种开发方式随着系统的复杂度的增高也变的愈 加吃力了,因为对开发人员要熟悉芯片的内部资源,能够进行寄 存器配置,这样就对工程师的要求比较

41、高。但是这些问题可以通 过移植操作系统来解决,操作系统的优势就是屏蔽了具体的硬件 细节,可以让开发人员把更多的精力放在应用程序上。本系统设计时考虑移植操作系统, 但是对于具体的应用存在 一些不足之处:首先,操作系统在对数据区的开销以及一些变量 的存储方面浪费了很多的 RAM 资源,有限的 RAM 资源就无法 有效的分配。 其次,STM32 方便的库文件开发方式本身就屏蔽了 硬件的细节,处于以上考虑在本次开发中没用移植操作系统,而 采用库文件的方式来开发设计。STM32 固件库是一个固件包,它不仅包括了程序、数据结 构和覆盖所有外设特性的宏单元。还包括设备驱动的描述以及各 个外围模块的实例,该固

42、件库可以使得用户在没有深入学习外围 模块规格手册的情况下,也能够使用任何在用户应用中涉及到的 设备。因此,使用该固件库可以节省设计者的许多时间,可使开 发人员把更多的精力花费在编程方面,加快了开发周期,减少了 在应用开发中的综合开销。这是 STM32 软件开发十分显著的优 点。实际应用开发时,我们用外设的时候一般有三个步骤,这里 以 ADC1 外设为例简单介绍一下开发流程:1、打开配置文件 stm32f10x_conf.h,打开 ADC1 的宏开关 #define _ADC#define _ADC1/这里选择了打开 #define _ADC123基于 STM32 的便携式心电图仪设计2、加载

43、stm32f10x_adc.c文件stm32f10x_adc.c 是 ADC 对应的库文件,对 ADC 的一系 列操作都在封装好了放在这类文件里。3、参数设置。包括配置采用周期、触发方式、工作模式、 数据存储格式等,开发人员只需根据所需要求在对应的参数位置 设置即可。一个简单的实例如下:/* ADC1 configuration */ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; / 独 立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;ADC_InitStructure.ADC_Continu

44、ousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigCo nv_T1_CC1;ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;/ 右 对齐格式ADC_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure);ADC_RegularChannelConfig(ADC1,ADC_Channel_14,1,ADC_Sa mpleTime_13Cycles5)

45、;其他模块的应用也类似于此,这样就屏蔽了寄存器配置细 节,加快了开发速度。4.2.3 软件总体流程图 软件设计流程分为两个大的方面,分别对应两个个界面: 第一个界面心电图显示界面,按键有上、下、左、右、中五 个按键,按键功能分配如下:上、下按键控制波形纵向移动和幅 值的变化,左右键是调节波形在时间上的周期变化,中间按键是 切换键,切换上下键控制幅值变化还是纵向移动。另一个界面是帮助界面,具体介绍各个按键的作用,具体流29程图如图 13 所示图 13 系统总体流程图4.3 信号采集程序设计心电信号的精确采集对于后面的进一步处理至关重要。STM32 的片内 ADC 是 12位的模数转换器,可以在

46、16 路模拟输 入中任选一路进行采样,其最高采样率为 1MHz ,心电信号的频 率较低,片内 ADC 足以满足系统采样定理的要求,这样可以提 高采样的稳定性和降低系统成本。程序流程框图如 14 所示。图 14 数据采集流程图转换后的数据存放在 ADC_RegularConvertedValue 变量里, 转换状态用全局变量 dmaflag 来标记, dmaflag0 代表转换未结 束, dmaflag1 代表转换结束。4.4 数字滤波程序设计数字滤波算法的实现是软件部分关键的问题, 它的运算时间 和精度直接决定了系统的实时性和数据的准确性。 本系统用 C 语 言编写了相对应的滤波算法程序来实现

47、对所采集的心电信号进行 数字滤波。滤波算法实际上就是用 C 语言来实现差分方程,为叙述方 面,把方程列出如下:yBP(n)=yBP(n-4)+x(n)- x(n-20)(1)yAP(n)=x(n-98)(2)yBS(n)=yAP(n)-yBP(n)(3) 可见关键是实现差分方程 (1),有式 (2)和(3)看出,当前输出 与以前数据状态有关,因此需要开辟缓冲区来存放以前的数据, 这里开辟三个缓冲区 Buff_bp4 、Buff_ap98和Buff_x20 分别存 放 yBP(n-4)、yAP(n-98) 、x(n-20)的数据。对于式 (1),Buff_bp4 数组里面存放的是前 4 次 yB

48、P(n)的值, Buff_x20 存放的是当前 采集数据的前 20 次的 x(n-20)数据,前 20 点的数据 yBP(n)都为 0,假设采集到第 20 点时,此时 n=20,把该点赋值给变量 14 。 Cur_val,数组 Buff_bp4 全为 0,数组 Buff_x20 里面存放了前 20 个点的数据,那么该点滤波后的数值这里让滤波后的数值存放 到变量 Fil_val ,则 Fil_val=Buff_bp0+Cur_val Buff_x0 ;然后 让数组 Buff_bp4右移,把数据 Buff_bp0 移除,把 Fil_val 的值 存入到数据 Buff_bp4中,同理让数组 Buff

49、_x20 右移,移除数据 Buff_x0 ,在把 Cur_val 存入到 Buff_bp20 中,这样就完成了一个点的滤波。软件流程如图 15 所示图15 滤波流程图4.5 液晶程序设计在本系统中采用彩色 TFT 液晶,波形显示清晰,界面良好。 液晶控制的关键在于编写底层驱动程序,底层驱动写好以后再封 装不同功能的函数,以后调用就很方便了。STM32 的 FSMC 模块是能够与同步或异步的存储器和 16 位 的 PC 存储器卡的接口,它的主要作用是:将 AHB 传输信号转换到适当的外部设备协议 满足访问外部设备的时序要求通过这样的方法就可以把液晶当作外部存储设备来使用, 通 过配置读写及控制信

50、号的时序,用指定指针就可以实现对液晶的 读写访问。这样处理不但简化了对液晶的操作,只需指定读写数 据的指针就可完成操作,而且提高了访问速度,避免了用端口模 拟时序访问液晶产生的滞后现象。并且 STM32 自带 FSMC 方式 控制 TFT-LCD 的实例,只需做一些相应的修改就可应用到本系统 中。显示的心电波形有两个基本要求:一是波形清晰,无断点, 二是波形无明显失真。在显示波形时需要解决三个问题:一是把 采集到的电压值转换成液晶上的高度;二是两点之间要连续;三 是刷新方式,刷新的一种方法是在波形显示到屏幕的最右边时整 个波形区域刷新为空,然后重新从最左边显示,另一种方法是边 显示边刷新,即在

51、显示的后边的一小块区域刷新为空,也就是边 显示边删除。相比较而言显然第二种方法比较好,因为整个区域 刷新是很费时间的问题,有可能影响画图的速度,而第二种方法 就有效的克服了这个问题,另外从实际效果来看,视觉效果也比 较好。针对第一个问题,实际上就是把电压值转换成点的坐标。本设计中用液晶 X 轴中间的部分来显示波形, X 轴坐标值范 围为 60180,而心电信号的电压值范围为 02V,则第一个问题 转化为把电压范围 02 映射到坐标 60180 的范围内。为了提高 精度可以把电压范围在程序内部处理时扩大 100 倍,则转换精度 为 P=200/120=5/3,设转换后的坐标为 xzb ,另外液晶

52、的坐标原点 在右上角,则把电压 Cur_val的范围 0200 转换到坐标 60180 之 间可以用以下公式: xzb=180 Cur_val*3/5 。对于第二个问题解决 的办法是在两点之间用直线连接起来,这样就需要把当前点的上 一个点的坐标记住,用两个变量保存设为 prxzb、 pryzb。5 系统调试结果及误差分析 经过软硬件的设计和制作,完成了基本的构架,但是还需经 一部的调试和分析才能进一步的完善该系统。5.1 调试手段 为检验各模块是否按要求进行正常工作,借助万用表、函数 信号发生器以及示波器来进行检测,通过测试结果完成对各个模 块完成功能的评估,对整体练调是一种很好的促进手段。当

53、硬件电路正常工作后,我们使用串口调试助手、 J-Link 进 行在线调试。串口调试工具是通过串行通信接口与主控芯片的进 行信息交互,其输出波特率与数据帧的格式都可以进行设置,具基于 STM32 的便携式心电图仪设计 有使用灵活、操作简便的特点。 J-Link 是调试 ARM 嵌入式系统 的常用工具。在每一部分程序调试通过后,对所有子程序进行整 合编写出完的主程序。在开发环境中完成程序编译之后,通过 J-Link 工具把程序代码下载到 STM32 处理器中,然后通过程序的 调试功能来进行程序的调试。使用 J-Link 工具的优点是:入门简 单、可以全面的观察程序中的参数和微处理器中各个寄存器的值

54、 和状态,特别适合软硬件联调阶段。5.2 测量调试以及分析 调试过程中需要对该电路的每一模块逐步进行调试,使其 完成各自的目标指数后方可整体联立进行综合调试。5.2.1 采集电路的测试采集电路主要是完成对心电信号的正确提取, 主要测试前置 放大电路即 AD627 的性能测试,带通滤波电路测试及陷波电路测 试等。(1) AD620 的性能测试差模增益 测量方法:差动输入端,正端接信号源信号,负端接地,输 入信号为 150mV,测量 AD620A 的输出端对地的电压,其值为 1020mV。差模增益为 6.8,与理论计算相一致。共模抑制比 测量方法:两输入端输入 50Hz 共模信号,测量输出端对地 电压。输入 1.78V 输出 0.17V,所以,共模增益为: 0.096。共模 抑制比为: CMRR=10/0.096=104dB。 符合心电仪器设计标准。(2) 带通滤波电路测试 测量方法:实际测量中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论