脉搏血氧饱和度

合集下载

脉搏血氧仪pi正常参数

脉搏血氧仪pi正常参数

脉搏血氧仪pi正常参数
脉搏血氧仪pi正常参数中,脉率应在60至100次/分钟范围内,心率可以调节,但脉率低于60次/分钟,或高于100次/分钟时,应及时进行治疗。

血氧饱和度应在95%以上,如果血氧饱和度低于95%,建议进行氧疗,使血氧饱和度维持在正常范围内。

脉搏血氧仪pi的pi正常参数可以协助监测患者的恢复状况,指导术后的护理。

正常的脉率和血氧饱和度水平说明患者的恢复情况良好,可以提供必要的帮助和护理。

一般来说,脉搏血氧仪pi的正常参数可以提供有关患者恢复情况的信息,从而帮助医生对患者的治疗方案进行准确的评估。

应严格控制脉搏血氧仪pi的正常参数,以确保患者恢复良好,提高患者恢复效果。

脉搏血氧仪pi正常参数是恢复期患者恢复情况的重要指标,具有重要意义。

只有当脉搏血氧仪pi参数在正常范围内时,才能确保患者恢复情况良好,从而提高治疗效果。

因此,建议医护人员应熟练掌握脉搏血氧仪pi正常参数的相关知识,以便及时发现患者的异常情况,及时采取有效的护理措施,有效地帮助患者恢复健康。

- 1 -。

血氧饱和度正常范围表

血氧饱和度正常范围表

血氧饱和度正常范围表引言血氧饱和度是指血液中的氧气与血红蛋白结合的百分比,是评估人体氧合情况的重要指标。

血氧饱和度正常范围表是用来参考和判断人体血氧水平是否正常的依据。

本文将详细介绍血氧饱和度的意义、测量方法以及正常范围的含义。

血氧饱和度的意义血氧饱和度是评估人体组织氧供水平的重要指标,通常以SpO2(脉搏氧饱和度)表示。

正常的SpO2范围表明氧气在人体内的输送和利用正常,对身体健康至关重要。

血氧饱和度的变化可以反映出呼吸系统疾病、循环系统疾病和其他疾病的状况。

血氧饱和度的测量方法血氧饱和度可以通过使用脉搏血氧仪或医疗设备进行测量。

这些设备通过红外线、光电检测等技术,检测人体组织中的氧气含量,并通过显示屏显示出具体数值。

使用脉搏血氧仪测量血氧饱和度是一种快速、非侵入式的方法,通常在医院、急救和家庭护理中广泛应用。

血氧饱和度正常范围的含义血氧饱和度正常范围是根据大量人体实验数据得出的统计结果,代表了大多数人群的血氧水平。

正常范围的定义是指在此范围内的血氧饱和度被认为是健康和正常的。

下表是常用的血氧饱和度正常范围表:年龄段血氧饱和度正常范围新生儿90% - 99%婴儿92% - 99%幼儿94% - 99%儿童95% - 99%成人95% - 99%孕妇95% - 99%老年人94% - 99%从上表可以看出,不同年龄段的血氧饱和度正常范围有所差异。

这是因为不同阶段的人体对氧气的需求和氧气输送能力有所不同。

在新生儿和婴儿阶段,由于呼吸和循环系统的不完善,血氧饱和度的正常范围较低;而在成人和老年人中,血氧饱和度较高,这是因为成人和老年人的呼吸和循环系统相对稳定。

孕妇的血氧饱和度正常范围与成人相同。

需要注意的是,个别人群由于特殊状况(如肺部疾病、心脏病等),其血氧饱和度可能在正常范围之外。

影响血氧饱和度的因素血氧饱和度受多种因素的影响,包括但不限于以下几点:1.呼吸功能:呼吸系统疾病、肺部感染和慢性阻塞性肺疾病等会影响氧气进入肺泡和血液循环,从而影响血氧饱和度。

家用血氧仪使用及测血氧饱和度正确操作

家用血氧仪使用及测血氧饱和度正确操作

家用血氧仪使用及测血氧饱和度正确操作
1. 按照说明书,安装好电池,确认正常开机。

2. 确认被测手指情况,选取无破损或出血、无大面积瘀斑的手指。

3. 在被测者平静状态下,夹住手指一段时间,即可测得数值。

测量过程中,注意保持平稳,测量手指不要抖动,身体也不要晃动。

通常血氧仪会提示血氧饱和度、心率等数值,一般按如下标准监测:
1. 一般成人脉搏血氧饱和度正常范围 96%~98%,如果发现低于93% 需要警惕。

2. 一般成人心率范围在 60~100 次/分,平静时仍高于 100 次/分需要警惕。

血氧饱和度家庭监测主要是测指尖,像末梢循环差、产品误差、测量方法不当等情况会影响测得数值,不能完全代表实际动脉血氧饱和度。

正确操作、多次测量发现血氧低于93%,建议医院采用专业设备复核。

老人血氧相比日常数值下降幅度超过 5%,或者有憋气、胸闷的情况,一定要警惕,及时就诊。

脉搏血氧饱和度监测在胸外科的应用

脉搏血氧饱和度监测在胸外科的应用

脉搏血氧饱和度监测在胸外科的应用以往的临床观察方法不易识别早期缺氧,而应用脉搏血氧饱和度(SpO2)监护仪持续无创监测,能连续动态地观察机体氧合情况,及时发现早期低氧血症,为临床抢救及护理提供依据,同时可避免因多次采动脉血对病人造成的痛苦,减轻护士的工作量。

脉搏血氧饱和度监测的原理及意义SpO2测定是将探头指套固定在病人指端甲床,利用手指作为盛装血红蛋白的透明容器,使用波长660 nm的红光和940 nm的近红外光作为射入光源,测定通过组织床的光传导强度,来计算血红蛋白浓度及血氧饱和度。

可用于各种病人的血氧监护。

一般认为SpO2正常应不低于94%,在94%以下为供氧不足。

有学者将SpO2<90%定为低氧血症的标准,并认为当SpO2高于70%时准确性可达±2%,SpO2低于70%时则可有误差。

临床上我们曾对数例病人的SpO2数值,与动脉血氧饱和度数值进行对照,认为SpO2读数可反映病人的呼吸功能,并在一定程度上反映动脉血氧的变化。

胸外科术后病人除个别病例临床症状与数值不符需作血气分析外,常规应用脉搏血氧饱和度监测,可为临床观察病情变化提供有意义的指标,避免了病人反复采血,也减少护士的工作量,值得推广。

脉搏血氧饱和度的监测方法MEC-509A除了可监测SpO2外,还可以同时监测体温、呼吸、无创血压、心电/心率。

本组病人术后均同时监测血压及心电波,监测时间48~72 h。

我们常规采用监护的平均时间12 s ,报警设定:高限为99%或oFF,低限为开机自动设置90%。

监测期间如发现读数突然下降,及时检查探头是否松脱,每隔4 h检查探头处手指皮肤情况,注意观察是否有红、肿、皮肤受损,并更换另一手指检测。

脉搏血氧饱和度监测的临床应用1、根据SpO2的变化调整氧浓度氧气浓度的高低、流量的大小能间接或直接影响SpO2的读数。

本组病人为维持足够的Sp O2,术后常规吸氧36~72 h,病人术毕回室时,我们将氧流量调至4~5 L/min,吸入氧浓度为37%~41%,使SpO2尽快达到96%~99%,数小时后根据SpO2读数,及时调整氧浓度,避免因氧浓度过高引起氧中毒,或氧浓度过低引起低氧血症。

血氧饱和度(SpO2)

血氧饱和度(SpO2)

⾎氧饱和度(SpO2)⾎氧饱和度 (SpO2)⾎氧饱和度SPO2可分解为下列组成部分:S 指饱和度、P指脉搏、O2指氧⽓。

这⼀缩写是测量⾎液循环系统中附着在⾎红蛋⽩细胞上的氧⽓量。

简⽽⾔之,这⼀数值指红细胞携带的氧⽓量。

这个测量说明病⼈呼吸的效率和⾎液在整个⾝体中流动的效率。

⾎氧饱和度使⽤百分⽐说明这⼀测量的结果。

正常健康的成⼈的平均读数是96%。

这是什么?⾎氧饱和度的测量利⽤脉动⾎氧计,这包括⼀个计算机化的监控器和指套。

指套可夹在病⼈的⼿指、脚趾、⿐孔或⽿垂上。

然后监控器显⽰读数,说明病⼈的⾎液中氧⽓的含量。

这是利⽤可视觉解读的波和能听得到的信号来做到的,波和信号与病⼈的脉搏相应。

⾎液中的氧⽓浓度下降,信号强度就减弱。

监控器也显⽰⼼率并有⼀个报警器,当脉搏太快/慢和饱和度太⾼/低时,发出报警信号。

它做什么?⾎氧饱和度装置测量含氧⾎和缺氧⾎。

⽤两种不同的频率来测量这两种不同的⾎:红⾊和红外频率。

这种⽅法叫分光光度测定法。

红频率⽤来测量去饱和⾎红蛋⽩,红外频率⽤来测量含氧⾎。

如果在红外波段中显⽰最⼤的吸收,这说明⾼饱和度。

相反,如果最⼤吸收在红⾊波段中显⽰,这说明低饱和度。

它是如何⼯作的?光传射过⼿指,传射过的射线由接收器来监控。

其中有些光被组织和⾎液吸收⽽当动脉充满⾎液时,吸收增加。

同理,当动脉空时,吸收的⽔平下降。

因为在这⼀运⽤中,唯⼀的变量是脉动流,所以静态部分(即⽪肤和组织)可以从计算中减掉。

因此,利⽤在测量中收集到的两个光波长,脉动⾎氧计计算氧合⾎红蛋⽩的饱和度。

这⼀图表描述⾎红蛋⽩中的92%⾎氧饱和度的⾎氧分压是80。

当氧⽓压⼒增⼤时,⾎红蛋⽩饱和度⽔平也上升。

⾎红蛋⽩达到最⾼容量105或以上。

⾎氧分压有利于通过测量⾎氧饱和度来简介评估⾎氧分压。

97% 饱和度 = 97% ⾎氧分压 (正常)90% 饱和度 = 60% ⾎氧分压 (危险)80% 饱和度 = 45% ⾎氧分压 (严重缺氧)。

指脉血氧饱和度和动脉血氧分压的关系

指脉血氧饱和度和动脉血氧分压的关系

指脉血氧饱和度和动脉血氧分压的关系动脉血氧分压(PaO2)是指血液中溶解的氧气分子的压力,是衡量人体氧合状态的指标之一。

而指脉血氧饱和度(SpO2)则是通过脉搏波的幅度与波峰之间的比值来反映血液中氧气含量的一个间接参数。

两者之间存在一定的关系,下面我将为大家详细介绍。

1. 指脉血氧饱和度(SpO2)是通过脉搏波的幅度与波峰之间的比值来计算得到的。

脉搏波是由心脏收缩时血液冲击血管壁所产生的一种波动信号,其中的幅度与波峰之间的比值与血液中氧气含量有一定的关系。

当血液中的氧气含量增加时,脉搏波的幅度也会增加,反之亦然。

因此,通过测量脉搏波的幅度与波峰之间的比值,我们可以间接地了解血液中的氧气含量。

2. 动脉血氧分压(PaO2)是指血液中溶解的氧气分子的压力。

当我们呼吸时,氧气会通过肺泡进入到血液中,然后与红细胞中的血红蛋白结合,形成氧合血红蛋白。

氧合血红蛋白会通过动脉输送到全身各个组织和器官,释放氧气供组织细胞使用。

动脉血氧分压的大小取决于肺泡中氧气的分压和氧气与血红蛋白结合的能力。

当肺泡中氧气分压较高时,血液中的氧气分压也会相应增加,从而保证组织细胞的氧供需平衡。

3. 指脉血氧饱和度(SpO2)与动脉血氧分压(PaO2)之间存在一定的关系。

一般情况下,当动脉血氧分压较高时,指脉血氧饱和度也会相应较高;当动脉血氧分压较低时,指脉血氧饱和度也会相应较低。

但需要注意的是,由于指脉血氧饱和度是通过脉搏波的幅度与波峰之间的比值来计算得到的,因此受到脉搏波的幅度变化及其他因素的影响,可能存在一定的误差。

指脉血氧饱和度和动脉血氧分压之间存在一定的关系,通过测量指脉血氧饱和度我们可以间接了解血液中的氧气含量。

然而,需要注意的是,指脉血氧饱和度是一种间接指标,其结果可能受到多种因素的影响。

因此,在临床应用中,我们还是需要结合动脉血氧分压等指标综合评估患者的氧合状态。

脉搏血氧饱和度

脉搏血氧饱和度

什么是血氧饱和度?血氧饱和度是指红细胞与氧结合到达饱和程度的百分数,即血液中血氧的浓度。

人体血液是通过红细胞与氧结合来携带氧气的。

人体的新陈代谢过程是生物氧化过程,而新陈代谢过程中所需要的氧,是通过呼吸系统进人人体血液,与血液红细胞中的血红蛋白,结合成氧合血红蛋白,再输送到人体各局部组织细胞中去,即血液中血氧的浓度。

血氧饱和度是反映呼吸、循环功能的一个重要生理参数,是衡量人体血液携带氧的能力指标。

什么是脉搏?脉搏正常范围?脉搏即动脉搏动。

正常人的脉搏和心跳是一致的,60-100次/分钟。

老年人较慢,为55到60次/分。

正常人脉率规那么,不会出现脉搏间隔时间长短不一的现象。

正常人脉搏强弱均等,不会出现强弱交替的现象。

探头型血氧饱和度的正常范围是多少:〔插图〕正常人的血液含氧量〔血氧饱和度值〕为94%-100%,在94%以下为供氧缺乏。

有学者将SpO2<90%定为低氧血症的标准.监测血氧饱和度有什么作用?氧是生命活动的根底,人体代谢过程的每一步都需要氧来配合完成。

缺氧是导致许多疾病的根源,严重时直接威胁到人的生命。

许多疾病都会造成氧供应的缺乏,因此,对动脉血氧饱和度的实时监测在临床和个人安康管理上十分必要,以便及时评价血氧饱和度的状态,极早地发现低氧血症及疾病转归状况,从而更有效地预防或减少缺氧所致的意外死亡。

爱易通脉搏血氧仪介绍爱易通脉搏血氧饱和度监测仪原理〔插图〕脉搏血氧饱和度仪是通过手指检测到人体的脉搏氧饱和度和脉率。

用两种波长的发光二极管发出的红色与红外光透过身体的外周部位,由对侧的光敏传感器检测到透射的光信号,再跟据红光和红外光对氧合血红蛋白与复原血红蛋白的吸收率不同的特性,检测电路先得到脉动动脉血流所导致的光线吸收的变化波形,然后据此计算出脉搏血氧饱和度以及脉率值。

爱易通脉搏血氧仪特点〔插图〕体积小、功耗低、操作简便、携带方便较高的准确性、快速显示监测血氧饱和度和脉搏值抗环境光和弱灌注能力强具有设置备忘提醒监测、超大的显示屏显示及语音播报功能测量完毕后所测得的脉搏和血氧饱和度数据可保存至手机、即时传送给亲人或医生,还可传送至网络平台,网络平台自动生成并分辨出各种情况下测得血氧饱和度曲线图。

脉搏血氧饱和度(SpO2)监测

脉搏血氧饱和度(SpO2)监测
• 由于受各种干扰和精确度的影响,指脉波形对上述各 种指标的判断还有一定的局限性,需要结合其他方法如 ECG,ABP波形等综合判断.
SpO2监测的原理
• 脉搏血氧仪(POM )是以分光光度测定法 对每次随心搏进入手指及其它血管丰富组织内 的搏动性血液里的血红蛋白进行光学和容积测 定
SpO2监测原理--吸收光谱
• 脉搏血氧仪实质——分光计
• Hb和HbO2的吸收光谱不一样 • 吸收的量与其浓度成正比
• 氧合血红蛋白(HbO2)
SpO2波形的解读
• 1、判断周围血管突然收缩 • 2、判断灌注如何 • 3、有无心律失常 • 4、心肌收缩力、血容量如何
脉氧仪监测的精确性
• SaO2≥90%,脉氧仪的精确性较好
• 偏差<2%
• SaO2<80%,其准确性较差
• 偏差>5%
• 不能监测高氧状态
• 当SpO2 =100%时,PaO2波动于100~600 mmHg
• 不能完全替代动脉血气分析
SpO2结果的解读
• 考虑是否存在影响因素 • 对比血气分析结果 • 观察患者的临床症状 • 对比脉搏与心率是否一致,否则可能存在心律失常。 • 读取时,注意SpO2波形的形态和稳定性
SpO2结果的解读
• SpO2 开启声音后至少可以告诉我们四项信息: ①心 率②饱和度可以听出来(音调越低,氧合越差) ③ 节 律是否整齐④是否低于报警线 ⑤ 从波形可以了解循环 和灌注、甚至心输出量、每搏量等………..
病情稳定者
病情不稳定者
Jubran A. Crit Care, 1999, 3:R11–R17
低氧事件对病死率的影响
Bowton DL, et al. Am J Med 1994, 97:38–46.
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

脉搏血氧饱和度的测量一、测量值:脉搏血氧饱和度、脉率二、测量原理:以两路光线(红光vs,红外光ir)高频交替照射被测部位,两路透射光经光电转换得到两路变化的光电流信号,两路光电流信号经过放大、去直流、去工频干扰得到两路信号的交流部分,交流部分的平均功率之比即为动脉血的含氧量,通过线性拟合得到脉搏血氧饱和度;其中任何一路信号交流部分即为脉搏波,测得其周期可计算出脉率。

三、测量电路及其参数。

电路包括三部分:探头驱动电路、光电流放大和去直流电路、计算电路。

探头驱动电路实现两路光线由对称的两组三极管构成,与计算电路的两个IO端口和两个DA端口相连,分别控制两路光线的交替开关和幅值。

光电流放大和去直流电路由两级运放构成,一级运放将光电流信号放大为电压信号,这个电压信号包含交流分量和较大的直流分量(分别对应着测量部位的动脉血和其他成分),因此需要二级运放去直流处理。

计算电路接受两个运放的输出,作为反馈为探头驱动电路和去直流电路提供参考电压幅值。

探头接口说明:1为地线,6、7分别为外屏蔽和内屏蔽线,2为红外光输入正极,红光输入负极,3为红光输入正极,红外光输入负极,9为光电管输出正极,5为光电管输出负极。

四、测量流程基本测量流程如下图。

200Hz定时器中断,两路LED交替通断,即1秒内两路光各有100次采样。

以红外光这一路为例:每次开启红外光LED,根据OA0输出改变LED的幅度ir_LED_level(Q3 的基极),根据OA1输出改变去直流电路的直流参考电压ir_dc_offset (OA1的正向输入端),得到的OA1的输出作为计算电路的输入,关灯,原始信号去工频处理后得到ir_heart_signal,数字去直流后得到ir_heart_signal_ac,该信号进入脉搏波周期判断的队列group_caculate[64],同时计算ir_heart_signal_ac信号的平方和,并且采样计数,同时进行脉搏周期的判断。

数字信号直流跟随可表达为:跟随系数×(输入信号-直流分量)+直流分量=更新的直流分量。

脉搏周期的判断过程:队列相当于在脉搏波信号上一个滑动的窗口,窗口应有一定宽度,大于噪声时间,但需小于脉搏周期。

判断过程如下:当最小值位置处于窗口中部位置时则判定为一个波谷,检测到波谷以后窗口继续滑过10个采样点,但不再检查最小值,确保上一个波谷已经离开窗口中心,然后继续检查最小值位置确定下一个波谷。

可以分为三种状态分别称之为确定波谷、离开波谷、寻找波谷。

如下图。

利用局部特征实时判断脉搏周期的三个阶段:1)确定波谷,确定周期,计算血氧饱和度和脉率,清空计数;2)离开波谷,开始计数,计算信号平方和;3)寻找波谷,保持计数,计算平方和,确定窗口中最小值位置五、测量程序实现(可参考pulsoximeter.c文件)1、变量设置1)全局参量根据运放一的输出经AD转化后判断LED是否过亮过暗,2500到3000之间为合适亮度,否则进行调节,快速调节步长为2,细调步长为1,可根据实际电路修改。

//反馈控制LED驱动幅度时的上下界和调节步长#define FIRST_STAGE_TARGET_HIGH 3000#define FIRST_STAGE_TARGET_LOW 2500#define FIRST_STAGE_TARGET_HIGH_FINE 3500#define FIRST_STAGE_TARGET_LOW_FINE 2000#define FIRST_STAGE_STEP 2#define FIRST_STAGE_FINE_STEP 12)全局变量//脉搏血氧信号,存储脉搏血氧几个处理方法后的值int32_t ir_heart_signal;//红外光,OA1输出经过平均滤波后,等待数字去直流int32_t vs_heart_signal;// 红光,OA1输出经过平均滤波后,等待数字去直流int32_t ir_heart_signal_ac;//红外光,经过数字去直流,进入计算窗口,参加平方和的累加int32_t vs_heart_signal_ac;// 红光,经过数字去直流,进入计算窗口,参加平方和的累加int32_t sum_ir_heart_signal_ac = 0;//红外光,信号平方和累加值,一个周期计算平均功率int32_t sum_vs_heart_signal_ac = 0; //红光,信号平方和累加值,一个周期计算平均功率//计算过程信号int group_wave[512];//用于显示,循环队列,存储几个周期内的ir_heart_signal_ac信号int offset_wave = 0;//循环队列队列头int flag_initial = 1;//初始化标志位int sample_count = 0;//采样计数,每个周期清空,重新计数int num_beat = 0;//初始值为1,下一个脉搏后为2,计算平均功率和血氧饱和度,重新置1 int flag_jump = 0;//脉搏波周期判断,是否处于离开波谷的状态int sample_jump = 0;//离开波谷时的采样计数,到20则已离开波谷,置0 ,flag_jump 置1//循环队列,以滑动窗口的形式判断当前是否为脉搏波波谷int group_caculate[64];//用于脉搏周期判断的循环队列,存储64 个ir_heart_signal_ac信号int offset_caculate = 0;//队列头位置int min;//队列中最小值int location_min;//最小值位置int location_min_adjust;//最小值相对与队列头的位置,如果是32则确认一个波谷//最终结果//脉率unsigned int heart_rate = 6000;//脉率最终测量结果,初始值为60.00unsigned int group_heart_rate[8];//最近8秒内的脉率,循环队列,初始化为6000int offset_heart_rate=0;//队列头unsigned int sample_heart_rate;//脉率当前原始结果,经过一定调整后进入group_heart_rate[8] int32_t sum_heart_rate;//最近8秒的脉率累加值,除以8得到新的heart_rate//脉搏血氧饱和度unsigned int SpO2 = 9500;//血氧饱和度最终测量结果,初始值为95.00unsigned int group_SpO2[8]; //最近8秒内的血氧饱和度,循环队列,初始化为9500int offset_SpO2=0;//队列头int32_t sum_SpO2; //最近8秒的血氧饱和度累加值,除以8得到新的heart_rate//控制参数int fresh=0; //调试使用,无意义//反馈控幅和OA1参考电压的参数int led_tab=0; //控制开启红光还是红外光,每次中断切换状态int ir_LED_level;//ir驱动幅度,控制Q3基极,范围1到2500,数字越大,亮度越弱int vs_LED_level;//vs驱动幅度,控制Q4基极,范围1到4095,数字越大,亮度越弱int ir_dc_offset = 4095;//ir灯直流参考电压,开启红外LED时,控制OA1正向输入端int vs_dc_offset = 4095;// /vs灯直流参考电压,开启红光LED时,控制OA1正向输入端int ir_dc_offset_second = 0;//数字去直流时的直流跟随量int vs_dc_offset_second = 0; //数字去直流时的直流跟随量//运放输出的输出int ir_sample;//ir灯,OA0的输出,根据该输出改变ir_LED_levelint vs_sample;//vs灯,OA0的输出,根据该输出改变vs_LED_level3)子函数unsigned long isqrt32(register unsigned long h);//开方运算int16_t ir_filter_test(int16_t sample);//平均滤波器_红外int16_t vs_filter_test(int16_t sample);//平均滤波器_红光2、程序主体(请参照pulsoximeter.c文件)1)晶振、电源设置2)初始化操作:group_heart_rate[8]初始化为6000,sum_heart_rate 初始化为48000,group_SpO2[8]初始化为9500,sum_SpO2初始化为76000。

3)DAC设置,ir_LED_level初始化为2500,vs_LED_level初始化为900。

ADC设置。

定时器设置,200Hz采样中断,1600Hz用于PWM输出。

4)设置完,进入低功耗模式5)中断处理程序,200Hz中断,中断进入后或者进入红光LED流程,或者进入红外LED 流程,都要根据输入调整相应参数,进行平均滤波,去直流处理。

两种流程其他计算上有所不同:在红光流程中主要进行两路信号平方和累加、采样计数、脉搏血氧饱和度和脉率的计算;红外流程里主要进行的是脉搏周期的判断。

两个流程的具体操作如下。

红光流程:关闭两路灯,设置参数,开启红光LED,读取输入,关闭红光LED,根据输入调整参数,平均滤波,去直流,循环队列更新,是否处于找到波谷的状态(num_beat由1变为2,找到,否则未找到),未找到则计算两路平方和,采样计数累加,找到则计算脉搏血氧饱和度和脉率,平方和、采样计数置0。

红外流程:关闭两路灯,设置参数,开启红光LED,读取输入,关闭红光LED,根据输入调整参数,平均滤波,去直流,循环队列更新,是否处于离开波谷的状态(flag_jump==0时为寻找状态,flag_jump==0时为离开状态),寻找状态找到循环队列中最小值及位置,判断是否波谷,不是波谷继续寻找,是波谷则进入离开状态,离开状态仅计数,计数满20次进入寻找状态。

中断程序代码如下所示://红光流程if(led_tab==0)// led_tab==0,打开红光LED{led_tab=1;//切换led_tab,下一次进入红外流程P2OUT |= BIT2;//关灯P2OUT |= BIT3;//关灯DAC12_0CTL &= ~DAC12ENC;//开启DAC,根据vs_LED_level给出幅度DAC12_0CTL &= ~DAC12OPS;DAC12_0CTL |= DAC12ENC;DAC12_0DAT = vs_LED_level;//红光LED驱动幅度DAC12_1DAT = vs_dc_offset;//红光去直流电路的参考电压,OA1正向输入P2OUT &= ~BIT3;//开灯,红光LEDADC12CTL0 &= ~ENC;//开启DAC,读取OA0、OA1输出ADC12CTL0 |= ENC;for(m=1;m<=1500;m++)//伪循环提供DAC转换时间,红光LED保持开{}vs_sample = ADC12MEM0;//OA0输出结果i = ADC12MEM1;//OA1输出结果//OA0输出,根据全局参量控制LED的驱动幅度if (vs_sample>=FIRST_STAGE_TARGET_HIGH||vs_sample<= FIRST_STAGE_TARGET_LOW){if (vs_sample >= FIRST_STAGE_TARGET_HIGH){if (vs_sample >= FIRST_STAGE_TARGET_HIGH_FINE)vs_LED_level += FIRST_STAGE_STEP;elsevs_LED_level += FIRST_STAGE_FINE_STEP;if (vs_LED_level >= 4095)vs_LED_level = 4095;}else{if (vs_sample <= FIRST_STAGE_TARGET_LOW_FINE)vs_LED_level -= FIRST_STAGE_STEP;elsevs_LED_level -= FIRST_STAGE_FINE_STEP;if (vs_LED_level <= 1)vs_LED_level = 1;}}//OA1输出,控制OA1输入的参考电压if (i >= 4095){if (vs_dc_offset > 0)vs_dc_offset--;}else if (i <100){if (vs_dc_offset < 4095)vs_dc_offset++;}DAC12_0CTL &= ~DAC12ENC;//关闭DAC_NOP();_NOP();P2OUT |= BIT2;//关灯P2OUT |= BIT3;//关灯//实时处理vs_heart_signal = vs_filter_test(i);//OA1输出,平均滤波处理vs_dc_offset_second += ((vs_heart_signal - vs_dc_offset_second)>>7);//数字直流跟随vs_heart_signal_ac = vs_heart_signal - vs_dc_offset_second;//去直流group_wave[offset_wave] = ir_heart_signal_ac+4000; //加4000保证脉搏波信号为正offset_wave = (offset_wave + 1) & 0x1ff; //循环队列更新,用于显示group_caculate[offset_caculate] = ir_heart_signal_ac;//循环队列更新,用于脉搏判断offset_caculate = (offset_caculate + 1) & 0x3f;if(num_beat>=1)// num_beat是否为1{sample_count++;//采样计数//两路信号平方和累加sum_vs_heart_signal_ac += ((vs_heart_signal_ac * vs_heart_signal_ac)>>10);sum_ir_heart_signal_ac += ((ir_heart_signal_ac * ir_heart_signal_ac)>>10);}if(num_beat>=2) // num_beat是否为2,为2表示找到一个新的波谷{int32_t x = isqrt32(sum_vs_heart_signal_ac);//平方和开方int32_t y = isqrt32(sum_ir_heart_signal_ac);//平方和开方int32_t w = 100 * x / y;//平均功率之比R×100sum_SpO2 -= group_SpO2[offset_SpO2];//8秒内血氧饱和度之和减去8秒前的值//计算当先新的脉搏血氧饱和度,拟合公式110-25×R,R为平均功率之比group_SpO2[offset_SpO2] = 11000 - 25 * w;//调整新的脉搏血氧饱和度,变化不能超过3个百分点,范围在85到100之间if(group_SpO2[offset_SpO2]>(group_SpO2[(offset_SpO2-1)&0x07]+300)){group_SpO2[offset_SpO2] = group_SpO2[(offset_SpO2-1)&0x07]+300;}else if(group_SpO2[offset_SpO2]<(group_SpO2[(offset_SpO2-1)&0x07]-300)){group_SpO2[offset_SpO2] = group_SpO2[(offset_SpO2-1)&0x07]-300;}else{}if(group_SpO2[offset_SpO2]>10000){group_SpO2[offset_SpO2] = 10000;}else if(group_SpO2[offset_SpO2]<8500){group_SpO2[offset_SpO2] = 8500;}else{}sum_SpO2 += group_SpO2[offset_SpO2]; //8秒内血氧饱和度之和加上当前的值offset_SpO2 = (offset_SpO2+1) & 0x07;SpO2=sum_SpO2/8;//计算平均值,得到最终结果//清空计数和变量重置sum_vs_heart_signal_ac = 0;//平方和累加值置零sum_ir_heart_signal_ac = 0; //平方和累加值置零//脉率的计算sample_heart_rate = 600000 / sample_count;//由脉搏周期换算成脉率num_beat = 1;//脉搏计数重置成1sample_count = 0;//采样计数置0if(sample_heart_rate<1000||sample_heart_rate>18000)//明显错误的结果{}else{//8秒内脉率之和减去8秒前的值sum_heart_rate -= group_heart_rate[offset_heart_rate];//循环队列更新,得到当前脉率group_heart_rate[offset_heart_rate] = sample_heart_rate;//8秒内脉率之和加上当前值sum_heart_rate += group_heart_rate[offset_heart_rate];offset_heart_rate = (offset_heart_rate+1) & 0x07;//求平均值,为脉率最终结果heart_rate=sum_heart_rate/8;}fresh=1;}}//红外流程else{//前面部分与红光部分一致,关灯,设置参数,开灯,读取运放输出,关灯,平均滤波,去//直流,不再做注释,注释的主要是脉搏周期的判断部分led_tab=0;P2OUT |= BIT2;//关灯P2OUT |= BIT3;//关灯DAC12_0CTL &= ~DAC12ENC;DAC12_0CTL |= DAC12OPS;DAC12_0CTL |= DAC12ENC;DAC12_0DAT = ir_LED_level;//红外LED驱动幅度DAC12_1DAT = ir_dc_offset;//OA1输入参考电压P2OUT &= ~BIT2;//开灯ADC12CTL0 &= ~ENC;ADC12CTL0 |= ENC;for(m=1;m<=1500;m++){}ir_sample = ADC12MEM0;//OA0输出,用以控制LED驱动幅度i = ADC12MEM1;//OA1输出,初始未处理的信号j = ADC12MEM2;k = ADC12MEM3;//OA0输出,控制LED驱动幅度if (ir_sample >= FIRST_STAGE_TARGET_HIGH || ir_sample <= FIRST_STAGE_TARGET_LOW){if (ir_sample >= FIRST_STAGE_TARGET_HIGH){if (ir_sample >= FIRST_STAGE_TARGET_HIGH_FINE)ir_LED_level += FIRST_STAGE_STEP;elseir_LED_level += FIRST_STAGE_FINE_STEP;if (ir_LED_level >= 2500)ir_LED_level = 2500;}else{if (ir_sample <= FIRST_STAGE_TARGET_LOW_FINE)ir_LED_level -= FIRST_STAGE_STEP;elseir_LED_level -= FIRST_STAGE_FINE_STEP;if (ir_LED_level <= 1)ir_LED_level = 1;}}//OA1输出,控制OA1输入的参考电压if (i >= 4095){if (ir_dc_offset > 0)ir_dc_offset--;}else if (i < 100){if (ir_dc_offset < 4095)ir_dc_offset++;}DAC12_0CTL &= ~DAC12ENC;_NOP();_NOP();P2OUT |= BIT2;//关灯P2OUT |= BIT3;//关灯T_body_signal =j;T_enviroment_signal = k;ir_heart_signal = ir_filter_test(i);//初始信号滤波处理ir_dc_offset_second += ((ir_heart_signal - ir_dc_offset_second)>>7); ir_heart_signal_ac = ir_heart_signal - ir_dc_offset_second;//是否为程序启动状态,此时flag_initial == 1if(flag_initial == 1){if(offset_wave>=500){flag_initial=0;}}else{//脉搏周期的判断if(flag_jump==0)// flag_jump==0,表示处在寻找波谷状态{sample_jump = 0;// 离开波谷时的采样计数置0//寻找group_caculate [64]循环队列中的最小值及其位置min = group_caculate[0];location_min = 0;for(int i=1;i<64;i++){if(min<group_caculate[i]){min = group_caculate[i];location_min = i;}}//计算最小值位置距离队列头距离if(location_min<=offset_caculate){location_min_adjust = offset_caculate - location_min;}else{location_min_adjust = offset_caculate + 64 - location_min;}//最小值是否在队列正中if(location_min_adjust==31||location_min_adjust==32){flag_jump=1;//如果是,找到波谷,进入离开波谷状态//脉搏计数增加,如果是程序第一次找到,则由0到1,以后则总是由1到2 num_beat++;P1OUT ^= BIT0;}}else// flag_jump==1,表示处在离开波谷状态{sample_jump ++;// 离开波谷时的采样计数if(sample_jump>=20) // 离开波谷时的采样计数到达20{flag_jump = 0;//认为已离开波谷,则重新寻找下一个波谷}}}6)子程序子程序主要有两个,一是平均滤波,二是开方运算。

相关文档
最新文档