1、光电系统课程设计设计题目 光电脉搏血氧计设计_ _ 摘要血氧饱和度与脉搏频率检测仪是一种可对动脉血氧饱和度和脉搏频率进行实时检测的医 学检测仪器,血氧饱和度是指血液中氧合血红蛋白占总血红蛋白的比例,可以直接反映人体的 氧代谢状况,而脉搏频率反映出人体心脏的跳动情况,二者均是医学监护的重要指标。本文以 嵌入式Cortex-MO内核为核心,充分利用微处理器STM32F051的片上外设资源,并辅以微分阈 值算法,对血氧饱和度与脉搏频率参数进行采集、处理和显示,设计出一个低功耗、高精度的 血氧饱和度与脉搏频率检测系统。关键词:血氧饱和度、STM32F05K滤波电路、微分阈值算法目录摘要.I绪论:.2一
2、、技术指标:.2二、基本原理:.3(1)、朗伯-比尔定律:.3(2)、光电容积理论:.4三、系统总体设计方案及论证:.7四、硬件电路设计:.91、系统硬件整体框图:.92、电源电路:.93、光源驱动电路:.114、模拟电路设计:.12(1)、模拟电路整体设计:.12(2)、IV转换与前置放大电路:.12(3)、带通滤波电路:.13(4)、二次放大电路:.14(5)、交流放大与直流偏置电路:.145、数字电路设计:.15(1)、ARM微控制器:.15(2)、串口调试电路:.16(3)、人机交互电路:.17五、软件设计.19(1)、软件整体架构及流程图:.19(2)、软件开发平台简介:.21(3)
3、、硬件初始化模块:.22(4)、血氧采集模块:.22(5)、数字信号处理模块:.23(6)、液晶显示模块:.24(7)、程序其它模块:.25六、测试报告:.26(1)、硬件电路测试:.26(2)、软件算法测试:.28(3)、整体系统测试:.32七、结论:.35八、心得体会:.36九、参考文献:.38附录一:电路设计原理图.39附录二:印刷电路板图.40附录三:元器件清单.42附录四:部分源代码.431绪论:从生理学角度来讲,氧是维系人类生命活动的基础,血氧饱和度(SP02)是衡量人体血液携带氧能力的 重要参数,检测动脉中的氧含量可以判断人体呼吸系统、循环系统是否出现障碍等情况。正常情况下,动脉
4、 血液中的氧分压约占总含氧量的2%。其余大部分的氧与动脉血液中的血红蛋白结合成为氧合血红蛋白,血 氧饱和度就定义为氧合血红蛋白在动脉血液中所占的比例。氧饱和度的测量有无创和有创两种方式,由于 有创测量法需对人体进行穿刺采血,易感染、非实时、临床上更多的采用无创检测法。无创检测血氧饱和度的方法有很多,其中应用最广泛的是基于红外光谱的脉搏血氧饱和度检测技术,该 技术是利用鉴氧合血红蛋白和还原血红蛋白在红外光区、红光区有独特的吸收光谱,利用光谱分析出血氧 饱和度,从而实现对生物体的无损检测。本文以ARM嵌入式系统为平台,以红外光谱技术为检测原理,采用 微分阈值信号处理算法优化脉搏峰值提取,经实际样本
5、测试,对脉搏频率与血氧饱和度均取得了较好的检 测效果。一、技术指标:监测参数:血氧饱和度(SP02)、脉搏频率(PR)SP02测量范围:0100%SP02测量分辨率:1%SP02测量精度:5%PR测量范围:50200 bpmPR测量分辨率:lbpmPR测量精度:5bpm电源要求:USB供电或9V电池供电工作电流:300MA其它功能:脉动波形显示2二、基本原理:无创血氧饱和度与脉搏频率测量原理是基于动脉血液对待定光波的吸收量随动脉搏动而变化的原理,在医学上,血氧饱和度用来描述血液中氧含量的比例,血氧饱和度是指血液中氧合血红蛋白占总血红蛋白 的百分比,即:cSpO2=-%X100%C HbOz+C
6、 Hb其中C HbO,和 Hb分别指氧合血红蛋白和非氧合血红蛋白的浓度。由于动脉血液对待定光波的吸收会随动脉搏动而呈现周期性的变化,可以通过对相应光谱的检测将这 种周期性的变化转化为数字量,通过对数字量的特征提取从而计算出生物体的脉搏频率。脉搏血氧饱和度检测技术主要依据两个物理理论:(1)朗伯-比尔定律:光通过物质时,它的强度或多或少地会减弱,这种现象叫做光的吸收。下面先讨论溶液对单色光的吸收 规律,进而讨论溶液对不同波长光的吸收特性,实验证明,当单色光通过溶液时,透射光的强度I符合下列 规律:1=IQe-CD上式称为郎伯-比尔定律,简称比尔定律,式中/和/()分别代表透射光与入射光强,为溶液
7、吸光系数,与吸光物质的种类有关,c为溶液中吸光物质的浓度,。为光程。式表明:当c、。、/()不变时,越大,/就越小,即该溶液对光的吸收越强。由此可知:溶液的大小反应了该物质吸光能力的强弱。另外,还 与入射光的波长有关,若采用双波长光源,可以消去光路长度对透射光的影响,这一特性将在监测血氧中利 用。上式还表明:透射光的强度/与溶液浓度C有关,当C、D、/()不变时,C越大,贝I越小,透射光越 弱,即光被吸收越多。做浓度测量或血氧饱和度测量时,正是利用这个特征,通过测量光强从而求出浓度 Co在生物学和化学中,应用比尔定律时,通常把它改写成另外的两种形式:3A=In=sCDC=7B式中,A表示吸光度
8、。当单色光通过溶液时,如果完全不吸收,则A=0,如果吸收越多,则1越大因而A也就越大,即吸光度也越大。由于与溶液浓度和溶液厚度的乘积CD成正比,比例系数为光吸收系 数,上诉两式是比尔定律的不同表达式。如果我们测量出吸光度A值,利用式就可以很容易的算出浓度C 来,所以在实际测量中,常用上式。(2)、光电容积理论:当利用一束特定波长的光束照射到人体指端皮肤表面,并以透射或反射方式传送到光电接收器时,由于 受到指端皮肤、肌肉和血液等成分的吸收作用,检测器检测到的入射光强度将发生衰减。因此,接收器所得 光电信号强度主要由两部分决定,图示为由射光强动脉示意图:图表1:透射光强脉动示意图41、直流分量(D
9、C)。皮肤、脂肪、肌肉、骨骼等非血液成分组织在心循环中基本保持不变,它对光的吸 收散射和衰减作用也基本保持恒定不变。2、交流分量(AC)。动脉血在心循环中呈周期性脉动变化,外周血容量变化使光电接收器接收到的动脉 血信号是周期性的脉动。依据以上理论,选用两个波长的光(660nm与960nm)作为探测源并分别测定两路透射光最大强度(近 似于直流分量DC),以及由于脉搏搏动而引起的透射光强最大变化量(近似于交流分量AC),通过与式2联 立,代入1可得:c 入 1 max 21 mA_GNDVCC D-D-IDGND2UD-UD+A、USB供电:在前期调试过程中肯定需要频繁烧录程序和与MCU交互,此时
10、使用USB供电易于调试;B、电池(P2)供电:当程序完成后,可使用电池供电,体现其便携性;C、外接(P1)供电:在有稳压源的情况下,可接入给系统提供电压;(2)、由于接入系统的电压一般在5V以上,而整个系统需要3.3V供电,故需要稳压电路。目前稳压有两种 9方法:一是采用线性稳压芯片,二是采用开关稳压电路;采用线性稳压芯片方案的优势是成本较低,外围电 路简单,缺点是稳压效率低于开关稳压电路,而开关稳压电路方案的优缺点正与此相反。为降低成本且考虑到整个系统电流不大,决定使用线性稳压芯方案,采用一片LM1117-3.3V做系统稳压源,查阅芯片资料得知其最大可提供800MA的电流,足以系统使用,电路
11、原理如下:(3)、由于本次设计中运放采用双电源供电,考虑到运放工作电流不高,决定采用集成电压反相器芯片U4 V3.3 V-3.32J+C9-ICL7660CAP-v+VOUTNCLVOSCCAP-kJix U86+C12_ IOuF+,Igci3 lOuF.一|-A_GNDICL7660将3.3V变为-3.3V,经实际测试,在带负载的情况下,其可输出约100MA的电流(可满足运放要求),且输出纹波在可接受范围之内,电路原理如下:(4)、由于本设计是混合电路,既有模拟部分又有数字部分,而且脉搏信号较为微弱,易受到噪声的干扰,这就要求在设计中将模拟部分与数字部分隔离开来,在本次设计中主要利用磁珠来
12、实现隔离,电路原理如下:A GNDV:3LI%_.)D C6 03C2阪二C3T04=120R/100MHZ+C4 _lOuFL2._r r _.C574 二120R/100MHZD GNDL1与L2是120R/100MHZ的磁珠,L1主要将系统3.3V供电中的高频噪声滤除后接入MCU的AD模块参 10考电压VREF,L2将数字电路“地”与模拟电路“地”隔离开来,并严格保障二者单点相连;3、光源驱动电路:本设计血氧光电发射管采用Measurement Specialties公司生产的660/905nm血氧发光管与硅光电池收管,如图所示:发射管(左)与接收管(右)-发射管内部原理图由于发光管LE
13、D是电流型器件,需要高于20MA的电流才能发光,而微控制器10 口的拉电流能力很难满足LED电流需求,故采用三极管桥式电路进行驱动,如图所示:A_GNDLED驱动图中LED_D1与LED.D2分别为红光和红外光的驱动信号,根据三极管的导通特性:当LED_D1为低电平、LED_D2为高电平时,即Q2导通、Q3截止时,红光发光二极管被点亮;当LED_D1为高电平、LED_D2为低电平时,即Q2截止、Q3导通时,红外光发光二极管被点亮;11在其余所有可能情况下,红光和红外光发光二极管都没有可能同时导通发光,也就是说在硬件方面保障 了两个发光二极管的正常发光;4、模拟电路设计:(1)、模拟电路整体设计
14、:(2)、IV转换与前置放大电路:电路如下图所示,对于接收探测器,本次设计采用的是硅光电池反偏模式,由于硅光电池是电流型器件,故在光电池正向端与地之间串入一电阻将电流变化转化为电压变化,从而实现了 I-V转换;I-V转换与前置放大由于人体脉动电信号中交流分量很微弱,故首先进行前置放大,放大电路采用正向比例放大电路,但由 于所得信号中包含较大的直流分量,故第一级放大倍数不易太高以防止运放输出饱和,本次设计的前置放 大倍数为:12A=l+立标 4.3 凡(3)、带通滤波电路:人体脉动输出信号中包含有各种高频噪声且需要将脉动信号中的直流分量和交流分量提取出来,故需 要对其滤波处理,滤波分为低通滤波和
15、高通滤波两部分,相关电路如下图所示:带通滤波1、低通滤波部分(图示左半部分):低通滤波器担负着抑制广谱噪音和AD转换之前抗混叠的双重任务,两者都要求低通滤波器的通带尽可 能地平坦,滚降速率越快越好。低阶滤波器结构简单易于实现,但衰减特性较差,要使衰减特性陡峭就应该 选用高阶滤波器,随着阶数增加,陡峭度不断增加,一般每增加一阶转折区的下降速度就会增加-20dB/Dec(-20dB每十倍频)。常用的高阶滤波器有巴特沃斯滤波器、贝塞尔滤波器、切比雪夫滤波器。三者相比贝塞尔 滤波器过渡区大,过渡区下降速度不快、不陡;而切比雪夫滤波器从通带到阻带的过渡很陡,但带内有纹波;巴特沃斯滤波器转折区斜率较贝塞尔
16、滤波器大,较切比雪夫滤波器小,但频率相应平坦。本次设计用二阶巴 特沃兹低通滤波器就可以获得较好的滤波效果,其阻带衰减特性的斜率为-40dB/Dec。血氧饱和度信号在15Hz以下脉搏波能量衰减基本达到-40dB。在8Hz以下能量衰减达到-35dB。其95%的能量主要集中在0-6HZ之间,因此对光电脉搏波进行低通滤波处理时,滤波器截止频率可选择在20Hz 左右,这样可以在不改变脉搏波主要成份的同时,尽量消除由于外界电磁场、电源引起的干扰,以及削弱由 血管振动和身体运动引起的运动伪差干扰,从而便于脉搏波正确检出和测量。根据上述,在本次系统设计中,决定选用巴特沃斯二阶滤波器,截止频率为:f=-=-10
17、/7z2 冗 RC 27TX160X10-4低通滤波后的信号分为两路:一路作为计算脉搏血氧饱和度所需要的直流分量(AD_DC)送入MCU采 13集,另一路进入高通滤波电路部分用于提取直流分量。2、高通滤波部分(图示右半部分):经过低通滤波后容积脉搏波信号含有伏特级的直流信号和毫伏级的容积脉搏波交流信号,将此信号采 集进计算机后就可以作为计算脉搏血氧饱和度所需要的直流成分。为了获得计算脉搏血氧饱和度所需要的 交流成分,我们还需要将低通滤波后容积脉搏波信号进行高通滤波,滤去直流成分,随后将高通滤波后的信 号进行交流放大和直流偏置后就以作为计算脉搏血氧饱和度所需要的交流成分送入MCU进行AD转换。为
18、 了取得较好的滤波效果,这里采用二阶高通滤波器,其阻带衰减特性的斜率为一40dB/Dec,克服了一阶高通 滤波器阻带衰减太慢的缺点,在本系统设计中,决定选用巴特沃斯二阶滤波器,截止频率为:f=_1 0 1Hz27iRC 2x100 x4.7x10-3,(4)、二次放大电路:为防止最后一级交流放大倍数不足,信号经过带通滤波后可以选择性进入二次放大电路中进行交流放 大与高通滤波,高通滤波部分可以有效去除上级电路中由于运放自身带来的直流偏置,可以提高电路的性 能,属于可选部分,电路原理如下图所示:二次放大(可选)(5)、交流放大与直流偏置电路:电路如图所示:经过高通滤波电路提取的交流信号属于mv级,
19、为提高信号的可分辨性,故首先对其做14正向放大,放大倍数为(实际去A=100):RA=1+1014交流放大&直流偏置经过放大后的信号中含有负交流分量,而MCU是无法转换负电压的,故在信号的最后一级加入直流偏 置电路将交流信号的基线进行整体偏移,通过调节电位器RN1可将交流信号幅值调节至033V以内,进而 MCU可对其做AD转换,分析电路有:5、数字电路设计:(1)、ARM微控制器:ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片
20、生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计 的ARM微处理器核,依据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯 片进入市场。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,因此既使得ARM技术获得 更多的第三方工具、制造、软件的支持,又使整个系统成本降低,从而使产品更容易进入市场被消费者所接 15受,更具有竞争力。ARM面向不同领域拥有多种内核,其中面向小型嵌入式设备的内核主要为Cortex-M系列,在本次设计 中,采用了意法半导体推出的基于Cortex-MO内核的STM32F051R8芯片,其采用ARM
21、V6-M架构,拥有低功 耗、高性能的特性,相对于普通8051内核的八位单片机,STM32051R8拥有以下特点:(工)、性价比较高:STM32F051与C8051F310价格相差不大,但STM32F051拥有更为强大的外设和速 度(48MHZ主频且指令采用三级流水线结构);(2)、AD性能:STM32F051能提供12位分辨率的AD,口内部设计有专门的振荡器用于AD,其可以在 lus内完成一次转化;(3)、支持DMA操作:这对AD采集有极大的帮助;相关原理图如下:(2)、串口调试电路:微控制器MCU与计算机PC进行数据通信的方式有很多,在本次设计程序调试初期,需要MCU将大量 AD采集到的数据
22、发送给计算机处理,在众多交互方式中,串口成本低廉,易于使用,本设计也采用串口作 为交互工具。串口采用RS232接口标准,但现在计算机上大都已没有RS232接口,随着USB接口的普及,现在常用 的串口电平转换方案是将USB信号转为RS232电平,在利用MAX232芯片等将RS232电平转化为TTL电平,但在本次设计中系统不需要与RS232接口标准的设备通信,故本次采取将USB数据转化为TTL电平来实现 16MCU与PC机父互的设计方案,USB数据转TTL电平主要利用CH340T芯片,自己在以前所做项目中大量使 用过该芯片,经实际测试其性能稳定。相关电路如下:U2V3.3J.rUU RXCIO22
23、PFA_GND.|lCH340TTXDvccCKOV3RXDR232ASNC.UD+RTS士NOS#DTR#UD-DCD+DSRGNDCIS#RI#XIXOOSC1HQF-12MHZ19117_C11_ C8Q4Y_SWDAT2 SWCLK|lA-GND RESET22PF(3)、人机交互电路:无论何种嵌入式系统,只要有人的参与,都需要进行人机交互,本次设计也不例外,本次设计中采用按键、LED、蜂鸣器、TFT液晶作为交互源,相关原理图如下:m3 G_)s二 u,r ruaA3 3.VJnNq8 6 一一一 一一一 一 2Q 20 CC Cm Cm 2m mD cQ 2 Cm Cm 22 22
24、QQ CD CD aauuuaaaau uaaaaaz zD OFT18五、软件设计(1)、软件整体架构及流程图:软件系统设计是在基于ARM微控制器的嵌入式硬件平台的基础上,综合嵌入式平台的各种软硬件资源 进行的整体设计,从而实现系统的各种功能。在实现过程中,依据模块化设计思想,将各种功能要求进行分 类并安排到不同模块中实现。软件系统流程图主要介绍用户程序的整体框架,各个模块的详细设计将在下 面几节介绍,流程图如图示:主程序与中断程序主程序中断程序19初始化子程序数据处理子程序采样子程序子程序20(2)、软件开发平台简介:本次设计的软件平台采用EclipselDE,Eclipse是著名的跨平台
25、的自由集成开发环境(IDE)。最初主要用 来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难 具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDEo对于嵌入式开发,Eclipse IDE主要起到编辑代码的作用,其相对于Keil,IAR等集成IDE具有界面友好,代码提示,快速跳转,语法高亮等一系列高效功能,这也是本次设计选用其做IDE的主要原因。但其自身并 无交叉编译工具链,要想实现ARM的开发,就必须辅以交叉编译
26、连,用于嵌入式ARM开发的编译工具链有 很多,常用的如CodesourceyG+、ARMCC等,本次设计主要选用ARMCC编译链,主要原因是其为ARM官方编译工具,且与Keil兼容,相关界面如下:(c)Co pyright Eclipse co nt ribut o rs and o t hers,20g 2014,All right s reserved.Eclipse I is a t rademark o f t he Eclipse Fo undat io n,Inc.Oracle and Java are regist ered t rademarks E o f Oracle an
27、d/o r it s affiliat es.Ot her names may be t rademarks o f t heir respect ive o wners,I名称修改日期Fl armar.exe2013/6/2.Fl armasm.exe2013/6/2.日 armcc.exe2013/6/2,.回 armlink.exe2013/6/2,.3 clean.exe2013/4/1,.叵3 fro melf.exe2013/6/2.H make.exe2011/2/3.逊geo n-H:;t.白I”Y*心Pro j.el Explorer g 3B%l IF P而 GDKCSJ-
28、3 GDKCSJJCV:&Indudest J CMS1S CoreGbd Debug8 9 Driver inc/src母 Dat o_Get _AD.c DSPx FLASH.W25X32.C PwpheraLc st m 32fO51 _t mede TFT.GULc TFTJU9481.C Uart ct -Linker3User a inc&src国 DriverJnit cjcl fTMirt X 囱 user.csx C5.t Xtnain.e 值0 c 区|值 TPT_CUI c DSP h 函数功能:究分阈使算法与差值提取声法 魁爹数:OriDat aSapleSize:待处
29、理数但;-Freq:频率番数指针;Delt a:是值空数师十:返回值:无 作者:陈浩 2014,6.8void DSP Process(vo lat ile uint l6 t OriDat aSample_Sizef uint 8_t Freq,uint 8 t*Delt a)(/.定义局部受./uint 8_t j,PeakLen.0;ulnt l6_t 1=0;ulnt 32_t MinValue=Min_Value,MaxValue=MaxValue;uint 32_t Peak=0,Time=0,PeakPos15,MinPos15,KaxPosflS,Delat e_Gat e;i
30、nt 32_t t;flo at Delt aTemp=0;/.-.阈值WS,用于网周期.一”/if(OriDat a=Sample IRD_ADVa2u)Delat e_Gat e=IR_DELGATE;elseDelat e_Gat e=RED_DELGATE;fo r(i-St ep;i Sample Size;lw)(t=OriDat ai-St ep-OriDat ai;悔分整(fiprint fCXdXrVn*,t);ix/、一d、“.oaaxx,业Pr-Tuks Q Consol*:Prcpert mCDT Build Console GDKCSJ.XYJInfo:Not hin
31、g t o build fx GDKCSJ_XYU DSP.h SPO:uint B.t O 7 SampleJRED.ADValu v Sat nple.RED.ADVakM Sigml.ProcessingCuin DSP.Filt effvoUt de uim DSP_Proces(voht 3e Frequence_Revise(uin SP_Revi$(uint 16_t);Writ able Smart Insert 64:81Q遇小二中国 必21(3)、硬件初始化模块:程序经过堆栈设置与时钟设置之后进入main。函数,在main。函数中,首先对各外设进行初始化以保证其正确工作,其
32、功能函数与端口配置包含在Driver_lnit.h与Driver_lnit.c中,定义的功能函数如下:AD_lnit():AD初始化LED_lnit():LED初始化IRLED_lnit():血氧发光管初始化KEY_lnit():按键初始化BEEP_lnit():蜂鸣器初始化UARTl_lnit(115200):串口初始化TIM3_lnit(5):TIM3定时器(5ms)初始化Systick_Delaylnit():精确延时初始化SPI_Device_lnit():SPI初始化TFT_lnit():液晶初始化(4)、血氧采集模块:血氧采集模块主要负责驱动LED发光管和以及数据的A/D转换,其功
33、能函数和端口配置包含在Data_Get_AD.h与Data_Get_AD.c中,采集均在定时器中断(5ms)中完成,相关代码如下:/*函数功能:TIM3定时器中断处理函数,用于采集AD数据*输入参数:无*返回值:无*作者:陈浩 2014、6、8void TIM3_IRQHandler(void)static uint32_t num=0;采样数,静态变量TIM-ClearlTPendingBiTIMS,TIM_IT_Update);清除 TIM3 中断标志位if(num DR;红外光数据else if(Sample_Flag=1)22Sample_RED_ADValuenum=(uintl6_
34、t)ADCl-DR;elseLED4_0N;num+;)else(ADC_StopOfConversion(ADCl);TIM_Cmd(TIM3,DISABLE);LED_REDIR_OFF;num=0;Tim_Flag=1;).)红光数据错误情况下点亮LED4停止AD转换关闭定时器关闭发光管清除采样数以实现下一次采样采样结束置位标志位(5)、数字信号处理模块:数字信号处理模块主要功能是:对采集到的AD值进行均值滤波,对滤波后的数据进行微分阈值以找出 脉搏周期,同时计算出交流分量的最大与最小值以计算血氧饱和度,其功能函数与端口配置包含在DSP.h与 DSP.c中,定义的功能函数如下,具体代码见
35、附录:A:DSP_Filter(volatile uintl6_t DataSample_Size):函数功能:线性平滑滤波算法*输入参数:DataSample_Size:待滤波数组*返回值:滤波后的数堀传入ProBuffer数组*作者:陈浩 2014、6、8线性平滑滤波算法,其本质就是迭代平均,具体实现方法是:将某个点的前N个点与后N个点相加求 和后平均作为该点的更新值,经测试,该算法对信号中的震荡因素有较好的消除效果,具体对比会在下文中 阐述。B:DSP_Process(volatile uintl6_t OriDataSample_Size/uint8_t*Freq,uint8_t*De
36、lta):/*函数功能:微分阈值算法与差值提取算法*输入参数:OriDataSample_Size:待处理数组;*Freq:频率参数指针;*Delta:差值参数指针;*返回值:无*作者:陈浩 2014、6、8微分阈值算法与差值提取算法,该算法是计算脉搏周期与血氧饱和度的核心算法,由于在测量过程中,被测者的手指会轻微移动,这可能造成短时间的采样错误,具体表现为:峰值震荡,基线漂移等等,此时若 利用最值间隔提取脉搏周期就会不可避免的产生错误。经过测试发现:短时间内的移动虽会使波形的最值发生改变,但基本不会改变波形的边沿,本算法就是 23利用微分运算突出边沿,虽是微分运算,但并不涉及除法,只是在单位
37、时间间隔内将第m点与第m+n点做 差值,经过一系列判断后找到差值最大时所对应的时间间隔,这样最少通过三个周期就可将脉搏间隔提取 出来,由于脉动波形的边沿抗噪声干扰能力较强,故本算法对噪声的容限能力也很大,经过实际测试,在一 定范围内计算出的脉搏频率都在误差范围之内。对于波形最值得提取,本次算法采用常规方案,通过比较迭代来找出最大与最小值,其过程与微分阈值 算法的判断过程类似,在此就不再阐述,具体代码可见附录。C:void Signal_Processing(uint8_t*H_Freq,uint8_t*SP)/*函数功能:信号处理*输入参数:*H_Freq:计算出的脉搏频率变量指针,*SP:计
38、算出的血氧饱和度变量指针*返回值:无*作者:陈浩 2014、6、8数据处理函数,本函数由主程序调用,其返回计算出的脉搏频率和血氧饱和度。具体实现方法是:利用 A,B函数对红光数据与红外光数据进行处理,二者会分别计算出脉搏频率和交流分量差值,本函数对二者 计算出的脉搏频率进行平均,并利用交流分量差值计算血氧饱和度,定义R为红光差值与红外红光差值的 比值,利用二次拟合计算血氧饱和度,计算公式来自某文献,具体为:*SP=107.2296-5.387*R-15.6715*R*R;(6)、液晶显示模块:TFT显示模块功能函数主要实现TFT字符和图形的显示,其功能函数的定义和TFT模块的相关配置包含在 T
39、FT_IL9481.h,TFTJLI9481.C,TFT_GUI.h,TFT_GUI.c 中,定义的功能函数如下:TFT_lnit():初始化TFT控制器函数;在点亮TFT之前,首先对TFT控制器相关的寄存器进行初始化,从 而使TFT控制器的配置与外接TFT模块特性能够匹配,最后点亮TFToTFT_SetPoint():在TFT屏的制定位置显示一个指定颜色的像点;这是TFT字符显示的最基本函数,所有 的其它显示函数都直接或间接的调用了这个函数。TFT_ClearScreen():让 TFT 显示某种颜色。TFT_Draw_StraightLine():在TFT屏的制定位置画一条指定长度的水平线
40、或垂直线,直线的颜色可以指 定。TFT_ShowAxis():在TFT屏的制定位置画一个坐标轴,坐标轴的颜色可以指定。TFT.ShowChar():根据提供字符的地址在TFT屏的指定位置显示一个指定字符。字符的颜色可以指定。24TFT_ShowHZ():根据提供字符的地址在TFT屏的指定位置显示一个16X16的汉字,汉字的颜色可以指定。TFT_ShowStringr():根据提供字符的地址在TFT屏的指定位置显示一个指定字符串(中文英文均可),字符串的颜色可以指定。TFT_ShowWave():在TFT屏的指定位置根据采集显示血氧饱和度的数据显示其波形。TFT_ShowResut():在TFT
41、屏的血氧饱和度数值显示栏显示计算出来的血氧饱和度数量值与脉搏频率。(7)、程序其它模块:程序中还有大量其它外设代码,包括UART,systick,DMA等,其为整体程序提供了底层操作,由于其 涉及硬件底层,限于篇幅,在此不一一阐述,详细源代码见附件工程。25六、测试报告:本次课设所设计光电脉搏血氧仪在做成实物后进行了一下几个方面的测试:硬件电路测试、软件算法测 试、整体系统测试,下文分别阐述:(1)、硬件电路测试:因为是在网上投板,故只用了 5天的时间就拿到了 PCB,在拿到PCB板之后,首先检查了电路板及铜线的完整性,随后以模块为单位进行了焊接,每焊接好一个模块就进行测试,若无问题就焊接下一
42、模块,若有问题就在此模块内仔细检查,这样可将因焊接问题而导致电路问题的可能性降低到最小,下图是空PCB板和焊接完成的PCB板:OE1107:陈浩INIIIIIIIIIIIenHao?014九七.;OE1107:陈浩-I闻州博照C28LED2RN2 RN1DQc:LED406964AS1RN2 RN1Uersio7)GNO Uer si onil010-0000.I ChenHao0,0,0 0,0 6 Q O 翁0EU072014光电课程设计一血氧仪在完成焊接后,自己就先写了一个简单的程序点亮红光LED和红外LED,在示波器上观察输出信号并调 整交流放大倍数和直流偏置电压,利用示波器测得波形如
43、下(下图依次为红光LED与红外LED照射下的脉 动信号):由波形图可看出,在红光LED与红外LED照射下,电路均能很好的输出脉动信号波形,这也证明了硬26件电路设计、焊接均无问题。27(2)、软件算法测试:软件算法测设分为三个部分,第一部分是测设MCU的AD是否可用,测设方法如下:MCU点亮红外LED 并开启定时器,定时器每5ms进入一次中断,在每次中断中完成一次AD转换并利用UART将AD转换的16 位数据以十进制的形式发送到计算机上,上位机将数据写入Excel表格,并作出下图:IRLED照射下人体脉动信号波形其中横坐标为采样的点数,每两个点之间对应5ms,纵坐标为AD采样值。从AD采样得到
44、的数据来看,数据可较好的反映出脉动波形的变化,这也证实了 AD模块功能正常,但 采集的数据在部分时刻(较粗的线条)出现了高频振荡。软件算法测设的第二部分为测试线性平滑滤波算法的效果,由上图可以看出脉动波形中存在高频振荡,线性平滑滤波后人体脉动信号波形28现对其采用线性平滑滤波算法,将滤波后的数据发送到Excel上,画出的波形如上图所示:从图示来看,波形的“线条”变“细”了,这也说明高频振荡基本消除,从而也证明了线性平滑滤波算 法对高频噪声具有一定的滤除效果。软件算法测设的第三部分为测试微分阈值算法的效果,在实验中,分别提取了三个人的脉动信号,并将 数据发送到上位机上,波形如下图所示:实验一脉动
45、波形实验二脉动波形29实验三脉动波形从上面三组波形可以看出:实验二波形较好,实验一的次之,实验三波形因在测量中手指出现轻微抖动 而出现了比较大的失真,但波形的下降沿仍比较明显。现将数据经过微分阈值计算,然后由MCU经串口发 送给上位机,做出波形如下:实验一微分阈值后曲线图30实验二微分阈值后曲线图微分阈值曲线图中区域周期最高点对应的横坐标就是一个脉动周期波形下降沿斜率最大处,两个峰值 之间的时间差也即是脉搏周期。分析三次实验微分阈值后的数据可以得出:1、虽然三次实验的脉动波形相差较大,但经过微分阈值后峰峰值之间的点数几乎不变,也即是脉搏周 期不变,说明了微分阈值算法的稳定性;2、在一个周期间隔
46、内,峰值与相邻峰值纵坐标差值很大,这样也即说明:只要设定阈值大于相邻峰值 的纵坐标值,就可以保障峰值的正确提取,这也说明微分阈值算法就有较好的抗噪声性能;3、在一定噪声干扰范围之内,人体脉动信号的下降沿基本突出,其不易受到噪声的干扰,有助于脉搏周期的检测;31(3)、整体系统测试:程序框架完成后,选取两名测试者进行实物测试,结果如下图:32d33so an isa zq k0 90 80 i io iosioz iotg aonoNSOM Naasoi红外光脉搏波形,寅巳,无一了字2014光电淳程设了血氧iL-,-一.rx::工,,uthar:究电杀班陈浩采样中,请.一年动手指.采样完成,计算
47、中计算完成,按下K2可以重新测量血氧含量为:9骁红光脉搏波形部:启龙四733除此之外,还利用设计的脉搏血氧仪对另外4名测试者进行血氧检测试验,得到的血氧饱和度和脉率 计算结果如表所示:测试者脉搏频率与血氧饱和度脉搏频率(次/分)血氧饱和度(%)测试者17595测试者27196测试者36897测试者47993检测结果表明脉搏血氧仪测量得到了可用的脉搏波信号,血氧饱和度值和脉率值都在正常范围内。34七、结论:本文使用微控制器和一些外围电路以及数字信号处理算法,设计并制作了一个血氧饱和度与脉搏频率 检测仪,经过测设,血氧饱和度与脉搏频率的检测都在允许误差范围之内,具有一定精确度。由于本设计倾 向于微
48、型化,低功耗化和低成本化,在接下来的工作中,可适当优化PCB面积,降低功耗并着重对脉搏波 信号处理算法加以改进,在不增加硬件成本的基础上提高脉搏血氧仪的性能。血氧饱和度检测器作为一个医学仪器,必须把医学信号采集和医学信号处理结合起来,这样的仪器才有 生命力,本次课设所设计血氧仪还有许多需要改正和提高的地方,在以后的学习中,也希望能不断改进使其 具有一定的商业价值。35八、心得体会:为期18个周的光电课程设计即将落下帷幕,在这18个周的设计过程中,自己学习到了很多,也有一 些感悟和体会想要与大家分享。光电课设是大学以来的第二次课程设计,与第一次光学课程相比,本次课设要复杂很多。光学课程设计 只需
49、在TCOS或ZEMAX软件上设计出一个望远镜或显微镜,而本次课设是一个系统,从硬件到软件需要一 步一步实现,当然在这个过程中也走了很多弯路,下面我就谈谈具体的设计过程。因为自己一直在学校智能车团队做比赛,负责整个团队的硬件设计以及嵌入式系统底层代码的维护工 作,因此自己对本次课设并没有感到很大的难度,但在设计过程中还是多多少少出现了一些错误。首先是方 案的整体设计,在设计之初,自己阅读了大量相关的文献,就探测器电路而言,就是模拟电路和数字电路两 种方案。模拟电路方案是指利用运放将光信号转化为电流信号进而转化为电压信号,然后将电压信号进行 滤波、放大、偏置,最后送入MCU处理;数字电路设计方案是
50、指利用光频率传感器将光信号转化为与光强 成比例的频率信号,再由MCU进行频率捕捉;因为数字电路方案较为简单,最开始自己比较倾向于此方案,也进行了原理图的设计,但在一次上机时,老师并不推荐这种用法,而后自己就买了一个光频率传感器,经 过试验,发现其受环境杂散光的影响很大,故而放弃了数字方案。原理重新设计后,自己重新试验,在试验 中确定了发光管的限流电阻、低通和高同滤波器的截止频率、放大倍数、直流偏置电压,同时也检验了方案 设计的合理性。通过这个过程,自己也明白了前期理论验证工作的重要性,只有原理设计经过了实际验证,才能继续进入下一步的设计。原理图设计完毕后就是PCB的绘制工作,相对于其他同学,自
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100