心音信号采集显示系统设计解析.docx
《心音信号采集显示系统设计解析.docx》由会员分享,可在线阅读,更多相关《心音信号采集显示系统设计解析.docx(38页珍藏版)》请在冰豆网上搜索。
心音信号采集显示系统设计解析
浙江万里学院
本科毕业设计(论文)
(2015届)
论文题目心音波形采集与显示系统设计
(英文)Thedesignofheartsound
waveformacquisitionand
Display
所在学院电子信息学院
专业班级电子信息工程116
学生姓名xx学号
指导教师职称
完成日期2015年4月15日
心音波形采集与显示系统设计
XX
(浙江万里学院电信学院电子116班)
2015年4月
摘要
在进入二十一世纪以来,随着国民生活水平条件的提高,不健康的饮食习惯和作息习惯等的共同作用下,心血管疾病对人们健康的威胁越来越大。
而心音信号作为在临床最常见的诊断心血管疾病的依据,其信号有一般比较微弱、且采集过程中也容易受外界干扰等特点,根据医务人员的知识和经验对听到的心音作出主观的分析判断,准确性较差,缺乏客观的指标。
故针对当前心音信号采集系统的不足,论述设计了一个以基于STM32单片机为控制核心,运用驻极体话筒、A/D转换、TFT显示、串口通信等技术手段的信号综合采集显示系统。
该系统首先采用传感器对人体的心音信号进行采集,然后经过信号处理电路对信号进行滤波放大等处理,最后通过控制电路将采集到的数据存储到单片机内部的缓存区中并在TFT液晶屏上显示。
结果表明,该系统能够采集到纯粹的心音信号,最后可以在采集系统的板载TFT液晶上显示出心音信号的波形。
这种对心音信号的实时显示功能,能够极大的非常方便医生对病人心血管疾病的诊断,另一方面也可以使的心血管疾病的诊断更准确。
关键词:
心音;传感器;信号处理;A/D转换;波形显示
Abstract
Inthe21stcentury,withtheimprovementofthenationalstandardoflivingconditions,unhealthyeatinghabitsandroutines,etc,underthefunctionofcardiovasculardiseaseismoreandmorebigthreattopeople'shealth.Theheartsoundsignalsasthemostcommoninclinicaldiagnosisofcardiovasculardisease,thesignalisgenerallyweak,andintheprocessofacquisitionissusceptibletointerferencecharacteristics,accordingtothemedicalstaff'sknowledgeandexperiencetohearheartsoundstomaketheanalysisofthesubjectivejudgment,accuracyispoorer,lackofobjectiveindicators.Therefore,aimingattheshortcomingsofthecurrentheartsoundsignalacquisitionsystem,thispaperdesignedAbasedonSTM32microcontrollerasthecontrolcore,usingtheelectretmicrophone,A/Dconversion,TFTdisplay,serialportcommunicationtechnologysuchassignalcollectionanddisplaysystem.ThesystemfirstUSESsensorstothehumanbodyheartsoundsignalacquisition,andthenthroughthesignalprocessingcircuitthesignalfilteringprocessing,suchastoenlargethefinalbycontrolcircuitwillbecollecteddatastoredinthemicrocontrollerintheinternalcacheareaandontheTFTLCDscreendisplay.Resultsshowthatthesystemcancollecttothepureofheartsoundsignal,finallycanbedisplayedontheacquisitionsystemonboardTFTLCDoutofheartsoundsignalwaveform.Thisreal-timedisplayfunctionofheartsoundsignals,itcangreatlyconvenientdoctortothediagnosisofpatientswithcardiovasculardiseases,ontheotherhandalsocanmakemoreaccuratediagnosisofcardiovasculardisease.
KeyWords:
Heartsounds;sensor;signalprocessing;A/Dconversion;Waveformdisplay
1 引言
改革开放以来,我们整个国家正在以远远超出我们预想的速度发展着,我们借此极大的丰富着自身的生活水平。
从以前的吃饱到现在的吃好,似乎只要我们想就能摄取到多少的营养的。
然而人们的生活观念却跟不上如此迅速发展的物质水平,开始有越来越多的人们因为老旧、不健康的饮食习惯造成身体出了问题。
而心血管疾病是这其中占绝大数的疾病,并且在我国心血管疾病患者已经是全球数量最多的。
甚至有研究表明,在未来五年内,心血管疾病势必将成为对人类健康威胁最大的疾病[1]。
与此同时,对自身健康的关注也是随着社会的发展而被越来越多的人们关注起来。
不只是局限于改善自我的饮食等生活习惯,并且还会定期去医院进行各项检查,以预防一些严重影响身体健康疾病。
但定期去医院做各项检查毕竟是繁琐和昂贵的,并且不是每个人都有如此的时间和金钱。
因此一些小型便携式的医疗设备开始进入部分人们的视线中。
随着越来越多的人们将更多的关注度放到自身健康上,便携式医疗设备的需求在不久的将来会急剧增大。
有需求便会有市场,心血管疾病作为我国目前患者数量最多的疾病之一,而对于其的预防和治疗的便携式医疗设备的市场需求应当是巨大的。
鉴于在可以预见的未来几年内,对于心血管疾病的预防和治疗将会是我国医疗卫生事业的重中之重。
本文研究了对心血管疾病的各种检测手段,发现现阶段的检测手段主要还是依靠做心电图等传统的方式。
一项国外的研究表明[2],医院里普遍做的心电图的数据是不能简单的用来判断心脏有没有发生不正常的变化,因为由心电传导组织不正常所引起的心脏机械活动障碍不会在第一时间反应到心脏电信号(ECG)变化上,却能够表现在心音信号的变化上,所以对心音信号的分析具有心电信号所不可替代的地位[3]。
医生在临床可以通过这些独特而鲜明的声音提供有关心脏情况的重要资讯。
通过对心音信号的实时监测,我们可以在患者的心音信号进入非正常状态的第一时间就开始医疗干预,而通常在第一时间得到的干预是最有效的治疗。
但是使用医用听诊器来诊断心血管病变不是简单的,它需要长期的训练以及深厚的经验[4]。
而现代科技的进步促使医疗行业的从业人员们学习使用高科技设备来对人体进行诊断,不再单单依靠医生的经验[5]。
针对心血管疾病这些特性,本课题主要的研究方向是便携式的心音波形采集与显示系统设计。
采用医用听诊器探头和空心皮管组合加上驻极体话筒收集心音信号,LM324运算放大器来实现信号的前端滤波放大模块,STM32单片机用AD采集收集到的心音信号并处理,控制液晶屏显示心音信号以及相关信息的显示,实现心音采集显示系统的设计。
本系统设计特点有
1、用医疗用听诊器听头结合驻极体话筒作为心音信号的采集设备。
2、用LM324运算放大器构成简单的心音信号信号前端信号放大滤波电路。
3、STM32作为高性能32位单片机用于信号的采集、处理、显示。
4、可实现心音信号的采集、显示以及存储。
5、留有可扩展接口方便数据的共享。
本文的主要章节分为:
1.绪论
2.总体设计方案
3.硬件设计
4.软件设计
5.总结
2 系统总体设计
本系统主要由心音信号部分组成,考虑到心音采集系统应有的便携、成本、可扩展、信号显示直观等特性。
系统的心音采集传感器选择驻极体话筒搭配常见的医用听诊器探头和空心皮管组合的方式。
采集到的心音信号转化成电信号经由前置放大滤波模块进行硬件放大滤波。
而系统的心音信号放大滤波模块采用常见的LM324运算放大器来构成。
系统的主控部分采用ST公司的STM32单片机作为主控芯片。
集成了A/D转换模块,最大72M的工作频率,各种完备的通信接口,更有FSMC可变静态存储控制器用来控制LCD屏幕。
本设计的系统框图如图2-1所示。
波形存储
图2-1心音采集显示系统框图
3 硬件设计
本系统主要由3个模块组成,分别是:
1)心音信号采集模块:
主要功能是将心音信号转化为模拟电信号。
2)心音信号放大滤波模块:
主要功能是将传感器产生的心音电信号进行放大滤波,滤除高频以及低频杂波,得到纯粹的心音电信号。
最后一级减法器电路将上级放大滤波得到的高于3.3V的信号减小至能被AD采集到的0-3.3V信号。
3)心音信号处理显示模块:
运用AD芯片将调制到0-3.3V的心音信号转化为数字信号,主控芯片再将信号存储到SPI-FLASH中以及串口实时发送数据至上位机,并将心音信号的波形在TFT液晶屏上实时的显示。
3.1心音信号采集模块
目前,专业的医生诊断心血管疾病时是借用医用听诊器听心音的方式。
听诊器于1816年被发明,已经有了两百年的历史,现在已成为内外妇儿医生最常用的诊断用具。
本系统的心音采集用具便是使用医用听诊器来收集心音,方便声音传感器接收到心音信号。
3.1.1心音信号传感器的选择
心音信号的采集系统最关键的就是对心音信号的采集,在采集到心音信号即已经将声音转化为模拟电信号之后,可以采取对心音传感器得到的心音电信号进行前级放大滤波,调制到合适的幅值,信号便可以被各种A/D芯片识别,转化成处理芯片可以处理的数字信号,接着才能对心音数字信号进行分析。
作为心音信号采集的系统,采集心音为设计首先需要解决的问题。
心音信号,即指由于心肌收缩、心脏瓣膜关闭和血液撞击心室壁、大动脉壁等引起的振动所产生的声音。
如何将这些振动产生的声音转化成计算机系统能进行处理的数字信号就得依靠声音传感器的作用了。
声音传感器有很多类,常见的有电容式、动圈式以及驻极体式话筒这几种。
这三种之中,电容式话筒的灵敏度是最好的,对声音的反应特性也最为均衡,但受制于工作原理,必须工作在加以极化的电压上,且对噪声的反应也不理想,成本也高;动圈式话筒价格便宜,但是性能较其他两类差,灵敏度低,频响较差;最后一类为驻极体话筒,它的灵敏度较高,价格也便宜,较为欠缺的是它的指向性不够好。
由于心音信号的频率范围为20Hz-600Hz[6],属于我们人耳所能听见的低频段声音人耳能听到的频带范围约20Hz~20KHz[7]。
本系统应该选择一款灵敏度高,抗噪声好,性价比高的声音传感器作为本系统的心音传感器。
经过综合比较之后,决定使用在这一频段声音特性最佳的驻极体话筒作为心音传感器。
3.2心音信号放大滤波模块
心音由心音传感器输出后的信号并不能输入到单片机内部进行处理,这一时期的信号可能相当微弱并且夹杂着非常多的噪声。
所以在信号送到单片机或者AD处理之前要先对信号进行放大和滤波。
在这一电路的设计上,我们选取了LM324,输入电压范围广,功耗小,可以单电源使用以及价格较为便宜的集成运放芯片,非常适合用于小信号的放大电路设计之中[8]。
3.2.1LM324运算放大器简介
如图3-1所示,LM324芯片内部集成了4个完全相同的运算放大器电路,封装是DIP14,即14引脚的双列直插封装。
芯片的4号,11号引脚为芯片的电源引脚,芯片内的四个运放公用这一个电源。
除此之外,这四个运放完全独立,互不影响。
图3-1LM324引脚图
如图3-2所示是一个单运放,LM324即由4个这样的单运放组成。
它有5个引脚,V+,V-是正负电源引脚,VI-是运放的反相输入端,VI+是同相输入端,Vo为运放输出端,Vi-引脚的输入信号与运放输出端Vo相位相反,Vi+引脚的输入信号与运放输出端Vo相位相同。
图3-2单运放
3.2.2心音信号前置放大电路
由于心音信号本身微弱且高内阻源,不稳定,所以要求心音信号的前置放大模块在输入心音信号时必须尽量减少对原始信号的影响,因此心音信号前置放大电路的输入阻抗必须要非常大,只有这样才能满足采集的要求,尽量少的对信号本身造成影响。
前置放大电路不仅要能不对输入信号本身造成影响,其电路本身也不能对电路产生大的噪声,且对温度变化的所造成的温漂都不能太大,以免性能不稳定,对输出造成影响。
在心音传感器采集过程中没法避免要和人体接触产生摩擦,而电路本身工作产生的工频信号等等也都会混入心音信号中,产生共模干扰[9],所以前置放大电路还需要有抑制共模干扰向差模干扰转化的作用。
心音信号前置放大电路如图3-3所示,端口P1的第三引脚为前端心音信号传感器的电信号输入端,为心音信号通过前置放大电路后经过OUT1端输出,输入后端的带通滤波电路的中。
考虑到心音信号在前置级增益过大的情况下,未滤除的噪声信号也将会被放大,这样不利于后端带通滤波电路的工作,整体电路的稳定性也将会受到一定的影响。
查阅资料知道心音信号幅值大概在±10mv[10]左右,STM32的AD信号输入为0-3.3V[11],所以为了保证能够有效的获取心音信号但又不影响系统整体稳定性,我们把前置放大电路的增益暂时调整为10倍。
如图3-3,系统的放大倍数为1+R6/R5,R6在图中为可变电阻,所以只需要将R6的阻值设置为R5的10倍,即10K即可使放大倍数设置为10倍。
图3-3心音信号前置放大电路
3.2.3心音信号带通滤波电路
心音信号经过前置放大电路后的输出信号并没有去除信号采集过程中夹带的工频干扰信号,心音传感器和皮肤的摩擦噪声干扰、人体呼吸噪音干扰、外部环境噪声、芯片工作所产生的干扰信号【10】以及前置放大器产生的失调漂移等。
这些干扰信号一并通过前置放大电路放大了十倍,如果不去除这些噪声,在后置的放大模块输出中,这些噪声不仅会淹没心音信号,造成系统的功能无法实现。
查资料可以知道人体内产生的心音信号频率范围为从20~600Hz[4],根据这一特性我们可以设计一个截止频率
的高通滤波器和一个截止频率
的低通滤波电路,通过这个带通滤波电路来滤除出20~600HZ以外的一系列干扰信号。
如图3-4所示即为截止频率为20~600Hz的心音带通滤波电路,图中的IN2端即为模块的输入端口,输入信号为从心音前置放大电路输出的心音信号。
图3-4心音带通滤波电路
3.2.4心音信号后级放大电路
STM32芯片内部A/D模块的输入电压范围为0~3.3V,心音信号从传感器传出时的初始电压经测量为几百毫伏,心音信号经前置放大电路10倍的增益后还未达到A/D模块的最佳输入电压范围,所以在经过无增益的带通滤波电路模块后需加一级后级放大电路,将信号调节到AD的最佳输入电压范围。
心音信号后级放大模块原理图如图3-5所示,其中IN4端输入即是OUT3端输出,输入的是通过带通滤波电路后,20~600Hz的心音信号。
OUT4端为心音信号经过后级放大电路后由P3端口输出到单片机的AD输入端口进行AD转换。
后级放大模块的放大倍数计算方法为R13/R12,在此可通过调节可调电阻R13的大小,获得相应的放大倍数,图中设计的最大放大倍数可达10倍。
另外在整个电路的设计过程中应预先设有高于计算值的增益空间,这样才能在实际的电路制作调试中对各级放大模块的放大倍数进行微调,达到最佳效果。
图3-5心音后级放大电路
3.2.5心音信号放大滤波电路PCB绘制
如图3-6所示为整个心音放大滤波模块的PCB绘制图,制作工具为目前最流行的AltiumDesigner10。
因为系统要求不高以及实验室制作PCB的条件限制,我们采用了单面板进行布板,在绘制过程中不仅要考虑芯片的排版与走线之间的配合,还要考虑好信号的流向是否一致,以防出现干扰信号对系统造成影响。
图3-6心音前置放大电路PCB
3.3心音信号处理显示模块
信号的处理与波形的显示都是需要借助单片机来完成的。
所以单片机是这一部分的核心,它的性能直接关系到系统各个模块的功能是否能有效运作。
下面将对系统的单片机选择进行介绍。
3.3.1CPU的选型
本系统所选用的单片机是ST公司的STM32系列单片机,具体型号为STM32F103VCT6,它采用了基于ARMCortex一M332位的高性能RISC内核,工作频率最高可以设置到为72MHz,执行代码的效率为1.25DMips/MHz,而ARM7、ARM9为0.9DMips/MHz,相比而言STM32的代码执行效率比ARM7/ARM9高出30%。
芯片采用了LQFPl00封装,多达80个用户可用GPIO;除了模拟输入I/O,其他通用数字管脚可以承受5V信号的输入。
同时该芯片内部还包含了256KB的Flash容量,48KB的SRAM空间供用户使用。
为方便使用这些资源,芯片内部集成了灵活的静态存储器控制器,除了支持SD卡、SRAM、PSRAM、NOR和NAND存储器协议外,还可以用来模拟LCD接口6800/8080等类似协议。
当然该芯片内部还集成有非常丰富的增强型外设,包括了3个12位16通道的ADC,以及两个12位的DAC转换器;12通道的DMA控制器,还有16位高级定时器、基础定时器;2个硬件12C、3个硬件SPI、2个rS、1个SDIO控制器、5个USART串口、1个USB2.0接口和1个CAN总线协议,基本可以囊括市面上所有常用的通信协议,非常适合应用与工业控制领域;此外,该芯片还拥有非常宽的供电范围(2.0—3.6V),工作温度为-40℃—105℃,足够满足工业应用的需要。
由于本系统需要将心音传感器收集到的模拟电信号转化为单片机能够处理的数字信号,所以系统需要用到A/D转化功能。
可以选择STM32内部的12位A/D转换器,也可以在系统中选择外置A/D转换芯片进行A/D转换。
权衡性能和成本,我们最终选择使用STM32内部的12位A/D转换模块。
3.3.2单片机最小系统及外围电路设计
STM32单片机最小系统是非常简单的,只需要在芯片外围加上复位电路、晶振电路以及下载电路即可组成一个STM32最小系统。
甚至如果是在对工作频率要求不高的系统中还可以简化外部晶振电路使用芯片内部的晶振。
如图3-7为以STM32F103VCT6芯片为主控的STM32单片机最小系统。
图3-7STM32VCT6最小系统
图3-8STM32最小系统PCB图
4 软件设计
心音波形采集与显示系统软件系统主要包括系统初始化模块、万年历模块、LCD显示模块、ADC采集模块以及GUI波形显示模块。
4.1开发环境简介
KeilMDK,也称MDK-ARM,RealviewMDK、I-MDK、uVision4 等。
目前KeilMDK由三家国内代理商提供技术支持和相关服务。
MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。
MDK-ARM专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用。
如图4-1所示为MDK的界面图。
界面左侧的窗口为工程文件管理窗口,用于管理工程文件。
界面标题栏下分别为菜单栏以及工具栏,界面右侧的大窗口为文本编辑窗口,用于键入代码。
界面最下的窗口为编译信息输出窗口。
用于在编译工程文件时输出编译的一些相关信息。
图4-1MDK工作窗口
4.2主体程序部分以及流程图
系统主程序流程图如图4-1所示。
N
Y
图4-1总体系统程序流程图
该程序主要实现了系统的初始化(包括时钟、按键、串口、LCD、RTC以及ADC的初始化),系统时间的显示,波形坐标以及UI的显示,心音信号的周期ADC采集,心音波形的显示以及更新等功能。
为了最大的简化主程序,使main程序简练易懂,我们把各个模块的代码分别封装在子程序中。
ST公司为STM32制作了可以供用户任意调用的库函数,用户只需要调用功能已经封装好了的库函数就可以完成复杂的操作,极大的减少了编程人员的工作量,简化了系统开发复杂度。
如本系统的串口模块的设置就只有几句代码,之后就只需使用printf函数便可以使用串口发送数据。
系统主体代码如下:
intmain(void)
{
u16i;
STM_Init_All();//系统模块初始化
while
(1)
{
Time_Date_Show();//因为时间和日期动态显示,必须在主循环里面
X_Y_ZuoBiao(RED);//绘制X,Y坐标,线条颜色为红色
for(i=0;i<=320;i++)//ADC采集320个点的心音信号
{
Wave_Value[i]=Get_ADC_Value();//将采集到的数据放到缓存数组中
printf("%d\n",Wave_Value[i]);
delay_ms(10);//每次采集相距10ms
}
Clear_Wave(BLACK);//擦除上次显示的波形,擦除部分采用黑色填充
Show_Wave(YELLOW);//显示最新的波形,波形颜色为黄色
}
}
4.3系统初始化模块
函数名称:
STM_Init_All
功能:
初始化所有配置
voidSTM_Init_All(void)
{
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//只SW使能,JTAG失能
/*--------程序里面的SYSTEM初始化操作----------*/
SystemInit();//芯片时钟频率,滴答定时器初始化
delay_init();//延时函数初始化
uart_init(9600);//串口初始化为9600bps
/*--------HARDWARE初始化操作-------------------*/
LCD_Init();//对LCD模块进行初始化
RTC_Init();//读取备份寄存器保存的RTC数值
Adc_Init();//里面包含